查看: 175|回复: 1

[原创] 【香蕉派 BPI-M2 Ultra 四核开源单板计算机】之八:GPIO的使用

[复制链接]

28

主题

1

好友

643

积分

举人

Rank: 4

  • TA的每日心情
    开心
    昨天 17:46
  • 签到天数: 41 天

    [LV.5]常住居民I

    发表于 2016-12-26 15:56:38 |显示全部楼层
    开发板上引出了40个管脚,包括常见的一些接口,例如UART,SPI,PWM,I2C,GPIO等,我们目前使用的是GPIO。
    QQ截图20161226152834.jpg

    可以看到40个管脚里面引出许多GPIO管脚。
    这张图里的GPIO管脚号并不是正确的管脚号,需要查看官方的原理图。
    QQ截图20161226153056.jpg

    第40管脚对应的是PH5。
    linux的GPIO驱动中,将32个GPIO管脚分成一个GPIO chip,对应过来的R40芯片,也是按一个字母对应一个GPIO Chip,例如PA对应的事chip0,PB对应的事chip1等等。
    GPIO对应的是PH5,实际上就是CHIP7上的一个GPIO,对应linux系统,它的GPIO管脚号就是32*7+5=229.
    所以linux上配置PH5实际上就是以下配置
    echo 229 > /sys/class/gpio/export
    导出PH5,如此应用层就可以控制GPIO。
    echo in > /sys/class/gpio/gpio229/direction
    将PH5配置成输入模式。
    cat /sys/class/gpio/gpio229/value
    读取PH5的输入电平。
    应用层可以通过读取/sys/class/gpio/gpio229/value文件,就可以知道PH5的电平。
    测试的时候,可以使用跳线,将PH5接入VCC或者GND,来看是否有效。

    回复

    使用道具 举报

    4

    主题

    0

    好友

    149

    积分

    童生

    Rank: 2

  • TA的每日心情
    奋斗
    2017-1-2 19:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2017-1-1 20:24:36 |显示全部楼层
    也可以用MikuDuino操作GPIO了,完全Arduino语法

    github代码地址:
    https://github.com/bpiq/MikuPi/blob/master/examples/BerryClip.cpp
    1. /*
    2. * BerryClip.cpp:
    3. *
    4. *        Welcome to MikuQ.com! MikuDuino for BananaPi
    5. *        
    6. *     by MikuQ(i@mikuq.com) 2017-01-01
    7. *        
    8. * https://github.com/bpiq/MikuPi
    9. *
    10. */

    11. #include "MikuDuino.h"

    12. #define        LED1 D7
    13. #define        LED2 D11

    14. #define        LED3 D15
    15. #define        LED4 D19

    16. #define        LED5 D21
    17. #define        LED6 D23

    18. #define        Buzzer D24
    19. #define        Switch D26

    20. #define SPACE 100

    21. void setup()
    22. {
    23.         pinMode (LED1, OUTPUT);
    24.         pinMode (LED2, OUTPUT);
    25.         pinMode (LED3, OUTPUT);
    26.         pinMode (LED4, OUTPUT);
    27.         pinMode (LED5, OUTPUT);
    28.         pinMode (LED6, OUTPUT);
    29.         digitalWrite (LED1, LOW);
    30.         digitalWrite (LED2, LOW);
    31.         digitalWrite (LED3, LOW);
    32.         digitalWrite (LED4, LOW);
    33.         digitalWrite (LED5, LOW);
    34.         digitalWrite (LED6, LOW);
    35. }

    36. void loop()
    37. {
    38.         digitalWrite (LED1, HIGH);
    39.         delay(SPACE);
    40.         digitalWrite (LED1, LOW);
    41.         digitalWrite (LED2, HIGH);
    42.         delay(SPACE);
    43.         digitalWrite (LED2, LOW);
    44.         digitalWrite (LED3, HIGH);
    45.         delay(SPACE);
    46.         digitalWrite (LED3, LOW);
    47.         digitalWrite (LED4, HIGH);
    48.         delay(SPACE);
    49.         digitalWrite (LED4, LOW);
    50.         digitalWrite (LED5, HIGH);
    51.         delay(SPACE);
    52.         digitalWrite (LED5, LOW);
    53.         digitalWrite (LED6, HIGH);
    54.         delay(SPACE);
    55.         digitalWrite (LED6, LOW);
    56. }
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /1 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-3-28 00:42 , Processed in 0.097725 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部