0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于恩智浦MPC5744P的CAN驅(qū)動開發(fā)和測試

嵌入式程序員 ? 來源:嵌入式程序猿 ? 作者:武國平 ? 2021-09-03 11:35 ? 次閱讀

摘要

本篇筆記主要記錄基于恩智浦MPC5744P的CAN驅(qū)動開發(fā)和測試,接口設(shè)計,封裝為BSP驅(qū)動,為之后實現(xiàn)CAN的高層通信打下基礎(chǔ)。。

準備工作

安裝S32DS for PA, 因為我們在S32DS下開發(fā)MPC5744P。

安裝S32DS 的SDK, 我們使用最新版3.0.3

CAN

恩智浦的MPC5744P控制器局域網(wǎng)絡(luò)CAN,跟我們之前使用的恩智浦Kinetis KV, 等系列的flexCAN結(jié)構(gòu)基本是一樣的,MPC5744P不僅僅支持經(jīng)典CAN,還支持CANFD。

從系統(tǒng)框圖也可以看出,總體包含消息緩沖RAM,發(fā)送仲裁,接收匹配,和協(xié)議引擎。要正常與其他CAN設(shè)備通信,必須外接收發(fā)器。關(guān)于MPC5744P的 flexCAN模塊的特性可以參考收據(jù)手冊,這里不在贅述。有四種工作模式,正常模式,監(jiān)聽模式,回環(huán)模式,和禁止模式。CAN外設(shè)的寄存器比較多,需要多參考查閱手冊。

消息緩沖區(qū)結(jié)構(gòu)

恩智浦不管是ARM系列還是PA系列架構(gòu)的片子, flexCAN模塊的消息緩沖機制基本都是一樣的。這個結(jié)構(gòu)非常重要,是CAN消息數(shù)據(jù)處理的基礎(chǔ),SDK底層這部分的處理代碼就是按照這個結(jié)構(gòu)。自己實現(xiàn)代碼也必須是按照這個結(jié)構(gòu)去實現(xiàn)。

更多CAN詳細的介紹請參考官方收據(jù)手冊。

驅(qū)動實現(xiàn)

良好的驅(qū)動封裝,可以方便應(yīng)用開發(fā),并且可以容易移植到其他項目,代碼重用率高,所以數(shù)據(jù)和接口是你不得不考慮的問題,怎么樣方便的實現(xiàn),還要通用易用。

數(shù)據(jù)封裝

首先根據(jù)MPC5744P的CAN外設(shè)結(jié)構(gòu),我們來封裝數(shù)據(jù)結(jié)構(gòu)體,方便后面軟件實現(xiàn)開發(fā),可以新建bsp_can.c和bsp_can.h, 在頭文件中封裝結(jié)構(gòu)體定義。

88563cf6-0be0-11ec-8fb8-12bb97331649.png

在.c文件中定義封裝一些變量,這些變量數(shù)組也是通用,在多款產(chǎn)品中都采用,大家也可以參照。

886685a2-0be0-11ec-8fb8-12bb97331649.png

可以實現(xiàn)多個CAN口驅(qū)動。如果只有一個CAN口,將CAN_PORTS宏定義為1,幾個就定義為幾。

這個封裝大家可以記著,我在多款器件上都是這么封裝的,之前在NXP的KE06, KEA, KV46, K64等系列,在ST的F103, F446, H743等等CAN通信都采用這種封裝BSP驅(qū)動。

初始化

參考官方的例程,根據(jù)自己的硬件去實現(xiàn),做相應(yīng)修改。我們一般發(fā)送接收要采用中斷或者DMA實現(xiàn),這里以中斷方式實現(xiàn),根據(jù)實際可能還需要添加濾波,配置緩沖等。

888491dc-0be0-11ec-8fb8-12bb97331649.png

中斷回調(diào)函數(shù)

最主要的就是通信傳輸回調(diào)函數(shù)的實現(xiàn),MPC5744P的回調(diào)函數(shù)參數(shù)有事件,所以可以根據(jù)事件來判斷是接收還是發(fā)送。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2754

    瀏覽量

    463718
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6032

    瀏覽量

    135995
  • 封裝
    +關(guān)注

    關(guān)注

    126

    文章

    7902

    瀏覽量

    142966

原文標題:用這種結(jié)構(gòu)做CAN通信數(shù)據(jù)封裝太爽了

