我想用AM335x的DCAN通过CAN总线控制几个DSP节点,双方设置了相同的波特率和采样点,但是就是无法通信,收发器用的都是TI的SN65HVD230,请问有人能帮我解决下这个问题吗?谢谢。
Steven Liu1:
信息有点太少了。
建议你参考着我们的DCAN User guide进行AM335x这边的设置,然后用分析仪或者是另一块AM335x的板子确认相应的CAN数据包这边有没有发送成功。
这样有助于你辨识是在335这边出的问题,还是在外部出的问题。
如果是裸跑的Starterware,里面应该有收发例程;如果是用Linux可以参考如下:
Linux SDK 7.0 :http://processors.wiki.ti.com/index.php/Linux_Core_DCAN_User%27s_Guide
Linux SDK 6.0及之前:http://processors.wiki.ti.com/index.php/AM335X_DCAN_Driver_Guide
Xiaomin Zhou:
回复 Steven Liu1:
谢谢您的回答,我已经解决了,是CAN波特率的问题,我还想问下CAN的波特率是不是不能自己随便设置,我设置两块DSP的CAN波特率为500000,采样点87.5%(我自己算的参数),它们无法通信,换成文档里的就可以了。另外linux socketcan的波特率是怎么算的,我设置bitrate 500000 sample-point 0.8,然后查看can0,发现实际上bitrate是500000,但是采样点是0.75,不知道里面是怎么计算的
Steven Liu1:
回复 Xiaomin Zhou:
我没有深入研究过,建议你可以看一下AM335x的TRM手册 23.3.16 CAN Bit Timing章节,这里面说的倒是蛮详细的。
The DCAN supports bit rates between less than 1 kBit/s and 1000 kBit/s.