我有一个非常低速的串行数据连接(RS485):9600波特,实际数据传输速率约为该速率的25%。
串行线正在通过一个极高电磁干扰的区域。峰值波动可达3000千伏。
我(目前)还不能强制改变物理介质,但可以很容易地提出一个简单而健壮的前向纠错方案。该方案需要易于在PIC18系列微型计算机上实现。
想法?
发布于 2010-07-16 00:08:06
This site声称在PIC18上实现了里德-所罗门算法。我自己从来没有用过它,但也许它会是一个有帮助的参考?
发布于 2010-09-02 21:00:37
搜索MODBUS ASCII协议中使用的CRC算法。
发布于 2010-09-24 11:10:23
我使用PIC18设备进行开发,目前使用的是MCC18和PICC18编译器。几周前,我注意到PICC18的外设报头错误地将Busy2USART()宏映射到TRMT位,而不是TRMT2位。在我发现这个问题之前的短时间内,这让我头疼不已。例如,一个简单的传输:
putc2USART(*p_value++);
while Busy2USART();
putc2USART(*p_value);当Busy2USART()宏被错误地映射到TRMT位时,我从不等待字节离开移位寄存器,因为我监控的是错误的位。在我意识到头文件不准确之前,我能够成功地在485上传输一个字节的唯一方法是在字节之间等待1ms。我的波特率是91912,字节之间的延迟杀死了我的吞吐量。我还建议实现一种冲突检测和校验和的方法。校验和很便宜,即使在PIC18上也是如此。如果您能够监听自己的传输,那么这样做可以让您意识到相同环路上的重复地址和不正确的计时可能导致的冲突。
https://stackoverflow.com/questions/3257238
复制相似问题