注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

liufan的个人空间 http://home.eeworld.com.cn/space-uid-53362.html [收藏] [复制] [分享] [RSS]

日志

【原创】RS232数据帧的奇偶校验位

已有 4745 次阅读2015-5-8 14:57 |个人分类:MCU| RS232, 奇校验, 偶校验, ODD, EVEN

    在串口通信中,现在已经很少用到奇偶校验位的应用了,手头的项目有个赛多利斯的精密天平要用,该天平的RS232的通信协议中使用到了奇校验位, 还是在多年前搞51的搞过奇偶校验位,有点模糊了,在网上查了一下资料,写的不是很清楚明白,自己再重新整理一下,做个MARK吧。
    一般奇偶校验位的应用是由硬件完成的,软件只需要在初始化的时候对MCU的串口外设设置一下OK了。
奇偶校验的形式一般是在数据位后面跟一个奇偶校验位,如果数据位是8位的,那么加上校验位就是9位数据;如果数据位是7位的,那么加上校验位就是8位数据,校验位和数据之间没有任何意义上的关联,它不是数据的一部分,它只是关心数据中的“1”的个数是否为奇数(奇校验),或者偶数(偶校验),先说奇校验吧,奇校验就是控制器在发送的一个字节或者一个数据帧里面含有的“1”的个数进行奇数个的修正调整,这里采用8位数据位+1位奇校验位的形式举个简单的例子,A发送数据0x35到B,后面紧跟一个奇校验位J, 0x35的二进制=  0011 0101,可以看出8个数据位中一共有4个‘1’,那此时硬件会根据“1”的个数来设置J,这里会将奇校验位J调整为“1”,为什么呢? 因为数据位的“1”的个数是偶数,而我们用的是奇校验,所以为了达到有奇数个“1”的目的,调整奇偶校验位J为“1”,那么这9个位发出去就有奇数个“1”啦,当B接收的时候,B的硬件同样会对接收到“数据+J”中“1”的个数进行计数判断,如果是奇数个“1”,则认为数据接收正确,否则认为数据错误。而当A发送数据0x25( 0010 0101)到B的时候,则J应该就是“0”了,因为要保证发送出去的数据位+J位一共有奇数个“1”。

偶校验和奇校验是一个故事来着,不多啰嗦了!



评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-7-20 21:56 , Processed in 0.020531 second(s), 11 queries , Gzip On, Redis On.

Powered by EEWORLD电子工程世界

© 2018 http://bbs.eeworld.com.cn/

返回顶部