您尚未登录。

楼主 # 2025-02-06 16:42:48

pineyer
会员
注册时间: 2025-01-06
已发帖子: 16
积分: 34

奇怪的test_can测试,本地 CAN口只能在收到本地另一can口的一次数据传输后才能正常接收到第三方设备发过来的数据。

硬件版本D213ECV_Demo V4.0,
软件版本V1.1.1,
me 打开 AIC_CAN_DRV_TEST ,编译下载,
aic /> can_rx
The can1 received thread is ready...

can盒(USBCAN FD 珠海创芯)工具发送数据,终端没反应(没收到数据)。
此时如果输入命令
can_tx 1a3#11.22.9a.88.ef.00
则打印出
can1 received msg:
ID: 0x1a3 DATA: 11 22 9a 88 ef 00
同时can盒界面也能收到can0发的数据

aic /> can_tx 1a3#11.22.9a.88.ef.00
can1 received msg:
ID: 0x1a3 DATA: 11 22 9a 88 ef 00

此时如果再用can盒调试工具发数据,can1也能收到数据了

aic /> can1 received msg:
ID: 0xa04a0 DATA: bd be bf c0 c1 c2 c3 c4
can1 received msg:
ID: 0xa04a0 DATA: be bf c0 c1 c2 c3 c4 c5
can1 received msg:
ID: 0xa04a0 DATA: bf c0 c1 c2 c3 c4 c5 c6
can1 received msg:
ID: 0xa0108 DATA: c0 c1 c2 c3 c4 c5 c6 c7

想问一下为什么必须(只能)在Tx(CAN0)打开给RX(CAN1)发送一次数据后,RX(CAN1)才能收到第三方(can盒)发送的数据???之前(仅RX_CAN:CAN1,can盒设备一直在系统)怎么操作(关闭、重新打开can盒软件)都不行。

离线

#1 2025-02-06 17:05:28

DoraemonK
会员
注册时间: 2022-08-25
已发帖子: 9
积分: 24

Re: 奇怪的test_can测试,本地 CAN口只能在收到本地另一can口的一次数据传输后才能正常接收到第三方设备发过来的数据。

有没有一种可能是:在没有发送之前,是listen only mode,发送数据,改成了normal mode。 所以正常了 

在listen only模式下,相当于你的can bus网络只有一个normal 节点[CAN 盒工具],一个节点是发不出去数据的[原因是:ACK信号]。

当你发送数据一帧以后模式改变了,canbus网络有两个节点。所以可以正常工作了。

以上愚见,仅供参考

离线

楼主 #2 2025-02-06 17:59:39

pineyer
会员
注册时间: 2025-01-06
已发帖子: 16
积分: 34

Re: 奇怪的test_can测试,本地 CAN口只能在收到本地另一can口的一次数据传输后才能正常接收到第三方设备发过来的数据。

发现问题更复杂一点,can盒有两个通道,我把两个通道并在了一起,正常的话一个通道发送数据出去一定会在另外一个通道上收到,发现D213 CAN1 收不到数时候can 盒的另外一个通道也没有收的数,可能是can盒的发送通道出错了。进一步测试发现:
1,单独can盒双通道并一起收发正常,
2,单独213demo can1收,can0发正常。
3,can盒+213 Can1 可以正常收发,can0 如果在线,则必须要打开,否则can盒 tx发不出数据。

这会不会是一个bug,如果总线设备上坏了(比如说cpu坏了),则会造成整个系统不能正常通讯?

离线

#3 2025-02-07 15:08:22

DoraemonK
会员
注册时间: 2022-08-25
已发帖子: 9
积分: 24

Re: 奇怪的test_can测试,本地 CAN口只能在收到本地另一can口的一次数据传输后才能正常接收到第三方设备发过来的数据。

挂上逻辑分析仪,理解一下ACK ,你就明白了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn