[玩转Atlas 200 DK之案例开发系列]外设GPIO使用
一、开发板对外输出脚说明
l 开发板输出管脚
Atlas 200 DK开发板共有40个管脚输出,其中有7个GPIO脚供用户控制使用。
GPIO0 GPIO1 GPIO3 GPIO4 GPIO5 GPIO6 GPIO7
开发板管脚数字对应可以看开发板40PIN 的两边板子标记,有标记哪个是1脚,哪个是40脚,然后和下图对应接IO口使用。
l GPIO管脚说明
直接从昇腾AI处理器引出的GPIO有:GPIO0、GPIO1。
由PCA6416引出的GPIO有:GPIO3、GPIO4、GPIO5、GPIO6、GPIO7。
由于GPIO3,4,5,6,7是通过IO口扩展芯片扩展的IO口,控制是使用I2C方式控制PCA6416.读取控制速度不如GPIO0,GPIO1,如果程序中有使用输入口作为检测使用(while(1)中一直监控IO口输入状态,例如按键检测)请优先使用GPIO0,GPIO1.
二、GPIO软件代码控制使用
1. 获取GPIO操作权限。
首先让开发板默认用户 HwHiAiUser 获得开发板硬件软件控制权限,这个可以登录开发板在开发板/etc/rc.local 中修改,增加如下语句
echo 504 >/sys/class/gpio/export
echo 444 >/sys/class/gpio/export
chown -R HwHiAiUser /sys/class/gpio/gpio444
chown -R HwHiAiUser /sys/class/gpio/gpio504
chown -R HwHiAiUser /sys/class/gpio/gpio444/direction
chown -R HwHiAiUser /sys/class/gpio/gpio504/direction
chown -R HwHiAiUser /sys/class/gpio/gpio444/value
chown -R HwHiAiUser /sys/class/gpio/gpio504/value
chown -R HwHiAiUser /dev/i2c-1
chown -R HwHiAiUser /dev/i2c-2
chown -R HwHiAiUser /dev/ttyAMA0
chown -R HwHiAiUser /dev/ttyAMA1
usermod -aG HwHiAiUser HwHiAiUser
以上指令总体上目的就是引出GPIO0,GPIO1,并且让HwHiAiUser获取GPIO0 ,GPIO1,I2C等硬件的软件控制权限,如果rc.local已经加上了这些指令,就不需要重新添加了。
2. 开发板GPIO样例代码下载。
到码云上下载GPIO demo源码,https://gitee.com/Atlas200DK 用MindStudio打开使用。
代码中包含2个模块,其中
GPIO文件夹封装了一个GPIO类,封装了3个接口函数。
3. GPIO模块接口函数说明。
GPIO 3个接口函数如下。
int gpio_set_direction(int pin,int direction);
int gpio_set_value(int pin,int val);
int gpio_get_value(int pin,int *val);
int gpio_set_direction(int pin,int direction);
这个函数是设置IO口的状态,输入还是输出。
参数 pin 只能设置为(0,1,3,4,5,6,7),控制对应的IO口。
参数 direction 设置输入还是输出 0代表输入,1代表输出。
int gpio_set_value(int pin,int val);
这个函数是设置IO口的输出高电平还是低电平,前提是已经用gpio_set_direction设置这个口为输出口,否则无效。
参数 pin 只能设置为(0,1,3,4,5,6,7),控制对应的IO口。
参数 val设置输出高电平还是低电平 0代表低电平,1代表高电平。
int gpio_get_value(int pin,int *val);
这个函数是获取IO口的输入高电平还是低电平,前提是已经用gpio_set_direction设置这个口为输入口,否则读取数值不对。
参数 pin 只能设置为(0,1,3,4,5,6,7),控制对应的IO口。
参数 val , int value ,将&value放入到函数中,获取value值。Value 0代表低电平,1代表高电平。
4.Custom文件夹里面包含了如何调用这3个接口函数的样例代码。
在Custom.cpp中。
以上就可以对Atlas 200 DK 的7个gpio口进行软件控制了。有其他疑问可以到论坛咨询。
- 点赞
- 收藏
- 关注作者
评论(0)