完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
本篇文章主要是 解决自己对串口通信校验方式的一些疑惑
文章主要是对奇偶校验位 进行分析 首先我们得对串口数据包的基本组成 有一个大概的了解 1.起始位 :由一个逻辑0的数据位表示(第一个低电平) 2.结束位 :由 0.5,1,1,5,2个逻辑的数据位表示(高电平) 3.有效数据位:紧跟着起始位的就是有效数据位,长度为5,6,7或8位长 4.校验位 :可选,目的为数据抗干扰性, 校验方式 : 奇偶校验需要一位校验位,即使用串口通信的方式2或方式3(8位数据位+1位校验位)。 奇校验(odd parity):让传输的数据(包含校验位)中1的个数为奇数。 即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。 以发送字符:10101010为例 偶校验(even parity):让传输的数据(包含校验位)中1的个数为偶数。 即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。 还是以发送字符:10101010为例 数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为奇数则校验通过,表示此次传输过程未发生错误。如果不是奇数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。 优缺点: 奇偶校验的检错率只有50%,因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则无能为力了╮(╯﹏╰)╭ 奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大。 奇偶校验只能发现错误,但不能纠正错误,也就是说它只能告诉你出错了,但不能告诉你怎么出错了,一旦发现错误,只好重发。 虽然奇偶校验有很多缺点,但因为其使用起来十分简单,故目前仍被广泛使用。 应用: 如何用编程确定一个字节中“1”个数的奇偶性?我们可以利用二进制数相加的特点: 0+0=0、1+0=1、1+1=0 可以看出,如果我们将一个字节的所有位相加 有奇数个“1”的字节的和为1 有偶数个“1”的字节的和为0 由此即可通过编程完成判断。实际应用中,实现方法很多,但这是相对简单的一种, |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:03 , Processed in 0.825429 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号