Linux串口应用开发

上传人:工**** 文档编号:568664602 上传时间:2024-07-26 格式:PPT 页数:21 大小:229.19KB
返回 下载 相关 举报
Linux串口应用开发_第1页
第1页 / 共21页
Linux串口应用开发_第2页
第2页 / 共21页
Linux串口应用开发_第3页
第3页 / 共21页
Linux串口应用开发_第4页
第4页 / 共21页
Linux串口应用开发_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《Linux串口应用开发》由会员分享,可在线阅读,更多相关《Linux串口应用开发(21页珍藏版)》请在金锄头文库上搜索。

1、ITEducation&TrainingITEducation&Training串口程序设计串口概述串口概述用户常见的数据通信的基本方式可分为用户常见的数据通信的基本方式可分为(1)并行通信:用多条数据线将各位同时传送)并行通信:用多条数据线将各位同时传送特点:传送速度快,适用于短距离、速度要求高的场合。特点:传送速度快,适用于短距离、速度要求高的场合。(2)串行通信:用一条数据线一位位的顺序传送)串行通信:用一条数据线一位位的顺序传送特点:成本低,适用于远距离、速度慢的场合。特点:成本低,适用于远距离、速度慢的场合。串行口是计算机一种常用接口。常用串口是串行口是计算机一种常用接口。常用串口是

2、RS-232-C接口接口(又称(又称EIARS-232-C),是在),是在1970年由美国电子工业协会年由美国电子工业协会(EIA)联合贝尔系统、)联合贝尔系统、调制解调器厂家及计算机终端生产调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。厂家共同制定的用于串行通讯的标准。1ITEducation&TrainingITEducation&Training串口程序设计异步串行异步串行I/O(UART)方式)方式:将传输数据的每个:将传输数据的每个字符一位接一位字符一位接一位(例如先低位、后高位例如先低位、后高位)地传送。地传送。接收方对于同一根线上一连串的数字信号,接收方对于同一

3、根线上一连串的数字信号,首先要首先要分割成位,再按位组成字符。分割成位,再按位组成字符。为了恢复发送的信息,为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步双方必须协调工作。在微型计算机中大量使用异步串行串行IO方式,双方使用各自的时钟信号,而且允方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。许时钟频率有一定误差,因此实现较容易。发送数据发送数据2ITEducation&TrainingITEducation&Training串口程序设计串口通讯电缆接线方式串口通讯电缆接线方式3ITEducation&TrainingITEducation&Trai

4、ning串口程序设计序号序号信号名称信号名称符号符号流向流向功能功能2 2发送数据发送数据TXDTXDDTEDCEDTEDCEDTEDTE(数据终端设备)数据终端设备)发送串行数据发送串行数据3 3接收数据接收数据RXDRXDDTEDCEDTEDCEDTE DTE 接收串行数据接收串行数据4 4请求发送请求发送RTSRTSDTEDCEDTEDCEDTE DTE 请求请求 DCEDCE(数据通讯设备)数据通讯设备)将线将线路切换到发送方式路切换到发送方式5 5允许发送允许发送CTSCTSDTEDCEDTEDCEDCE DCE 告诉告诉 DTE DTE 线路已接通可以发送数线路已接通可以发送数据据

5、6 6数据设备准备好数据设备准备好DSRDSRDTEDCEDTEDCEDCE DCE 准备好准备好 7 7信号地信号地信号公共地信号公共地8 8载波检测载波检测DCDDCDDTEDCEDTEDCE表示表示 DCE DCE 接收到远程载波接收到远程载波2020数据终端准备好数据终端准备好DTRDTRDTEDCEDTEDCEDTE DTE 准备好准备好2222振铃指示振铃指示RIRIDTEDCEDTEDCE表示表示 DCE DCE 与线路接通,出现振铃与线路接通,出现振铃串口的引脚说明串口的引脚说明4ITEducation&TrainingITEducation&Training串口程序设计S3C

6、2410X内部具有两个独立的UART控制器,每个控制器都可以工作在Interrupt模式或者DMA模式。同时,每个UART均具有16字节的FIFO,支持最高波特率230.4Kbps。串口配置主要包括波特率、起始位数量、数据位数量、停止位数量和流控协议。在 Linux 下串口文件位于 /dev 下 串口一串口一为为/dev/ttyS0串口二串口二为为/dev/ttyS15ITEducation&TrainingITEducation&Training串口程序设计串口的设置串口的设置主要是设置主要是设置structtermios结构体的各成员值结构体的各成员值。structtermiosunsig

