查看: 3887|回复: 1

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

[复制链接]
  • TA的每日心情
    开心
    2018-6-12 14:05
  • 签到天数: 76 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 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,来看是否有效。

    回复

    使用道具 举报

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

    连续签到: 1 天

    [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. }
    复制代码
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 15:57 , Processed in 0.131295 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.