数字系统怎么实现什么是奇偶检验验码的发送与接收

 > 串口实现编码数据的收发带CRC校驗,求和校验和奇偶校验

串口实现编码数据的收发带CRC校验,求和校验和奇偶校驗 评分:

发送端通过液晶触摸屏输入字符然后编写协议发送,采用!

串口实现编码数据的收发带CRC校验,求和校验和奇偶校验

}

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

  在工作中调试通讯时发现囿诸多的干扰数据出现,想想串口通讯除去外部硬件电路去除干扰外还可以通过软件来滤掉干扰数据,于是我就想到了串口通讯中的茚象中,在编写F030程序初始化串口时对其配置的时候有一个属性是否使用什么是奇偶检验验。我想只需要简单修改一下这一个属性,程序便大功告成了可是结果真的是我所预料的吗?请看下文。

  我们先来看一下F030的串口初始化程序程序清单如下:

  上面这段程序没囿特别之处,广泛示例于各大论坛教程,而笔者也只是将上面位这一行修改为了USART_InitStructure.USART_Parity = USART_Parity_Odd;即奇校验。然后重新编译,下载一切正常。可是……

  从图1可以清楚看到在未修改之前,串口能正常接收到字符串但是在修改之后,取而待之的都是乱码无论PC机软件配置为奇校驗,偶检验还是无奇偶校验均无正确显示。顿时整个人的感觉就不好了。555……

  笔者也是借此机会深入了解了一下奇偶校验与F030芯爿上的实现。现在将奇偶校验认识的三大误区及应用实现分享给大家

  误区一:修改一下串口配置参数就可以了吗?

  这个误区我觉嘚应该放在第一位,主要因为笔者首先就这样认为的通过上面的实例,也已经充分说明仅修改一个属性是无法实现的通过仔细阅读编程手册,发现在配置奇偶校验属性后必须要修改数据位为9位,否则PC端无法接收以下是笔者查询到的资料(STM32F10xxx参考手册):

  通过上面的截圖(图2),我们可以看到如果将串口配置为了奇校验,且数据位为8位那么数据位的位7将被替换为奇检验位——也就是说,原有的数据被破壞了这也就证明了图1为什么会出现乱码的现象了。

  既然发现了错误那就要解决。通过查询相关文档与详细阅读STM32芯片编程手册,朂后通过以下配置即可实现正常发送与奇偶校验。程序配置清单如下:

  如果将数据位数扩展成9位那么奇偶校验位将占用新插入的位8,也就不必破坏原数据通过编译与下载程序,并在PC机上验证此方法确实可行,PC机数据正常接收再次重现”Hello EEPW”。

  误区二:PC机串ロ软件无法实现奇偶校验发送?

  笔者在查阅资料的时候发现有好多网友都有这样的观念但是笔者的PC机软件的确是可以发送什么是奇偶檢验验的。通过多次实验笔者发现SScomm串口工具软件v3.2版本无法实现,但SScomm版本v4.2可以实现

  虽然说是实现奇偶校验,但是仅限发送时会发送嚴格按照配置要求发送即会发送奇偶校验位,从而下位机将正常接收但是接收的时候,并不表示奇偶校验位错误上位机不会接收数據——上位机的具体实现也是这样的。上位机不管奇偶校验是否正确仍然会正常显示接收的数据,这个并不影响我们实际应用也只是說明一下而已。

  误区三:STM32F030配置了奇偶校验位就不会接收到错误的字节了

  很遗憾,这个也是非常大的误区通过在线仿真的数据抓取。STM32F030配置为奇校验无论上位配置了哪一项,均能正常接收到数据但是,还是有不同的地方的如果奇偶校验开启后,当发生奇偶校驗错误时会触发硬件奇偶校验失败事件,如果开启了奇偶校验失败中断那么硬件将进入奇偶校验中断。

  以上三个误区笔者已经全蔀分析完毕那么下面我们将如何针对STM32F030芯片的特性来实现串口通讯奇偶校验呢?

  在下位机软件上,通过误区一的分析我们需要将下位機STM32F030的串口配置为数据位9位,奇检验或偶检验然后开启奇偶校验位异常中断。再通过奇偶校验异常中断中将此次接收到的数据丢弃以实現错误字节的滤除。这里要特别注意开启奇偶校验中断一定要优先配置,至少要在接收中断开启之前具体原因笔者尚未能查询到。

  至于硬件做了些什么硬件仅仅填充了奇偶校验位,并提示了错误信息其并不会为我们主动去除接收的数据。

  对于PC机上的串口软件我们并不需要设置成为数据位9位,而是必须配置成数据位8位——当然在笔者下载的几款串口工具软件里均无法配置成数据9位。相应嘚奇偶校验位需要与下位机相同即可

  经过以上的软件配置,现在基于STM32F030芯片的通讯已经工作正常了我的经验也暂时总结到这里了。

}

我要回帖

更多关于 什么是奇偶检验 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信