最近在搞CAN通信部分,在测试TI给的例程TXLOOP.c的时候,发现程序总是停在 while(ECanaRegs.CANTA.bit.TA5 == 0 ) {} // Wait for TA5 bit to be set..这一句上,也就是说CANTA5就没有置位,然后就发送不出任何东西。查找了很多资料说是CAN总线上没有接收节点,但是在输出端TX引脚上接上示波器,没有效果;在经过CAN收发器之后,在CANH和CANL端也没有任何反应。为了测试手不是硬件问题,我用28335的开发板和demo例程也试过了,一样的问题,都是停在等待置位的那句话上。想问一下,例程里面是有BUG么?还是我需要如何外加配置才能通过?
user151383853:
既然有两块板, 不如连接起来一起调试.
也可以先用环回模式调试.
根据 CAN 协议, 发送数据后, 需要接收节点在数据包结束处发送回应信息
最近在搞CAN通信部分,在测试TI给的例程TXLOOP.c的时候,发现程序总是停在 while(ECanaRegs.CANTA.bit.TA5 == 0 ) {} // Wait for TA5 bit to be set..这一句上,也就是说CANTA5就没有置位,然后就发送不出任何东西。查找了很多资料说是CAN总线上没有接收节点,但是在输出端TX引脚上接上示波器,没有效果;在经过CAN收发器之后,在CANH和CANL端也没有任何反应。为了测试手不是硬件问题,我用28335的开发板和demo例程也试过了,一样的问题,都是停在等待置位的那句话上。想问一下,例程里面是有BUG么?还是我需要如何外加配置才能通过?
lv YB:
回复 user151383853:
自测模式试过了,是可以运行的,如果说是需要接收节点在数据包结束处发送回应信息的话,我在发送端TX或者转换芯片之后的CANH和CANL处接示波器不是应该也可以的么?
最近在搞CAN通信部分,在测试TI给的例程TXLOOP.c的时候,发现程序总是停在 while(ECanaRegs.CANTA.bit.TA5 == 0 ) {} // Wait for TA5 bit to be set..这一句上,也就是说CANTA5就没有置位,然后就发送不出任何东西。查找了很多资料说是CAN总线上没有接收节点,但是在输出端TX引脚上接上示波器,没有效果;在经过CAN收发器之后,在CANH和CANL端也没有任何反应。为了测试手不是硬件问题,我用28335的开发板和demo例程也试过了,一样的问题,都是停在等待置位的那句话上。想问一下,例程里面是有BUG么?还是我需要如何外加配置才能通过?
Hank Zhao:
回复 lv YB:
CAN通信至少需要有两个节点,单个的控制器无法通过transceiver发出信息。