0

我有一个非常低速的串行数据连接(RS485):9600 波特的实际数据传输速率约为其的 25%。

串行线路正在通过一个极高 EMR 的区域。峰值波动可达3000 KV。

我还不能强制改变物理介质,但可以很容易地提供一个简单的、健壮的前向纠错方案。该方案需要在 PIC18 系列微控制器上易于实施。

想法?

4

3 回答 3

1

该站点声称在 PIC18 上实现了 Reed-Solomon。我自己从未使用过它,但也许它可能是一个有用的参考?

于 2010-07-15T16:08:06.217 回答
1

搜索 MODBUS ASCII 协议中使用的 CRC 算法。

于 2010-09-02T13:00:37.067 回答
0

我使用 PIC18 器件进行开发,目前使用 MCC18 和 PICC18 编译器。几周前我注意到 PICC18 的外设标头错误地将 Busy2USART() 宏映射到 TRMT 位而不是 TRMT2 位。在我发现问题之前,这让我很头疼了很短的时间。例如,一个简单的传输:

putc2USART(*p_value++);
while Busy2USART();
putc2USART(*p_value);

当 Busy2USART() 宏被错误地映射到 TRMT 位时,我从不等待字节离开移位寄存器,因为我正在监视错误的位。在我意识到头文件不准确之前,我能够通过 485 成功传输一个字节的唯一方法是在字节之间等待 1 毫秒。我的波特率为 91912,字节之间的延迟扼杀了我的吞吐量。我还建议实施一种碰撞检测和校验和的方法。校验和很便宜,即使在 PIC18 上也是如此。如果您能够收听自己的传输,那么这样做可以让您了解可能由同一环路上的重复地址和不正确的时序导致的冲突。

于 2010-09-24T03:10:22.987 回答