资讯专栏INFORMATION COLUMN

树莓派学习笔记(五)串口通信

levinit / 2798人阅读

摘要:观看学习上官可编程陈立臣老师的树莓派视频,在其过程中所记录的学习笔记一串口通信概念串口通信用于多机通信串口通信属于全双工通信,即双方可以同时进行交流半双工通信,一次只允许一方进行通信树莓派进行串口通信一般要连接两根线和

观看学习上官可编程陈立臣老师的树莓派视频,
在其过程中所记录的学习笔记

一、串口通信概念

  • 1、串口通信用于多机通信
  • 2、串口通信属于全双工通信,即双方可以同时进行交流
                                  半双工通信,一次只允许一方进行通信
  • 3、树莓派进行串口通信一般要连接两根线TXD和RXD,
           连接时要相反连接(即树莓派的TXD要与通信方的RXD相连,RXD与TXD相连)
  • 4、进行串口通信时,数据格式(数据位、停止位、奇偶校验位)和波特率,通信双方要保持一致

二、串口通信编程

  • 树莓派的串口是/dev/ttyAmA0(Linux一切皆文件)

1、配置串口

  • 修改/boot/cmdline.txt文件,将“console=ttyAMA0,115200”删除,
    该语句作用为树莓派启动时用串口来打印调试信息,使用串口通信则需删除
  • sudo reboot重启

2、连线

树莓派与USB转TTL相连
     TXD —— RXD
     RXD —— TXD
        0 V —— GND

3、调用函数

#include 	int wiringPiSetup (void) 返回执行状态,0表示成功,-1表示失败	void delay (unsigned int howLong) 暂停指定的毫秒数	void delayMicroseconds (unsigned int howLong) 暂停指定的微妙数

 

#include 	int serialOpen (char *device, int baud)	打开并初始化串口	void  serialPutchar (int fd, unsigned char c)  发送一个字节的数据到串口	void  serialPuts (int fd, char *s)  发送一个字符串到串口		int   serialDataAvail (int fd)  获取串口缓存中可用的字节数	int serialGetchar (int fd)  从串口读取一个字节数据返回,读取前使用serialDataAvail判断

4、示例代码1(向串口发送数据)

#include #include #include int main(){        int fd;        if(wiringPiSetup()==-1){                printf("初始化失败/n");                return -1;        }        fd = serialOpen("/dev/ttyAMA0",9600);        while(1){        //      serialPutchar(fd,"c");                serialPuts(fd,"hello world/r/n");	//   /r/n表示回车并换行                delayMicroseconds(1000000);//delay(1000);        }        return 0;}

5、示例代码2(读取串口数据,终端输出相应语句)

#include #include #include int main(){        int fd;        int cmd;        if(wiringPiSetup()==-1){                printf("初始化失败/n");                return -1;        }        fd = serialOpen("/dev/ttyAMA0",9600);        while(1){                while(serialDataAvail(fd)!=-1){                        cmd = serialGetchar(fd);                        //printf("data: %d/n",cmd);                        //printf("data: %c/n",cmd);                        if(cmd=="2"){                                serialPuts(fd,"data is 2/r/n");                        }                        if(cmd=="3"){                                serialPuts(fd,"data is 3/r/n");                        }                        if(cmd=="4"){                                serialPuts(fd,"data is 4/r/n");                        }                }        }        return 0;}

创作不易,动动小手点赞收藏

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121230.html

相关文章

  • nodejs和树莓开发以及点亮RGB的LED灯代码

    摘要:前段时间集团举行前端比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。一个链接控制硬件的基础库,比如控制串口,和链接串口的设备进行通信等,他有很多版本,树莓派的版本见这里安装有点,麻烦。 前段时间集团举行前端IOT比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。 先介绍一些树莓派的入门教程 阮一峰的树莓派入门 微雪电子-树莓派硬件中文官网 ...

    liuchengxu 评论0 收藏0
  • Linux学习

    摘要:学习树莓派的的初识学习树莓派的的初识初识初识学习书籍正点原子嵌入式驱动开发指南章节第三十章学习内容书中介绍的获取可以有三个途径第一个是的官方代码。网上的烧写树莓派教程很多,但是为了学习我选择了官方的代码。Linux学习 - 树莓派4b的U-Boot的初识初识U-Boot学习书籍:《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.1》章节:第三十章学习内容:书中介绍uboot的获...

    不知名网友 评论0 收藏0
  • 树莓学习笔记(六)交叉编译概念及安装使用

    摘要:一交叉编译概念什么是交叉编译交叉编译是在一个平台上生成另一个平台上的可执行代码。也要树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。 ...

    songze 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<