器件型号:TMDXIDK437X
您好!
我使用 AM437上 PRU 的外设接口来接收从同一控制器上的另一个 PRU 发送的异步数据。 我以100kHz 的时钟发送数据、接收器以800kHz 的频率运行、因此我具有8倍过采样。 这意味着、当我发送8位时、我应该接收64位。
我的问题是我没有得到64、而是128、因此始终是预期的两倍。
我按照数据表中的说明构建了接收例程。 我已经更改了时钟速率、切换了 PRU、切换了外设接口中的通道、并且还使用了另一个控制器来发送数据、但我始终会得到相同的效果。
我尝试尽可能地分析效果、以下是我取得的进展:
我始终发送相同字节的2个字节、从"0x01 0x01"到"0xFF 0xFF"。 我将字节加倍、以确定接收到的字节是否是随机的、仅为发送字节的两倍、或者是否有其他影响。 下面是一个示例。 我发送字节0xA3 0xA3、因此我应该在接收器的存储器中找到的内容(具有8x 过采样)是:
FF 00 FF 00 00 FF FF FF 00 FF 00 00 00 00 FF 去采样到10100011 10100011或0xA3 0xA3。
我实际上得到了以下结果:
FF 00 00 00 FF 00 00 00 FF 00 00 FF 00 FF FF FF 00 FF FF FF FF FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF FF FF FF FF 00 FF FF FF FF FF FF FF FF
这看起来是随机的、但您可以在其中找到所需的结果、正如我在下面所标记的:
FF 00 00 00 FF 00 00 00 FF 00 00 FF 00 FF FF FF 00 FF FF FF FF FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF FF FF FF FF 00 FF FF FF FF FF FF FF FF
如果您取出红色部件并将其余部分放在一起、您实际上会得到所需的结果。 正如我说过的、我针对1到255的位组合对其进行了测试、您可以对所有位组合应用此模式。 接收的数据是我想要的两倍、总是四个字节错误、字节正确、四个字节错误等等...
这是我发现的、但我无法解释为什么会出现这种效果或如何消除这种效果。 可以帮帮我吗?
此致、
Benjamin
电路板:AM437x 工业开发套件(IDK)
CCS 版本: 7.2.0.00013
编译器版本:TI v2.1.5