串口程序设计

上传人:hy****d 文档编号:242906396 上传时间:2024-09-11 格式:PPT 页数:14 大小:167.50KB
返回 下载 相关 举报
串口程序设计_第1页
第1页 / 共14页
串口程序设计_第2页
第2页 / 共14页
串口程序设计_第3页
第3页 / 共14页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,单击此处编辑母版标题样式,第四讲 串口程序设计,串口概述,串口数据结构,串口设置,串口应用实例,4.1 串口概述,串口简介,串行接口简称串口,也称串行通信接口(在Windows下常被成为COM口),是采用串行通信方式的扩展接口。,工作模式,串行接口是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本。适合远距离通信,但传输速度慢。串行通信的距离可以从几米到几千米。根据信息传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。,串口标准,串行接口通常按电气标准及协议来划分,包括RS-232-C、RS-422、RS-485三种标准。,4.1 串口概述,RS-232,也称标准串口,是最常用的一种串行通讯接口标准。传统的,RS-232,接口采用标准,25,芯,D,型插座(,DB25,),现在普遍使用的是标准,9,芯,D,型插座(,DB9,)。,4.1 串口概述,RS-485,RS-485,最大的通信距离约为,1219,米,最大传输速率为,10,M/s,,传输速率与传输距离成反比。如果需要传输更长的距离,需要增加,485,中继器。,常用的,485,接口采用标准,9,芯插座(,DB9,)。,串口数据传输,串口数据的一帧包括起始位、数据位、奇偶校验位、停止位组成。开始前,线路处于空闲状态,(,高电平,),,传送开始时首先发送一个起始位,(0),,然后是数据位,(5/6/7/8),,紧跟着是奇偶校验位,(,也可以没有,),,最后是停止位,(,可以是,1,位,、,1.5,位或,2,位,),。至此一帧传送完毕,线路重回空闲状态,4.1 串口概述,4.1 串口概述,串口配置参数,Linux串口设备,Linux中的串口设备文件存放于/dev目录下,串口的设备名为ttyS0、ttyS1,分别对应物理串口1,串口2等。,串口操作,串口操作包括以下几个部分:数据发送、数据接收、产生中断、产生波特率、Loopback模式、红外模式、自动流控模式等。,串口参数,串口参数的配置主要包括:波特率、数据位、停止位、奇偶校验位、流控协议等。,4.2 串口数据结构,基本结构,#include,struct termiosunsigned short c_iflag; /输入模式标志,unsigned short c_oflag; /输出模式标志,unsigned short c_cflag; /控制模式标志,unsigned short c_lflag; /本地模式标志,unsigned char c_line; /行标识,unsigned char c_ccNCC; /控制字符,;,在串口结构中,最重要的是c_cflag,通过对它赋值,可以设置波特率、数据位、停止位、奇偶校验位等串口属性。,4.2 串口数据结构,c_cflag,参数项,含义,CCTS_OFLOW,输出的CTS流控制,CIGNORE,忽略控制标志,CLOCAL,忽略调制-解调器状态,CREAD,启用接收装置,CRTS_IFLOW,输入的RTS流控制,CSIZE,字符大小屏蔽,CSTOPB,送两个停止位,否则为1位,HUPCL,最后关闭时断开,MDMBUF,经载波的流控输出,PARENB,进行奇偶校验,PARODD,奇校验,否则为偶校验,4.2 串口数据结构,c_iflag,INPCK,奇偶校验使能,IGNPAR,忽略奇偶校验错误,PARMRK,奇偶校验错误掩码,ISTRIP,除去奇偶校验位,IXON,启动出口硬件流控,IXOFF,启动入口软件流控,IXANY,允许字符重新启动流控,IGNBRK,忽略中断情况,BRKINT,当发生中断时发送SIGINT信号,INLCR,将NL映射到CR,IGNCR,忽略CR,ICRNL,将CR映射到NL,IUCLC,将高位情况映射到低位情况,IMAXBEL,当输入太长时回复ECHO,4.3 串口设置,设置串口属性主要就是配置 termios 结构体中的各个变量,其主要流程包括以下几个步骤:,使用函数,tcgetattr,保存原串口属性;,通过位掩码的方式激活本地连接和接受使能选项:,CLOCAL,和,CREAD,;,使用函数,cfsetispeed,和,cfsetospeed,设置数据传输率;,通过位掩码设置字符大小;,设置奇偶校验:首先要激活,c_cflag,中的校验位使能标志,PARENB,和是否要进行偶校验,同时还要激活,c_iflag,中的奇偶校验使能;,激活,c_cflag,中的,CSTOP,设置停止位,若停止位为,1,,则清,4.3 串口设置,除CSTOP,若停止位为0,则激活CSTOP;,设置最少字符和等待时间,在对接受字符和等待时间没有特别要求的情况下,可以将其设置为,0,;,调用函数,tcflush(fd,queue_selector,),来处理要写入引用的对象,,queue_selector,可能的取值有以下几种:,TCIFLUSH,:刷新收到的数据但是不读,TCOFLUSH,:刷新写入的数据但是不传送,TCIOFLUSH,:同时刷新收到的数据但是不读,并且刷新写入的数据但是不传送;,下面给出串口配置的通用函数,函数名,set_opt,4.3 串口设置,串口使用详解,在配置完串口的相关属性后,就可以对串口进行打开、读写操作了。它所使用的函数和普通的文件系统调用一样,只是参数会有所区别,具体如下:,打开串口,打开串口时,传递给open函数的flag参数需要两个模式选项,O_NOCTTY,O_NDELAY,fd=open(“/dev/ttyS0”,O_RDWR|O_NOCTTY|O_NDELAY);,O_NOCTTY标志用于通知Linux操作系统这个程序不会成为对应这个端口的控制终端,如果没有指定这个标志,那么任何一个输入(诸如键盘中止信号等)都将影响用户的进程。,4.3 串口设置,O_NDELAY,标志通知,Linux,系统这个程序不关心,DCD,信号线所处的状态(端口另一端是否激活或停止)。如果用户指定了这个标志,则进程将会一直处于睡眠态,直到,DCD,信号线被激活。,接下来可恢复串口的状态为阻塞状态,用于等待串口数据的读入,可用,fcntl,函数实现,如下:,fcntl(fd,F_SETFL,0);,再接着可以测试打开的文件描述符是否引用一个终端设备,以进一步确认串口是否正确打开,如下:,isatty(STDIN_FILENO,);,如果测试成功,表示串口成功打开,这时就可以对串口进行读写操作了。,读写串口,读写串口和读写普通文件一样,使用 read、write 函数即可,如下所示:,write(fd,buff,8);,read(fd,buff,8);,下面的例程显示了打开串口的通用函数open_port.c,并且给出了一个通过串口传输数据的实例。,4.3 串口设置,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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