查看: 10699|回复: 4

BPI-M2使用第二篇:wiringPi安装与串口使用心得!

[复制链接]
  • TA的每日心情
    开心
    2016-11-18 11:38
  • 签到天数: 57 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-9-25 22:40:56 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 恶魔花花 于 2015-9-26 16:12 编辑

    树莓派的GPIO库非常多,有python GPIO、wiringPi、BCM2835 C Library等。因为以前没了解过python,所以在学习树莓派时首选的是wiringPi。相对于树莓派来说,BPI因为起步晚等多种原因就没有这么多的GPIO库,但是也有好多牛人大神将用在树莓派上的wiringPi移植到了BPI上,本篇帖子参考@sinovoip 的帖子:香蕉派 banana pi BPI-M2_WiringPI 测试成功 代码已经上传GITHUB,将自己使用过程中的一些心得分享给大家,有错误的地方还请多多指正!
    BPI-M2,使用镜像Raspbian4.0
    1、下载wiringPi
    1. git clone https://github.com/BPI-SINOVOIP/BPI-WiringPi.git -b BPI_M2
    复制代码
    2、安装wiringPi
    1. cd BPI-WiringPi
    2. chmod +x ./build
    3. sudo ./build
    复制代码
    3、测试是否安装成功

    以上步骤完成后输入:gpio readall命令查看是否安装成功,如果出现以下界面,则说明安装成功。

    0A12RRWT3%8O[D3G4DTL6.png

    这个命令是用来查看BPI-M2的GPIO 排列的。
    --------------------------------------------------------------------------------------------------------------------------
    我当时安装wiringPi的目的是为了使用BPI-M2的串口,所以接下来就简单地给大家分享一下我使用串口的一些心得。
    wiringPi提供了许多对GPIO操作的函数库,如果想具体了解每个函数的功能和作用,请参考:wiringPi使用手册【http://pan.baidu.com/s/1jG3wlam】。

    在wiringPi的安装目录下提供了几个供我们参考使用的例子(/home/bananapi/BPI-WiringPi/examples),其中和串口有关的两个文件为:serialRead.c和serialTest.c 。 前一个是串口读取数据的例子,后一个是串口读写数据的例子,我在这里简单分析一下serialRead.c里的代码:
    1. int main ()
    2. {
    3.   int fd ;
    4.   /*打开串口/dev/ttyS5为串口设备的文件描述符*/
    5.   if ((fd = serialOpen ("/dev/ttyS5", 115200)) < 0)
    6.   {
    7.         /*如果打开串口失败,输出错误提示*/
    8.     fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
    9.     return 1 ;
    10.   }

    11. // Loop, getting and printing characters

    12.   for (;;)
    13.   {
    14.         /*serialGetchar ()函数返回串口讴备的下一个待读取字符
    15.         **输出接收到的字符*/
    16.     putchar (serialGetchar (fd)) ;
    17.     fflush (stdout) ;
    18.   }
    19. }
    复制代码
    需要注意的是在BPI-M2上使用wiringPi时是可以不需要对设备进行初始化的,而在树莓派上使用wiringPi时必须对设备进行初始化。

    在写程序之间先确定连接的CPIO口:


    WUKVZV]3W7]H7AZ3J(}F68W.png


    然后我根据例子代码自己写了一个简单的串口读数据代码,具体的功能是通过电脑的串口工具给BPI-M2发送数据,BPI-M2收到数据后将收到的数据输出到控制台上,然后返回一个应答信息给电脑。代码写好后先执行编译:
    1. cd /home/bananapi/BPI-WingPi/examples
    2. /*这里具体进入你代码文件放的目录就行了*/
    3. gcc -Wall -o uart uart.c -lwiringPi
    4. /*我的文件名称是uart.c*/
    5. sudo ./uart
    6. /*如果代码没错,编译通过的话执行完这几条命令代码就开始运行了*/
    复制代码
    然后的的控制台上输出了:

    I){T7~}N5MVSH5X{_{M)}16.png

    意思就是不能打开串口设备,此串口设备不存在。也就是说找不到这个串口的设备的文件描述。我在程序里写的串口文件描述是和例子里写的一样的,很纳闷为什么会报错,然后就进入/dev目录查找了一下,果然是没有ttyS5这个文件,可能是大神们移植的时候不小心写错了吧。然后问题就来了:我使用的串口到底是用哪个文件来描述的呢?没办法,只能一个一个试了,目录下tty开头的文件至少有70多个,当时就被吓到了!!!幸运的是试的第一个就是我要找的,也就是/dev/tty。然后到代码里改了一下程序,再次编译,串口打开成功,数据发送接收成功



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-18 11:38
  • 签到天数: 57 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2015-9-27 09:37:22 | 显示全部楼层
    祝大家中秋节快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-18 11:38
  • 签到天数: 57 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2015-9-28 14:02:47 | 显示全部楼层
    tingting_300902 发表于 2015-9-28 10:24
    多谢分享

    多谢支持
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-9-18 07:18
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-10-7 12:27:10 | 显示全部楼层
    请问楼主,这个串口你确定就是tty吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-18 11:38
  • 签到天数: 57 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2015-10-7 14:18:05 | 显示全部楼层
    colin2135 发表于 2015-10-7 12:27
    请问楼主,这个串口你确定就是tty吗?

    是的,这个我试过了能用,其他的倒是没试过!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-15 19:42 , Processed in 0.163533 second(s), 23 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.