请问协议栈里串口如何使用奇偶校验
我代码里
U0UCR = 0x20| 0x10|0x08;这样设置偶校验
U0UCR = 0x10|0x08;这样设置奇校验,请问这样对吗?还有我现在用的是dma方式收发数据,请问dma方式能不能用奇偶校验,我现在实际调试中发现,串口发送有奇偶校验,但是接收协议栈好像没有奇偶校验,请问奇偶校验的实现需要自己写代码吗?如果需要自己写, 哪里有参考资料,O(∩_∩)O谢谢
1.DMA和奇偶校验没有关系。
2. 设置没错,为了确保都再|0x02, 确保 start和stop是不同的。
3. 芯片支持奇偶校验,不需要而外写代码了。
停止位我也用了,但是我实际调试发现,如果zstack里配置成奇校验,串口在接受数据的时候,不管上位机配置的是奇校验还是偶校验我都能正确接收到数据,所以我感觉发送是程序里实现了奇偶校验,而接收并没有实现奇偶校验
用的什么上位机软件?
用的是串口助手, 我把串口助手改成奇校验和偶校验,往2530发数据都可以
就是说我串口助手不管用奇校验还是偶校验发送命令给2530,我的cc2530都能收到正确的数据包
2530接收数据,如果我设置成奇校验,不管对方数据是奇偶校验我这边收到的数据都是对的,如果对方是无校验收到的数据是错误的 。如果2530设置 成偶校验,也是如此。从对方是无校验发过来数据是错误的,可以判定我的奇偶校验接收端也开启了,但是为什么奇偶校验不管发送过来的是奇偶我收到的数据都是对的呢?求解,我2530发送的奇偶我已经验证了,是正确的
我也测出了类似的问题。 我内部问下再回复你。
好的,O(∩_∩)O谢谢
结论在此,记得确认. 简单说,会报错,U0CSR.ERR会置位。 但是一读这个寄存器就会清零。只需在断点前先读取这个寄存器,就能看到这个错误。
奇偶校验实在不算很好的完整性检查方法,随便整个crc校验都好点
https://e2e.ti.com/support/wireless_connectivity/zigbee_6lowpan_802-15-4_mac/f/158/p/555376/2031761#2031761
下图这样就可以看到了
恩,ti协议栈没有实现这个判断吗?
协议栈没有使用奇偶校验。e2e上讨论过这个问题,这个是与应用相关的。
恩,这个理解了,是不是我在应用里在端点前加入判断读出来的err是1就丢弃那个字节就行了?还有我用的是dma方式找不到那个中断,dma里的中断只有TX,没有rx。找不到rx接收点在哪,请问能帮忙指教下吗?谢了