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.
大家好、
我的 TMS570LC43电路板有一些问题。
我实施了一个非常简单的代码来测试 CAN 通信。 我启用了回送功能,并尝试使用生成的 halgogen 函数"canUpdateID()"更新 ID。
问题是、成功更新消息 ID 后、我无法接收任何消息。
另一方面,如果不使用 "canUpdateID()",我通常会收到消息。并使用 halgogen 预配置 MessageID。
我用卤素原配置了消息盒、如下所示:
MessageBox[1 - 8]是 Tx-messagebox、分别包含消息 ID 1 - 8
MessageBox[9 - 16]是 Rx 消息框、分别包含消息 ID 9 - 16
我尝试使用我的代码修改前4个 Rx-messagebox 的信息 ID 以接收消息。
低于我的代码
uint8 i; uint32 ID; uint8数据[4][8]; uint8 Data[8]={1、2、3、3、5、6、7、8}; uint8 Data2[8]={8、7、4、93、2、1、0}; uint8数据阵列[4][8]; uint32 ResultOfTransmission; canInit(); canEnabableeloopback (canREG1、Internal_LBK); memcpy (&DataArray[0]、Data、8); memcpy (&DataArray[1][0]、Data2、8); memcpy (&DataArray[2][0]、Data、8); memcpy (&DataArray[3][0]、Data2、8); 对于(i = 1;i<= 4;i++){ ResultOfTransmission = canTransmit (canREG1、I、DataArray[I-1]); canUpdateID (canREG1、i + 8、i); } while (1){ 静态 uint32 j = 1; printf("****圆 nr %d***** ",j); if (j > 8){ if (canIsMessageBoxValid (canREG1、j)){ ID = canGetID (canREG1,j); if (canIsRxMessageArrived (canREG1, j )){ 静态 A = 0; 如果(A < 4){ ResultOfTransmission = canGetData (canREG1、j + 8、&data[a][0]); } A++; } /* kein else nötig */ } /* kein else nötig */ } J++; }
您好!
在原始设置中,由于 mailbox9~16的 ID 与传入邮件的 ID 不匹配,因此邮箱无法从 mailbox1~8获取回送数据。
如果将 mailbox9/10/11/12的 ID 更新为1/2/3/4,则他们应从 mailbox1/2/3/4获取回送数据。
是否可以使用内存浏览器(0xFF1E0128)检查邮箱9的 ID 是否已更新?
感谢您的回答、
问题是由于给定的消息 ID 不完整。 我必须 提供所有需要的信息(消息方向、消息 ID、...) IF2ARB 寄存器的说明。