主题中讨论的其他器件:TM4C123
大家好、
我正在尝试使用 CAN 模块在2 tm4c123 launchpad 之间发送数据。
以下是接收器的代码:
int main(){ SysCtlClockSet (SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_MAIN|SYSCTAL_XTAL_16MHz); tCANMsgObject sMsgObjectRx; CAN0obj_Init();sMsgObjectFlags.ui32tm_sgObjectrx = 0x400;CANMsgMsg&sMsgObjectrx = 0xgId_sq_gId_gId=0&sq_gId_gId=0gObjectrx; CANEnable (CAN0_BASE); while (1){ while ((CANStatusGet (CAN0_BASE、CAN_STS_NEWDAT)& 1)= 0) { // //从消息对象中读取消息。 // CANMessageGet (CAN0_BASE、1、&sMsgObjectRx、TRUE); } uint8_t data = sMsgObjectRx.pui8MsgData[0]; 如果(数据= 0x33) GPIO_PORTF_DATA_R ^= 0x04; } void CAN0Rx_Init (void){ SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOB)){}; GPIOPinConfigure (GPIO_PB4_CAN0RX); GPIOPinConfigure (GPIO_PB5_CAN0TX); GPIOPinTypeCAN (GPIO_PORTB_BASE、GPIO_PIN_4|GPIO_PIN_5); SysCtlPeripheralEnable (SYSCTL_Periph_CAN0); while (!SysCtlPeripheralReady (SYSCTL_Periph_CAN0)){}; CANInit (CAN0_BASE); CANBitRateSet (CAN0_BASE、SysCtlClockGet ()、50000); CANEnable (CAN0_BASE); }
这里是发送器代码:
int main (void){ SysCtlClockSet (SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_MAIN|SYSCTL_XTAL_16MHz); CAN0_Init(); PORTF_Init();uSC_ui8data = 0x33;CANMsg8uintsq0=0=iQUSTx.0=iQUSTxi20=0=iQsqiS=0=0_IUSTx.0_IUSTnipu_Insq0=0=0=0=0_Iq0=0=0_Iq0_Iq0_Iq0=0=0=u&;Iq0=0_Iq0=0_Iq0_Iq0=0&;Iq0&;Iq0&;Iq0=0&;Iq0&;Iq0&;Iq0&;Iq0 CANMessageSet (CAN0_BASE,1,&sMsgObjectTx,MSG_OBJ_TYPE_TX); GPIO_PORTF_DATA_R ^= 0x02; SysTick80_delay_10ms (300); } 返回0; } void CAN0_Init (void){ SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOB)){} GPIOPinConfigure (GPIO_PB4_CAN0RX); GPIOPinConfigure (GPIO_PB5_CAN0TX); GPIOPinTypeCAN (GPIO_PORTB_BASE、GPIO_PIN_4|GPIO_PIN_5); SysCtlPeripheralEnable (SYSCTL_Periph_CAN0); while (!SysCtlPeripheralReady (SYSCTL_Periph_CAN0)){} CANInit (CAN0_BASE); CANBitRateSet (CAN0_BASE、SysCtlClockGet ()、50000); }
我使用板载 LED 进行切换、指示执行了传输命令。 但是、接收器不 响应。
有人可以帮助吗?
谢谢、
斯里特