[玩转Atlas 200 DK之案例开发系列]外设GPIO使用

举报
atlas_lxj 发表于 2020/03/31 11:10:37 2020/03/31
【摘要】 一、开发板对外输出脚说明l 开发板输出管脚Atlas 200 DK开发板共有40个管脚输出,其中有7个GPIO脚供用户控制使用。GPIO0 GPIO1 GPIO3 GPIO4 GPIO5 GPIO6 GPIO7开发板管脚数字对应可以看开发板40PIN 的两边板子标记,有标记哪个是1脚,哪个是40脚,然后和下图对应接IO口使用。 l GPIO管脚说明 直接从昇腾AI处理器引出的G...

一、开发板对外输出脚说明

开发板输出管脚

Atlas 200 DK开发板共有40个管脚输出,其中有7个GPIO脚供用户控制使用。

GPIO0 GPIO1 GPIO3 GPIO4 GPIO5 GPIO6 GPIO7

开发板管脚数字对应可以看开发板40PIN 的两边板子标记,有标记哪个是1脚,哪个是40脚,然后和下图对应接IO口使用。

图片1.png

 

GPIO管脚说明

        直接从昇腾AI处理器引出的GPIO有:GPIO0、GPIO1。

        由PCA6416引出的GPIO有:GPIO3、GPIO4、GPIO5、GPIO6、GPIO7。


1585623316353006.png


1585623335908685.png

 

由于GPIO34567是通过IO口扩展芯片扩展的IO口,控制是使用I2C方式控制PCA6416.读取控制速度不如GPIO0GPIO1,如果程序中有使用输入口作为检测使用(while(1)中一直监控IO口输入状态,例如按键检测)请优先使用GPIO0GPIO1.


二、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

 

以上指令总体上目的就是引出GPIO0GPIO1,并且让HwHiAiUser获取GPIO0 GPIO1I2C等硬件的软件控制权限,如果rc.local已经加上了这些指令,就不需要重新添加了。


2. 开发板GPIO样例代码下载。

   到码云上下载GPIO demo源码,https://gitee.com/Atlas200DK 用MindStudio打开使用。

   代码中包含2个模块,其中

GPIO文件夹封装了一个GPIO类,封装了3个接口函数。

1585623660291865.png


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中。

1585623845417060.png


以上就可以对Atlas 200 DK 的7个gpio口进行软件控制了。有其他疑问可以到论坛咨询。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。