• 正文
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

揭秘車載VCU項目之外掛界的“大哥”DMA

2024/07/30
2663
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

一、新建工程

可參考往期推文:S32K344 VCU實戰(zhàn)項目之帶你入門篇

二、引腳配置

此實例選擇CAN0進行配置。

三、外設(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)的處理邏輯。 * 主要負責(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:        {            /* 增強型RXFIFO完成事件的處理邏輯 */        }break;        case FLEXCAN_EVENT_ENHANCED_RXFIFO_WATERMARK:        {            /* 增強型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:        {            /* 默認情況下,不做任何處理 */        }break;    }}

?五、注意事項

中斷配置回調(diào)函數(shù)注意事項:

六、Reference

20240224【車載VCU項目簡介】

20240226【車載VCU項目進度1】

20240304【車載VCU項目進度2】

20240308【車載VCU項目進度3】

20240323【車載VCU項目進度4】

20240420【車載VCU項目進度5】

20240619【車載VCU項目進度6】

20240719 【車載VCU項目進度7】20240726 【車載VCU項目進度8】

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
TS5A23159DGSRG4 1 Texas Instruments 1-Ω on-state resistance, 5-V, 2:1 (SPDT), 2-channel analog switch with powered-off protection 10-VSSOP -40 to 85

ECAD模型

下載ECAD模型
$7.1 查看
ADG1409YRUZ 1 Analog Devices Inc 4 Ω Ron, 4-Channel ±15 V/+12 V/±5 V iCMOS Multiplexer

ECAD模型

下載ECAD模型
$7.94 查看
NE555DRG4 1 Texas Instruments Single Precision Timer 8-SOIC 0 to 70

ECAD模型

下載ECAD模型
$0.39 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

微信公眾號《朱老師IT充電站》主筆。先后從事電子工程師、單片機軟件工程師、嵌入式linux軟件工程師、物聯(lián)網(wǎng)軟件工程師、架構(gòu)師等工作,教育品牌<朱老師物聯(lián)網(wǎng)大講堂>創(chuàng)始人,暢銷書作者。擅長U-Boot、linux kernel等嵌入式底層和系統(tǒng)層開發(fā)、架構(gòu)設(shè)計。擅長匯編、C/C++、Java、C#等常用開發(fā)語言。被授予:IBM技術(shù)專家、華為云享專家、51CTO學(xué)院金牌講師等稱號。