一、新建工程
可參考往期推文:S32K344 VCU實戰(zhàn)項目之帶你入門篇
二、引腳配置
此實例選擇CAN0進(jìn)行配置。
三、外設(shè)配置
對于DMA,其采用的固定映射,對于通道0至通道15,其映射一部分外設(shè),通道16至通道31映射一部分外設(shè),所以對于外設(shè)要使用DMA,也需要注意此項。
添加外設(shè):
CAN基礎(chǔ)配置:
CAN的用戶回調(diào)配置:
中斷配置:
配置完畢后更新代碼:
四、部分代碼展示
/**
* @brief FlexCAN0中斷回調(diào)函數(shù)
*
* 該函數(shù)處理FlexCAN0模塊的各類事件,根據(jù)事件類型執(zhí)行相應(yīng)的處理邏輯。
* 主要負(fù)責(zé)接收和發(fā)送CAN消息。
*
* @param instance CAN實例號,此處固定為FlexCAN0。
* @param eventType 事件類型,指示當(dāng)前中斷的原因。
* @param buffIdx 接收緩沖區(qū)索引,指示接收消息所在的緩沖區(qū)。
* @param flexcanState FlexCAN狀態(tài)結(jié)構(gòu)體指針,包含F(xiàn)lexCAN模塊的當(dāng)前狀態(tài)信息。
*/
void FlexCAN0_Callback(uint8 instance, Flexcan_Ip_EventType eventType, uint32 buffIdx,
const Flexcan_Ip_StateType *flexcanState)
{
/* 忽略參數(shù),防止編譯器警告 */
(void)flexcanState;
(void)instance;
(void)buffIdx;
/* 根據(jù)事件類型執(zhí)行相應(yīng)的處理邏輯 */
switch(eventType)
{
case FLEXCAN_EVENT_RX_COMPLETE:
{
txData[7] = 0;
/* 設(shè)置消息ID類型為標(biāo)準(zhǔn)ID,準(zhǔn)備發(fā)送消息 */
tx_info.msg_id_type = FLEXCAN_MSG_ID_STD;
/* 發(fā)送消息,并從接收緩沖區(qū)讀取新消息 */
FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID, (uint8 *)&txData);
FlexCAN_Ip_Receive(INST_FLEXCAN_0, RX_MB_IDX, &rxData, FALSE);
}break;
case FLEXCAN_EVENT_RXFIFO_COMPLETE:
{
/* RXFIFO完成事件的處理邏輯 */
}break;
case FLEXCAN_EVENT_TX_COMPLETE:
{
/* TX完成事件的處理邏輯 */
}break;
case FLEXCAN_EVENT_ENHANCED_RXFIFO_COMPLETE:
{
/* 增強(qiáng)型RXFIFO完成事件的處理邏輯 */
}break;
case FLEXCAN_EVENT_ENHANCED_RXFIFO_WATERMARK:
{
/* 增強(qiáng)型RXFIFO水位標(biāo)記事件的處理邏輯 */
}break;
case FLEXCAN_EVENT_DMA_COMPLETE:
{
txData[7] = 11;
/* DMA完成事件的處理邏輯,發(fā)送消息并從FIFO讀取數(shù)據(jù) */
tx_info.msg_id_type = FLEXCAN_MSG_ID_STD;
FlexCAN_Ip_Send(INST_FLEXCAN_0, TX_MB_IDX, &tx_info, MSG_ID, (uint8 *)&txData);
FlexCAN_Ip_RxFifo(INST_FLEXCAN_0, &rxFifoData);
}break;
default:
{
/* 默認(rèn)情況下,不做任何處理 */
}break;
}
}
?五、注意事項
中斷配置回調(diào)函數(shù)注意事項:
六、Reference
20240224【車載VCU項目簡介】
20240226【車載VCU項目進(jìn)度1】
20240304【車載VCU項目進(jìn)度2】
20240308【車載VCU項目進(jìn)度3】
20240323【車載VCU項目進(jìn)度4】
20240420【車載VCU項目進(jìn)度5】
20240619【車載VCU項目進(jìn)度6】
20240719 【車載VCU項目進(jìn)度7】20240726 【車載VCU項目進(jìn)度8】