文章出處:【微信號:InterruptISR,微信公眾號:嵌入式程序員】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    eIQ Time Series Studio 工具使用全攻略

    ? 基本介紹 eIQ Time Series Studio(簡稱eIQ TSS)是半導(dǎo)體推出的一款專為嵌入式微控制器設(shè)計的基于時間序列的AI和機器學(xué)習(xí)開發(fā)套件。它集成了自動機器學(xué)習(xí)功能,旨在
    的頭像 發(fā)表于 12-12 09:37 ?700次閱讀
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>eIQ Time Series Studio 工具使用全攻略

    使用無線FRDM開發(fā)板實現(xiàn)創(chuàng)新無線解決方案

    開發(fā)人員現(xiàn)在面臨著前所未有的挑戰(zhàn),需要為各種產(chǎn)品設(shè)計復(fù)雜的軟件,通常還要使用不同的處理器。的MCUXpresso Developer Experience通過適用于多種MCU平臺的通用框架解決了許多挑戰(zhàn)。
    的頭像 發(fā)表于 11-26 17:40 ?367次閱讀
    使用<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>無線FRDM<b class='flag-5'>開發(fā)</b>板實現(xiàn)創(chuàng)新無線解決方案

    發(fā)布首個UWB無線BMS解決方案

    汽車市場值得信賴的創(chuàng)新解決方案合作伙伴半導(dǎo)體發(fā)布新一代無線電池管理系統(tǒng)(BMS)解決方案,擁有業(yè)內(nèi)最豐富的UWB產(chǎn)品組合之一,方案集成了UWB的強大功能。新一代UWB BM
    的頭像 發(fā)表于 11-26 17:36 ?656次閱讀

    基于MCX N系列MCU的應(yīng)用示例

    全新MCX微控制器系列,為新一代工業(yè)與物聯(lián)網(wǎng)廣泛的應(yīng)用賦能,受到廣大邊緣智能開發(fā)者的青睞。
    的頭像 發(fā)表于 10-25 14:26 ?635次閱讀

    和采埃孚合作開發(fā)基于SiC的電動汽車牽引逆變器解決方案

    半導(dǎo)體宣布與電動汽車領(lǐng)域領(lǐng)先企業(yè)采埃孚股份公司(ZF Friedrichshafen AG)合作下一代基于SiC的電動汽車(EV)牽引逆變器解決方案。解決方案采用先進的GD
    的頭像 發(fā)表于 08-27 09:48 ?1226次閱讀

    【龍芯2K0300蜂鳥板試用】CAN接口驅(qū)動板設(shè)計、CANFD測試、CAN C++程序驅(qū)動測試

    繪制接口板 3k0300支持4路CANFD,從原理圖來看,只是把TX和RX放出來了,并沒有差分收發(fā)器IC。 為了測試CAN功能,必須先做一個驅(qū)動板。 兩路CANFD擠在一個6P
    發(fā)表于 08-25 21:09

    舉辦汽車生態(tài)技術(shù)峰會,并發(fā)布全新S32 CoreRide開放平臺

    半導(dǎo)體于杭州舉辦為期兩日的汽車生態(tài)技術(shù)峰會,并發(fā)布全新S32 CoreRide開放平臺。
    的頭像 發(fā)表于 05-31 09:23 ?3278次閱讀
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>舉辦汽車生態(tài)技術(shù)峰會,并發(fā)布全新S32 CoreRide開放平臺

    在杭州召開汽車生態(tài)技術(shù)峰會,推出全新S32 CoreRide開放平臺

    峰會上,正式在中國發(fā)布了S32 CoreRide開放平臺,該平臺融合了成熟的S32計算、網(wǎng)絡(luò)、系統(tǒng)電源管理技術(shù),以及來自
    的頭像 發(fā)表于 05-30 16:59 ?1339次閱讀

    FRDM-MCXN947開發(fā)實踐指南》上線啦

    RT-Thread率先支持NXPFRDM-MCXN947,并聯(lián)合半導(dǎo)體推出了NXPFRDM-MCXN947開發(fā)板評測活動。測評活動順利完成,并且有了不錯的產(chǎn)出,我們將大家的測試
    的頭像 發(fā)表于 05-13 18:19 ?551次閱讀
    《<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>FRDM-MCXN947<b class='flag-5'>開發(fā)</b>實踐指南》上線啦

    發(fā)布S32 CoreRide開放平臺,旨在突破SDV開發(fā)的集成障礙

    近日,(NXP)近日發(fā)布了其S32 CoreRide開放平臺,這一創(chuàng)新性的平臺旨在突破軟件定義汽車(SDV)開發(fā)的集成障礙,為汽車行業(yè)帶來前所未有的變革。
    的頭像 發(fā)表于 03-29 11:18 ?12.9w次閱讀

    發(fā)布年度企業(yè)可持續(xù)發(fā)展報告

    ESG目標方面的年度進展。 總裁兼首席執(zhí)行官Kurt Sievers表示:“作為一家全球性科技公司,我們擁有得天獨厚的機遇去引領(lǐng)和開發(fā)創(chuàng)新解決方案,助力塑造更加可持續(xù)的未來。在所有團隊成員、合作伙伴和客戶的幫助與持續(xù)奉獻下
    的頭像 發(fā)表于 03-29 09:36 ?1032次閱讀

    NVIDIA TAO工具套件功能與eIQ機器學(xué)習(xí)開發(fā)環(huán)境的集成

    半導(dǎo)體宣布與NVIDIA合作,將NVIDIA經(jīng)過訓(xùn)練的人工智能模型通過eIQ機器學(xué)習(xí)開發(fā)環(huán)境部署到廣泛的邊緣處理產(chǎn)品組合中。
    的頭像 發(fā)表于 03-22 09:11 ?972次閱讀

    RT-Thread成為注冊合作伙伴,共同賦能工業(yè)與物聯(lián)網(wǎng)應(yīng)用開發(fā)!

    前不久,半導(dǎo)體加入RT-Thread全球合作伙伴計劃,成為RT-Thread高級會員合作伙伴。同時,RT-Thread現(xiàn)已成為注冊合作伙伴。
    的頭像 發(fā)表于 03-15 09:15 ?867次閱讀

    發(fā)布新一代智能語音技術(shù)組合的語音識別引擎

    發(fā)布新一代智能語音技術(shù)組合的語音識別引擎。本文將探討開發(fā)人員在嵌入式語音控制設(shè)計中面臨的挑戰(zhàn)、新的Speech to Inten
    的頭像 發(fā)表于 01-26 09:15 ?763次閱讀
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>發(fā)布新一代智能語音技術(shù)組合的語音識別引擎

    與MicroEJ共同開發(fā)新平臺加速器

    與MicroEJ共同開發(fā)的新平臺加速器,利用具有標準API的軟件容器,為工業(yè)和物聯(lián)網(wǎng)邊緣應(yīng)用帶來與智能手機類似的軟件設(shè)計靈活性,幫助客戶大幅降低開發(fā)成本,縮短產(chǎn)品上市時間。
    的頭像 發(fā)表于 01-22 10:16 ?729次閱讀