Part Number:LAUNCHXL-F28379D
我在测试例程can_ex4_simple_transimt时,我加入接收数据程序后发现能发送成功就是接收不到数据?
这是main函数
void main(void)
{
//
// Initialize device clock and peripherals
//
Device_init();
//
// Initialize GPIO and configure GPIO pins for CANTX/CANRX
// on module A
//
Device_initGPIO();
GPIO_setPinConfig(DEVICE_GPIO_CFG_CANRXB);
GPIO_setPinConfig(DEVICE_GPIO_CFG_CANTXB);
//
// Initialize the CAN controllers
//
CAN_initModule(CANB_BASE);
//
// Set up the CAN bus bit rate to 500kHz for each module
// Refer to the Driver Library User Guide for information on how to set
// tighter timing control. Additionally, consult the device data sheet
// for more information about the CAN module clocking.
//
CAN_setBitRate(CANB_BASE, DEVICE_SYSCLK_FREQ, 500000, 20);
//
// Initialize the transmit message object used for sending CAN messages.
// Message Object Parameters:
// CAN Module: A
// Message Object ID Number: 1
// Message Identifier: 0x95555555
// Message Frame: Extended
// Message Type: Transmit
// Message ID Mask: 0x0
// Message Object Flags: None
// Message Data Length: 4 Bytes
//
CAN_setupMessageObject(CANB_BASE, TX_MSG_OBJ_ID, 0x95555555,
CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0,
CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
//设置接收消息对象(加入)
CAN_setupMessageObject(CANB_BASE, 2, 0x95555556,
CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_RX, 0,
CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
//
// Initialize the transmit message object data buffer to be sent
//
txMsgData[0] = 0x01;
txMsgData[1] = 0x23;
txMsgData[2] = 0x45;
txMsgData[3] = 0x67;
txMsgData[4] = 0x89;
txMsgData[5] = 0xAB;
txMsgData[6] = 0xCD;
txMsgData[7] = 0xEF;
//
// Start CAN module A operations
//
CAN_startModule(CANB_BASE);
//
// Transmit messages from CAN-A
//
while(1)
//
// Comment for infinite transmissions
//
//for(i = 0; i < TXCOUNT; i++)
//
{
CAN_sendMessage(CANB_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH, txMsgData);
DEVICE_DELAY_US(1000000);
//
// Poll TxOk bit in CAN_ES register to check completion of transmission
//
while(((HWREGH(CANB_BASE + CAN_O_ES) & CAN_ES_TXOK)) != CAN_ES_TXOK)
{
}
//接收消息轮询(加入)
if(((HWREGH(CANB_BASE + CAN_O_ES) & CAN_ES_RXOK)) == CAN_ES_RXOK)
{
//
// Get the received message
//
CAN_readMessage(CANB_BASE, 2, rxMsgData);
}
}
//
// Stop application
//
asm(" ESTOP0");
}
Green Deng:
这个例程是对外发送的,原例程需要外接CAN收发器之后对外发送接收,所以不知道你的外部硬件有没有加CAN收发器?
,
user6574429:
你好,我已经连接了CAN_2E_U收发器,并且能够发送数据到上位机软件,收发器上接了120的终端电阻,上位机软件波特率设为500k
,
user6574429:
麻烦您看到回复一下,谢谢,我发现每次向dsp发数据,收发器的指示灯都会闪烁一下,但是dsp接收不到消息,请问这是什么原因造成的?
,
Green Deng:
你好,因为库函数的原因,很多配置看不到。
这样,你得先确认一下接收不到消息是因为接收引脚没有信号还是有信号了但芯片没有读取,可以用示波器测一下收发引脚的波形。
另外,仔细检查一下引脚有没有配置对有条件的话可以另外找一块板发送,然后测接收板是否能接收到信号。