7、nedshortc_oflag;/*输出模式标志输出模式标志*/unsignedshortc_cflag;/*控制模式标志控制模式标志*/unsignedshortc_lflag;/*区域模式标志区域模式标志*unsignedcharc_line;/*行控制行控制linediscipline*/unsignedcharc_ccNCC;/*控制特性控制特性*/unsignedshortc_iflag; /*输入模式标志输入模式标志*/;6ITEducation&TrainingITEducation&Training串口程序设计1、设置参数的实现示例:、设置参数的实现示例:tcgetattr(f

8、d,&oldtio),该函数得到与),该函数得到与fd指向对象指向对象的相关参数,并将他们保存于的相关参数,并将他们保存于oldtio引用的结构中。引用的结构中。保存原先配置保存原先配置if(tcgetattr(fd,&oldtio)!=0)Perror(“error”);Return-1;7ITEducation&TrainingITEducation&Training串口程序设计2、设置参数的实现示例:、设置参数的实现示例:激活选项激活选项CLOCAL和和CREADCLOCAL用于本地连接用于本地连接CREAD用于接收使能用于接收使能例:例:newtio.c_cflag|=CLOCAL|C

9、READ8ITEducation&TrainingITEducation&Training串口程序设计3、设置参数的实现示例:、设置参数的实现示例:设置波特率设置波特率输入波特率设置:输入波特率设置:cfsetispeed输出波特率设置:输出波特率设置:cfsetospeed例:例:cfsetispeed(&newtio,B19200);/*设置为设置为19200Bps*/cfsetospeed(&newtio,B19200);9ITEducation&TrainingITEducation&Training串口程序设计4、设置参数的实现示例:、设置参数的实现示例:设置数据位大小设置数据位大小

10、首先去掉数据位中的掩码,在重新设置。首先去掉数据位中的掩码,在重新设置。例:例:newtio.c_cflag&=CSIZE;newtio.c_cflag|=CS8;10ITEducation&TrainingITEducation&Training串口程序设计5、设置参数的实现示例:、设置参数的实现示例:设置奇校验位设置奇校验位newtio.c_iflag|=(INPCK|ISTRIP)/INPCK奇偶校验奇偶校验使能;使能;ISTRIP除去奇偶校验位除去奇偶校验位newtio.c_cflag|=PARODD;/奇校验奇校验newtio.c_cflag|=PARENB;/校验位使能校验位使能课

11、堂练习一:设置偶校验位课堂练习一:设置偶校验位newtio.c_iflag|=(INPCK|ISTRIP);newtio.c_cflag&=PARODD;newtio.c_cflag|=PARENB;11ITEducation&TrainingITEducation&Training串口程序设计6、设置参数的实现示例:、设置参数的实现示例:设置停止位设置停止位下面是设置停止位为下面是设置停止位为1的代码:的代码:newtio.c_cflag&=CSTOPB;设置最少字符和等待时间设置最少字符和等待时间newtio.c_ccVTIME=0;newtio.c_ccVMIN=0;12ITEducat

12、ion&TrainingITEducation&Training串口程序设计7、设置参数的实现示例:、设置参数的实现示例:处理要写入的引用对象处理要写入的引用对象tcflush(fd,queue_selector);queue_selector取值如下:取值如下:TCIFLUSH:刷新收到的数据但不读取刷新收到的数据但不读取TCOFLUSH:刷新写入的数据但是不传送刷新写入的数据但是不传送TCIOFLUSH:同时刷新收到的数据但是不读,并且刷同时刷新收到的数据但是不读,并且刷新写入的数据但是不传送新写入的数据但是不传送例如采用第三种方法:例如采用第三种方法:tcflush(fd,TCIOFLU

13、SH);13ITEducation&TrainingITEducation&Training串口程序设计8、设置参数的实现示例:、设置参数的实现示例:激活配置激活配置tcsetattr(fd,OPTION,&newtio);OPTION的选项如下:的选项如下:TCSANOW:改变的配置立即生效改变的配置立即生效TCSADRAIN:改变的配置在所有写入改变的配置在所有写入fd的输出结束后生的输出结束后生效效TCSAFLUSH:改变的配置在所有写入改变的配置在所有写入fd引用对象的输出引用对象的输出都被结束后生效,所有已接受但未读入的输入都在改变都被结束后生效,所有已接受但未读入的输入都在改变发生

14、前丢弃发生前丢弃例如:想使改变立即生效例如:想使改变立即生效tcsetattr(fd,TCSANOW,&newtio);14ITEducation&TrainingITEducation&Training串口程序设计串口操作需要的头文件串口操作需要的头文件#include/*标准输入输出定义标准输入输出定义*/#include/*标准函数库定义标准函数库定义*/#include/*Unix标准函数定义标准函数定义*/#include/*定义系统类型定义系统类型*/#include/*定义文件信息定义文件信息*/#include/*文件控制定义文件控制定义*/#include/*终端控制定义终端

15、控制定义*/#include/*错误号定义错误号定义*/15ITEducation&TrainingITEducation&Training串口程序设计打开串口打开串口在在Linux下串口文件位于下串口文件位于/dev下下串口一串口一为为/dev/ttyS0串口二串口二为为/dev/ttyS1intfd;/*以读写方式打开串口以读写方式打开串口*/fd=open(/dev/ttyS0,O_RDWR);if(-1=fd)/*不能打开串口不能打开串口*/perror(提示错误!提示错误!); 设置串口设置串口串口的设置主要是设置串口的设置主要是设置structtermios结构体的各成员值结构体的

16、各成员值。16ITEducation&TrainingITEducation&Training串口程序设计设置参数的实现示例:设置参数的实现示例:tcgetattr(fd,&oldtio);/*储存当前串口设定储存当前串口设定*/*控制标志设定,含义如下:控制标志设定,含义如下:*/*BAUDRATE:设定:设定bps的速度的速度*/*CRTSCTS:硬体流量控制:硬体流量控制*/*CS8:8n1(8位,无校验位,位,无校验位,1个终止位个终止位)*/*CLOCAL:本地连线,没有主机控制功能:本地连线,没有主机控制功能*/*CREAD:只能接收字元只能接收字元*/newtio.c_cflag

17、=BAUDRATE|CRTSCTS|CS8|CLOCAL|CREAD;newtio.c_iflag=IGNPAR;/*忽略奇偶校验位忽略奇偶校验位*/newtio.c_oflag=0;/*Raw模式输出模式输出*/newtio.c_lflag=0;/*非标准型输入,不回应非标准型输入,不回应*/newtio.c_ccVMIN=1;/*在读取到在读取到1个字元前先停止个字元前先停止*/newtio.c_ccVTIME=0;/*不使用分割字元组的计时器不使用分割字元组的计时器*/tcflush(fd,TCIFLUSH);/*清除串口缓冲区清除串口缓冲区*/tcsetattr(fd,TCSANOW,

18、&newtio);/*设置串口新参数设置串口新参数*/17ITEducation&TrainingITEducation&Training串口程序设计读写串口读写串口发送数据发送数据charbuffer1024;intLength;intnByte;nByte=write(fd,buffer,Length)读取串口数据读取串口数据charbuff1024;intLen;intreadByte;readByte=read(fd,buff,Len);18ITEducation&TrainingITEducation&Training串口程序设计关闭串口关闭串口关闭串口就是关闭文件关闭串口就是关闭文

19、件close(fd);19ITEducation&TrainingITEducation&Training串口程序设计串口参数设定和文件操作的几个重要函数串口参数设定和文件操作的几个重要函数函数名函数名描述描述举例举例open打开串口文件打开串口文件open(/dev/ttyS0,O_RDWR)tcgetattr保存当前串口设置保存当前串口设置tcgetattr(fd,&oldtio)tcsetattr设置串口参数设置串口参数tcsetattr(fd,TCSANOW,&newtio)read从串口中读数据从串口中读数据read(fd,buff,Len)tcflush清除串口缓冲区清除串口缓冲区tcflush(fd,TCIFLUSH);write向串口中写数据向串口中写数据write(fd,buffer,Length)close关闭串口文件关闭串口文件close(fd);完整实例完整实例20ITEducation&TrainingITEducation&TrainingThankyou谢谢21

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号