linux串口编程

上传人:c****d 文档编号:243018490 上传时间:2024-09-13 格式:PPT 页数:17 大小:194.50KB
返回 下载 相关 举报
linux串口编程_第1页
第1页 / 共17页
linux串口编程_第2页
第2页 / 共17页
linux串口编程_第3页
第3页 / 共17页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,linux串口,开发,串口,概述,串口设置,串口使用详解,1,、,串口,概述,用户常见的数据通信的基本方式有两种:,并行通信;,串行通信;,串行通信是计算机常用的接口,如:,RS-232-C,接口。该标准规定采用一个,DB25,芯引脚连接器或,DB9,芯引脚连接器。,芯片内部常具有,UART,控制器,其可工作于,Interrupt(,中断模式,),或,DMA,(直接内存访问)模式。,UART,的操作主要包括以下几个部分:,数据发送;,数据接收;,产生中断;,产生波特率;,Loopback,模式;,红外模式;,自动流控模式;,串口参数的配置主要包括:波特率、数据位、停止位、流控协议。,linux,中的串口设备文件存放于,/dev,目录下,其中串口一,串口二对应设备名依次为“,/dev/ttyS0”,、“,/dev/ttyS1”,。,在,linux,下操作串口与操作文件相同。,2、串口详细配置,在使用串口之前必须设置相关配置,包括:波特率、数据位、校验位、停止位等。串口设置由下面结构体实现:,该结构中,c_cflag,最为重要,可设置波特率、数据位、校验位、停止位。在设置波特率时需在数字前加上,B,,如,B9600,。,B19200,。使用其需通过“与”“或”操作方式。,输入模式,c_iflag,成员控制端口接收端的字符输入处理。,串口控制函数,Tcgetattr,取属性,(termios,结构,),Tcsetattr,设置属性,(termios,结构,),cfgetispeed,得到输入速度,Cfgetospeed,得到输出速度,Cfsetispeed,设置输入速度,Cfsetospeed,设置输出速度,Tcdrain,等待所有输出都被传输,tcflow,挂起传输或接收,tcflush,刷清未决输入和,/,或输出,Tcsendbreak,送,BREAK,字符,tcgetpgrp,得到前台进程组,ID,tcsetpgrp,设置前台进程组,ID,2.1串口配置流程,保存原先串口配置使用,tcgetattr(fd,&oldtio,),函数,struct,termios,newtio,oldtio,;,tcgetattr,(,fd,&oldtio,);,激活选项有,CLOCAL,和,CREAD,用于本地连接和接收使能。,newtio.c_cflag,| = CLOCAL | CREAD;,设置波特率,使用函数,cfsetispeed,、,cfsetospeed,cfsetispeed(&newtio, B115200);,cfsetospeed(&newtio, B115200);,设置数据位,需使用掩码设置。,newtio.c_cflag,newtio.c_cflag,|= CS8;,设置奇偶校验位,使用,c_cflag,和,c_iflag,。,设置奇校验:,newtio.c_cflag,|= PARENB;,newtio.c_cflag,|= PARODD;,newtio.c_iflag,|= (INPCK | ISTRIP);,设置偶校验:,newtio.c_iflag,|= (INPCK | ISTRIP);,newtio.c_cflag,|= PARENB;,newtio.c_cflag,设置停止位,通过激活,c_cflag,中的,CSTOPB,实现。若停止位为,1,,则清除,CSTOPB,,若停止位为,2,,则激活,CSTOPB,。,newtio.c_cflag,设置最少字符和等待时间,对于接收字符和等待时间没有特别要求时,可设为,0,。,newtio.c_ccVTIME, = 0;,newtio.c_ccVMIN, = 0;,处理要写入的引用对象,tcflush,函数刷清(抛弃)输入缓存(终端驱动程序已接收到,但用户程序尚未读)或输出缓存(用户程序已经写,但尚未发送)。,int,tcflush(int,int,queue,),queue,数应当是下列三个常数之一:, TCIFLUSH,刷清输入队列。, TCOFLUSH,刷清输出队列。, TCIOFLUSH,刷清输入、输出队列。,如:,tcflush(fd,TCIFLUSH,);,激活配置。在完成配置后,需激活配置使其生效。使用,tsettattr,(),函数。原型:,int,tcgetattr(int,struct,termios,*,termptr,);,int,tcsetattr(int,int,opt, const,struct,termios,*,termptr,);,tcsetattr,的参数,opt,使我们可以指定在什么时候新的终端属性才起作用。,opt,可以指定为下列常数中的一个:, TCSANOW,更改立即发生。, TCSADRAIN,发送了所有输出后更改才发生。若更改输出参数则应使用此选择项。, TCSAFLUSH,发送了所有输出后更改才发生。更进一步,在更改发生时未读的所有输入数据都被删除(刷清),使用如:,tcsetattr(fd,TCSANOW,&newtio,),3、串口使用详解,在配置完串口的相关属性后,就可对串口进行打开,读写操作了。其使用方式与文件操作一样,区别在于串口是一个终端设备。,3.1 打开串口,fd = open( /dev/ttyS0, O_RDWR|O_NOCTTY|O_NDELAY);,Open,函数中除普通参数外,另有两个参数,O_NOCTTY,和,O_NDELAY,。,O_NOCTTY:,通知,linix,系统,这个程序不会成为这个端口的控制终端。,O_NDELAY:,通知,linux,系统不关心,DCD,信号线所处的状态(端口的另一端是否激活或者停止)。,然后,恢复串口的状态为阻塞状态,用于等待串口数据的读入。用,fcntl,函数:,fcntl,(,fd, F_SETFL, 0,),;,接着,测试打开的文件描述府是否引用一个终端设备,以进一步确认串口是否正确打开。,isatty(STDIN_FILENO);,3.2 读写串口,串口的读写与普通文件一样,使用,read,write,函数。,read(fd,buff,8);,write(fd,buff,8);,实例见:,seri.c,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!