在使用can_loopback_cpu1例程时,程序启动了CAN A模块,并自发自收。根据手册,可以看出can模块内部Tx和Rx是连接在一起的。
现在我将该例程进行了改进,按照例程的模板,启动了CAN B模块,通过外部导线将CAN A与CAN B的H L信号线连接在一起。
同时,屏蔽了以下代码:
HWREG(CANA_BASE + CAN_O_CTL) |= CAN_CTL_TEST;
HWREG(CANA_BASE + CAN_O_TEST) = CAN_TEST_EXL;
HWREG(CANB_BASE + CAN_O_CTL) |= CAN_CTL_TEST;
HWREG(CANB_BASE + CAN_O_TEST) = CAN_TEST_EXL;
此时,我通过发送指令:
CANMessageSet(CANA_BASE, 1, &sCANATXCANMessage, MSG_OBJ_TYPE_TX);
CANMessageSet(CANB_BASE, 3, &sCANBTXCANMessage, MSG_OBJ_TYPE_TX);
与接收指令:
CANMessageGet(CANA_BASE, 2, &sCANARXCANMessage, true);
CANMessageGet(CANB_BASE, 4, &sCANBRXCANMessage, true);
发现两个CAN模块无法发送与接收。但如果启动这段代码:
HWREG(CANA_BASE + CAN_O_CTL) |= CAN_CTL_TEST;
HWREG(CANA_BASE + CAN_O_TEST) = CAN_TEST_EXL;
HWREG(CANB_BASE + CAN_O_CTL) |= CAN_CTL_TEST;
HWREG(CANB_BASE + CAN_O_TEST) = CAN_TEST_EXL;
模块又可以正常工作,并且两个CAN模块收到的都是自己发送出去的数据。
想请教一下,我该如何修改例程,可以使CAN模块正常工作?
TI中文支持网



