This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号:TCAN4550-Q1
我正在编写自定义 TCAN4550驱动程序、但遇到了一点问题。
到目前为止、仅使用常规 CAN、无 CAN-FD 或扩展标识符。
接收数据似乎工作正常。 ID、DLC 和有效载荷都是我所期望的。
然而、在传输时、在另一端接收的帧似乎全为零?
ID、DLC 和有效载荷都是0。
我可以看到数据包发出(因为另一端实际上正在接收某些数据)、以及看到 TXBTO (0x10D8)寄存器中设置的位。
我怀疑 MRAM 的组织方式有问题 、我要求传输空缓冲区、可能吗?
设置期间的相关寄存器:
MRAM 0x8000..0x8800清零
TXBC = 0x20000000
TXESC = 0x0
TXEFC = 0x600 +(0 << 16)+(0 << 24)
器件处于"正常"模式、Rx 工作。
我用于传输消息的序列:
uint32_t 缓冲器[4];
CANID = 0x200;
RTR = 0;
DLC = 4;
Buffer[0]=(canId << 18)+(Rtr << 29);
Buffer[1]= DLC << 16;
Buffer[2]= 0xAA55BB66;
Buffer[3]= 0xF00DCAFE;// Filler,如用户指南第4.2节所示
uint32_t requestMask |=(1<<0);//暂时硬编码至缓冲器#0
然后、我将所有16个字节写入到 MRAM 的位置0x8000。
之后、我将"requestMask"写入 TXBAR。
一旦完成、消息将会熄灭、但其中全为零。
啊、没关系。 数据包实际上确实包含数据。 这是接收侧的一个错误。
这就是我为两种不同的架构同时开发驱动程序的目的。
James:
感谢您的跟进! 这听起来像是一个很好的新年礼物,找到了这个。
祝您于2024年快乐!
丹尼