|
在學(xué)習(xí)CAN的時候發(fā)現(xiàn)這個例程是用標(biāo)準(zhǔn)幀、回環(huán)模式,但是我需要改成擴展幀和多ID,看到手冊上說改IDE這個配置可以改成擴展幀,就是這個代碼 CAN_TxMessages[0].IDE = CAN_ID_STD; //設(shè)置為標(biāo)準(zhǔn)幀ID 此處可以改成擴展幀ID
但是除此之外還要怎么改?
uint8_t i = 0;
/* Init Transmit frame初始化發(fā)送幀*/
CAN_TxMessages[0].StdId = CAN_TX1_SID; //標(biāo)準(zhǔn)識別符
CAN_TxMessages[0].IDE = CAN_ID_STD; //設(shè)置為標(biāo)準(zhǔn)幀ID 此處可以改成擴展幀ID
CAN_TxMessages[0].RTR = CAN_RTRQ_DATA; // 數(shù)據(jù)幀
CAN_TxMessages[0].DLC = CAN_TXDLC_8; // 數(shù)據(jù)為8
for(i=0;i<CAN_TXDLC_8;i++)
{
CAN_TxMessages[0].Data[i]=CAN_Tx_Frame1_Data[i];
}
CAN_TxMessages[1].ExtId = CAN_TX2_EID;//擴展幀標(biāo)識符
CAN_TxMessages[1].IDE = CAN_ID_EXT;//設(shè)置成擴展幀
CAN_TxMessages[1].RTR = CAN_RTRQ_DATA;
CAN_TxMessages[1].DLC = CAN_TXDLC_8;
for(i=0;i<CAN_TXDLC_8;i++)
{
CAN_TxMessages[1].Data[i]=CAN_Tx_Frame2_Data[i];
}
這代碼是不是說CAN_TxMessages[0].為標(biāo)準(zhǔn)幀 而 CAN_TxMessages[1].為擴展幀?
然后要是改擴展幀的話過濾器試試不是也要改?
uint8_t Check_CANRxMessage(CanRxMessage* RxMessage) //檢查CAN接收消息
{
// 如果 接收消息是標(biāo)準(zhǔn)幀 與 接收消息不是發(fā)送CAN_TX1標(biāo)準(zhǔn)幀ID 或
// 接收消息是擴展幀 與 接收消息不是發(fā)送CAN_TX2擴展幀ID
if ( ((RxMessage->IDE == CAN_ID_STD) && (RxMessage->StdId != CAN_TX1_SID)) ||
((RxMessage->IDE == CAN_ID_EXT) && (RxMessage->ExtId != CAN_TX2_EID)) \
) return FAILED; //返回0
// 接收消息數(shù)據(jù)幀不是發(fā)送的數(shù)據(jù) 返回0
if ( RxMessage->RTR != CAN_RTRQ_DATA) return FAILED;
// 接收消息數(shù)據(jù)長度不是發(fā)送的數(shù)據(jù)長度 返回0
if ( RxMessage->DLC != CAN_TXDLC_8) return FAILED;
// 接收消息數(shù)據(jù)0位不是0x01 與 接收消息數(shù)據(jù)0位不是0x08 或
if ( ( (RxMessage->Data[0] != 0x01) && (RxMessage->Data[0] != 0x08) ) ||\
( (RxMessage->Data[1] != 0x02) && (RxMessage->Data[1] != 0x07) ) ||\
( (RxMessage->Data[2] != 0x03) && (RxMessage->Data[2] != 0x06) ) ||\
( (RxMessage->Data[3] != 0x04) && (RxMessage->Data[3] != 0x05) ) ||\
( (RxMessage->Data[4] != 0x05) && (RxMessage->Data[4] != 0x04) ) ||\
( (RxMessage->Data[5] != 0x06) && (RxMessage->Data[5] != 0x03) ) ||\
( (RxMessage->Data[6] != 0x07) && (RxMessage->Data[6] != 0x02) ) ||\
( (RxMessage->Data[7] != 0x08) && (RxMessage->Data[7] != 0x01) ) \
) return FAILED;//返回0
return PASSED;//返回1
}
就是這個函數(shù)嗎?
懇請大佬指點下 在這個例程上要改成擴展幀的話要改那幾個代碼?
|
|