我在串口的偶校验竟然栽了跟头

需要实现RS485的偶校验,在C8051F单片机上。


我知道SSCOM串口助手的奇偶校验不好用(网上以前听说的),所以我就先用SSCOMM的无校验与目标板卡的无校验进行调试。结果搞定了。然后找了STM32板卡设置了发送的偶校验38400, USART_WordLength_8b, USART_StopBits_1, USART_Parity_Even.

于是就在C8051F板卡上各种实验了。各种参数的配置。甚至还找来的C8051F自带的自动配置软件代码生成器。由于我的工程C文件过多,C代码庞大,内存用的也差不多了,Xdata基本用光,甚至不得不用了data区域的一部分内存。总是接收到错误的数据。

查了许多关于关于C8051F的配置就是查不到。官网的代码也看了也没有代码。看了AT51相关配置的描述,好像和C8051F差不多。

周六早上用断点看了C8051F的接收,都收到了莫名其妙的数据。吃完早饭,我突然想,是不是STM32就发送错误了呢。因为我对STM32太有自信了,我觉得不会出错。但是还要验证一下,于是用STM32板卡和RS232/RS485转换板+笔记本的SSCOMM进行通信,结果发现SSCOMM也是乱码。我自己看了一下STM32的参数USART_WordLength_8b,找了一下头文件,竟然还存在USART_WordLength_9b。就这样问题就解决了。

解决后翻了一下以前写的ARM7的一款芯片的偶校验,里面的配置就是5/6/7/8个bit共4种选择。却没有9bit。


为了这个偶校验,折腾的时间估计超过了6个小时。





你可能感兴趣的:(我在串口的偶校验竟然栽了跟头)