- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、起始位 通信线路上没有数据被传送时,处于逻辑“1”的状态。当发送设备要发送字符数据时,首先发送一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线路传输到接收端,接收端检测到这个低电平后,就开始准备接收数据位信号。起始位所起的作用就是使通信双方同步。 2、数据位 当接收端收到起始位后,开始接收数据位。数据位的个数可以是5~8位。在数据传送过程中,数据位从最低有效位开始传送,接收端收到数据后,依次将其转换成并行数据。 3、奇偶校验位 数据位发送完后,为了保证数据的可靠性,还要再传送一个奇偶校验位。奇偶校验用于差错检测。如果选择偶校验,则数据位和奇偶位的逻辑“1”的个数必须为偶数,相反,如果是奇校验,数据位和奇偶位的逻辑“1”的个数为奇数。 4、停止位 在奇偶位或数据位(当无奇偶校验时)之后发送停止位。停止位表示一个数据的结束。它可以是1~2位的低电平。接收端收到停止位后,通信线路便恢复逻辑“1”的状态,直到下一个数据的起始位到来。 5、波特率设置 通信线路上传输的位(码元)信号都必须保持一致的信号持续时间,单位时间内传送码元的数目称为波特率。 对于大多数嵌入式设备来说,其波特率都设置为115200。 在Linux中,所有的设备文件一般都位于“/dev”下,其中串口一、串口二所对应的设备名依次为“/dev/ttyS0”、“/dev/ttyS1”,可以查看在“/dev”下的文件以确认。 6.4.3 RS232C标准 1、电气特性 2、引脚定义 3、字符(帧)格式 RS232C采用起止式异步通信协议,其特点是一个字符接着一个字符进行传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。其传输格式如图6.1所示,每一个字符的前面都有一位起始位(低电平,逻辑值“0”),字符本身有5~8位数据位,接着字符后面是一位校验码(也可以没有校验码),最后是停止位。停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值“1”),这样就能保证起始位开始处一定有一个下跳沿,便于接收方识别。 4、握手协议 5、双机互连方式 (1)无硬件握手情况 (2)DTR和DSR握手情况 (3)RTS和CTS握手情况 6.4.4 串口驱动程序的编写 一个串口驱动程序,通常包括打开串口、设置串口参数、对串口进行读写操作等内容。 1、串口操作需要的头文件 #include stdio.h /*标准输入输出定义*/ #include stdlib.h /*标准函数库定义*/ #include unistd.h /*Unix 标准函数定义*/ #include sys/types.h #include sys/stat.h #include fcntl.h /*文件控制定义*/ #include termios.h /*终端控制定义*/ #include errno.h /*错误号定义*/ 2、打开串口 通常嵌入式 Linux 系统下的串口文件是位于 /dev 下: 串口一 为 /dev/ttyS0; 串口二 为 /dev/ttyS1。 打开串口是通过打开函数open( ) 进行的 。 int fd; //文件描述符 fd = open( “/dev/ttyS0”, O_RDWR); //以读写方式打开串口 3、设置串口参数 最基本的串口参数设置包括波特率设置,校验位和停止位设置。 串口的设置主要是设置 struct termios 结构体的各成员值。 #includetermios.h struct termio{ unsigned short c_iflag; unsigned short c_oflag; unsigned short c_cflag; unsigned short c_lflag; unsigned char c_line; unsigned char c_cc[NCC]; }; (1)波特率设置 下面是设置(或修改)波特率的代码: struct termios Opt; tcgetattr(fd, Opt); cfsetispeed(Opt,B115200); /*设置为115200Bps*/ cfsetospeed(Opt,B115200); tcsetattr(fd,TCANOW,Opt); (2)设置校验的函数 /** *@brief 设置
文档评论(0)