“SPI轉(zhuǎn)CAN-FD”是嵌入式開發(fā)領域的常用方法,它極大地促進了不同通信接口之間的無縫連接,并顯著降低了系統(tǒng)設計的復雜性。飛凌嵌入式依托瑞芯微RK3562J處理器打造的OK3562J-C開發(fā)板因為內(nèi)置了SPI轉(zhuǎn)CAN-FD驅(qū)動,從而原生支持這一功能。該開發(fā)板特別設計了一組SPI引腳【P8】,專為SPI轉(zhuǎn)CAN-FD應用而引出,為用戶提供了極大的便利。 MCP2518FD是一款在各行業(yè)中都有著廣泛應用的CAN-FD控制器芯片,本文就將為大家介紹如何在飛凌嵌入式RK3562J開發(fā)板上適配MCP2518FD芯片。 1.適配驅(qū)動 RK3562J的內(nèi)核中已經(jīng)具備MCP2518FD的驅(qū)動文件,要在配置文件中將驅(qū)動配置進內(nèi)核,在kernel下打開圖形化配置界面make menuconfig ARCH=arm64。(1) 按下 ‘/’ 鍵進入搜索界面,輸入 mcp251 可搜索MCP2518驅(qū)動: ![]() 上圖中的CAN_MCP251XFD就是適配MCP2518FD模塊的驅(qū)動。 (2) 選擇 2 將其打 * 編譯進內(nèi)核: ![]() (3)選擇 save 保存配置到defconfig文件,文件路徑: /home/forlinx/3562/OK3562-linuxsource/kernel/arch/arm64/configs/OK3562_Linux_defconfig 2.適配設備樹 (1) 飛凌嵌入式RK3562J開發(fā)板已引出一組SPI引腳: ![]() OK3562-C-common.dtsi (3) 具體的配置信息如下:
② 模塊上有的 INT 腳是模塊的中斷腳,在適配時需要連接一個可控的GPIO引腳作為終端腳; ③ 在 spi2 節(jié)點下添加匹配MCP2518驅(qū)動的設備樹信息,compatible 信息不能出錯,這是匹配驅(qū)動的重要屬性。 3.編譯燒寫 將以上的驅(qū)動和設備樹配置好后,編譯內(nèi)核燒寫進開發(fā)板就可以測試了: (1) 在源碼目錄下單獨編譯kernel:
(2) 將鏡像文件燒錄到開發(fā)板,需要用到工具 RKDevTool ,此工具在OK3562的資料包里可以找到: ① 打開燒寫工具; ② 用Type-C數(shù)據(jù)線連接PC和開發(fā)板底部的Type-C0接口; ③ 按住開發(fā)板的Recovery鍵不要松開,重啟開發(fā)板; ④ 注意工具會識別到開發(fā)板是否進入燒錄狀態(tài)。 ![]() ⑤ 擇之前編譯好的 boot.img 鏡像文件,在boot選項前面打勾,點擊執(zhí)行進行燒寫,燒寫完成會自動重啟開發(fā)板 4.功能測試 在開發(fā)板內(nèi)搜索can節(jié)點,使用 ifconfig -a 命令 ![]() 可以看到生成的can0節(jié)點。接下來的功能測試,我們采用OK3562J-C和OK3568-C兩塊開發(fā)板的can0進行數(shù)據(jù)互發(fā)測試。 (1) OK3562J-C開發(fā)板接收數(shù)據(jù): ① 設置can0的波特率
![]() ③ 配置OK3568-C開發(fā)板的can0作為客戶端,發(fā)送信息給OK3562J-C開發(fā)板的can0
![]() ④ OK3562J-C開發(fā)板會收到OK3568發(fā)來的消息 (注:上圖中出現(xiàn)的報錯是MCP2518FD驅(qū)動的問題,測試不會影響通信。) (2) OK3562J-C開發(fā)板發(fā)送數(shù)據(jù): ① 設置波特率等操作同上,在配置功能時要使用 cansend 命令發(fā)送數(shù)據(jù)。 ![]() ② OK3568-C依照OK3562-C的方法配置成接收數(shù)據(jù)的服務端。
![]() 可以看到,兩塊開發(fā)板可以進行正常的數(shù)據(jù)互發(fā)。以上是飛凌嵌入式RK3562J開發(fā)板適配和測試MCP2518FD模塊的全部過程,希望能夠?qū)Υ蠹业捻椖块_發(fā)有所幫助。 |
微信圖片_2025-04-25_113658_904.png (51.83 KB)