嵌入式爱好者

uart设置奇偶校验

2021-4-27 16:30| 发布者: xhh| 查看: 439| 评论: 0

类目: I.MX6系列产品  >  Linux     文档编号: 497

一、uart通讯的数据格式
这里写图片描述
(1)起始位:起始位必须是持续一个比特时间的“0”,标志传输一个字符的开始。 
(2)数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定,一般可以是5位、7位或8位。传输数据时先传送字符的低位,后传送字符的高位。 
(3)奇偶校验位:奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶检验位不是必须有的。如果是奇校验,需要保证传输的数据总共有奇数个“1”;如果是偶校验,需要保证传输的数据总共有偶数个“1”。 
  举例来说,假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1),如果是偶校验,则偶校验位为1(要确保总共有偶数个1)。 
  由此可见,奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,这样做的好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及传输的数据是否同步。 
(4)停止位:停止位可以是是1位、1.5位或2位,可以由软件设定。它一定是“1”,标志着传输一个字符的结束。 
(5)空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充。
二、应用中设置奇偶校验
设置奇偶效验位需要用到两个termios中的成员:c_cflag和c_iflag。首先要激活c_cflag中的校验位使能标志PARENB和是否进行奇偶效验,同时还要激活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 |= ~PARODD;



————————————————
版权声明:本文为CSDN博主「C_Aya」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baweiyaoji/article/details/72885633

已解决

未解决

只是看看
上一篇:boa移植下一篇:串口的奇偶校验编程

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-7 10:53

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部