加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、新建工程
    • 二、引腳配置
    • 三、外設(shè)配置
    • 四、部分代碼展示
    • ?五、注意事項(xiàng)
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

揭秘車載VCU項(xiàng)目之外掛界的“大哥”DMA

07/30 10:20
1455
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一、新建工程

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

二、引腳配置

此實(shí)例選擇CAN0進(jìn)行配置。

三、外設(shè)配置

對于DMA,其采用的固定映射,對于通道0至通道15,其映射一部分外設(shè),通道16至通道31映射一部分外設(shè),所以對于外設(shè)要使用DMA,也需要注意此項(xiàng)。

添加外設(shè):

CAN基礎(chǔ)配置:

CAN的用戶回調(diào)配置:

中斷配置:

配置完畢后更新代碼:

四、部分代碼展示

/** * @brief FlexCAN0中斷回調(diào)函數(shù) * * 該函數(shù)處理FlexCAN0模塊的各類事件,根據(jù)事件類型執(zhí)行相應(yīng)的處理邏輯。 * 主要負(fù)責(zé)接收和發(fā)送CAN消息。 * * @param instance CAN實(shí)例號,此處固定為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;    }}

?五、注意事項(xiàng)

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

六、Reference

20240224【車載VCU項(xiàng)目簡介】

20240226【車載VCU項(xiàng)目進(jìn)度1】

20240304【車載VCU項(xiàng)目進(jìn)度2】

20240308【車載VCU項(xiàng)目進(jìn)度3】

20240323【車載VCU項(xiàng)目進(jìn)度4】

20240420【車載VCU項(xiàng)目進(jìn)度5】

20240619【車載VCU項(xiàng)目進(jìn)度6】

20240719 【車載VCU項(xiàng)目進(jìn)度7】20240726 【車載VCU項(xiàng)目進(jìn)度8】

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價格 更多信息
NE555DRG4 1 Texas Instruments Single Precision Timer 8-SOIC 0 to 70

ECAD模型

下載ECAD模型
$0.39 查看
ADG1436YRUZ-REEL7 1 Analog Devices Inc 1.5 Ω On Resistance, ±15 V/12 V/±5 V, iCMOS®, Dual SPDT Switch

ECAD模型

下載ECAD模型
$6 查看
AD22293Z 1 Analog Devices Inc Precision ±1.7 g, ±5 g, ±18 g Dual-Axis iMEMS® Accelerometer
暫無數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

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