“SPI轉(zhuǎn)CAN-FD”是嵌入式開發(fā)領(lǐng)域的常用方法,它極大地促進了不同通信接口之間的無縫連接,并顯著降低了系統(tǒng)設(shè)計的復(fù)雜性。飛凌嵌入式依托瑞芯微RK3562J處理器打造的OK3562J-C開發(fā)板因為內(nèi)置了SPI轉(zhuǎn)CAN-FD驅(qū)動,從而原生支持這一功能。該開發(fā)板特別設(shè)計了一組SPI引腳【P8】,專為SPI轉(zhuǎn)CAN-FD應(yīng)用而引出,為用戶提供了極大的便利。
MCP2518FD是一款在各行業(yè)中都有著廣泛應(yīng)用的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、適配設(shè)備樹
(1) 飛凌嵌入式RK3562J開發(fā)板已引出一組SPI引腳:

(2) 驅(qū)動配置完成后要配置的是設(shè)備樹文件:
OK3562-C-common.dtsi
(3) 具體的配置信息如下:
diff --git a/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi b/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi index 158f03d70..671a491bf 100644 --- a/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi +++ b/arch/arm64/boot/dts/rockchip/OK3562-C-common.dtsi @@ -19,6 +19,12 @@ model = "Forlinx OK3562 Board";
compatible = "forlinx,ok3562","rockchip,rk3562";
+ mcp2518_clk: mcp2518-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <40000000>; + };
+ forlinx-control { status = "disabled"; disp_type = "mipi"; //mipi or lvds @@ -662,6 +668,13 @@ }; &pinctrl { + + mcp2518 { + mcp2518_irq_pins:mcp2518_irq_pins
{ + rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + touch { gt928_lvds_gpio:gt928-lvds-gpio { rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>, @@ -980,13 +993,24 @@ &spi2 { + pinctrl-names = "default";
+ pinctrl-0 = <&spi2m0_csn0 &spi2m0_csn1 &spi2m0_pins>; status = "okay"; - spi_dev0: spi@0 { +/* spi_dev0: spi@0 { compatible = "rohm,dh2228fv";
2 / 5 pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; + };*/ + spi@0{ + compatible = "microchip,mcp2518fd"; + reg = <0>; + clocks = <&mcp2518_clk>;
+ pinctrl-names = "default"; + pinctrl-0 = <&mcp2518_irq_pins>;
+ spi-max-frequency = <20000000>;
+ interrupts-extended= <&gpio4 RK_PB0 IRQ_TYPE_LEVEL_LOW>;
};
};
① mcp2518_clk 是時鐘頻率節(jié)點,要匹配模塊實際的晶振頻率;
② 模塊上有的 INT 腳是模塊的中斷腳,在適配時需要連接一個可控的GPIO引腳作為終端腳;
③ 在 spi2 節(jié)點下添加匹配MCP2518驅(qū)動的設(shè)備樹信息,compatible 信息不能出錯,這是匹配驅(qū)動的重要屬性。
3、編譯燒寫
將以上的驅(qū)動和設(shè)備樹配置好后,編譯內(nèi)核燒寫進開發(fā)板就可以測試了:
(1) 在源碼目錄下單獨編譯kernel:
forlinx@ubuntu:~/3562/OK3562-linux-source$ ./build.sh kernel
在源碼目錄下的kernel目錄下會生成鏡像文件 boot.img
(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ù):
① 設(shè)置can0的波特率
ip link set can0 type can bitrate 500000
② 打開can0設(shè)備,并把can0設(shè)置成服務(wù)端接收數(shù)據(jù)
ifconfig can0 up //打開can0設(shè)備
candump can0& //can0設(shè)備設(shè)置成服務(wù)端

③ 配置OK3568-C開發(fā)板的can0作為客戶端,發(fā)送信息給OK3562J-C開發(fā)板的can0
ifconfig can0 down
ip link set can0 up type can bitrate 500000
ifconfig can0 up
cansend can0 123#1122334aabbccd //發(fā)送信息

④ OK3562J-C開發(fā)板會收到OK3568發(fā)來的消息

(注:上圖中出現(xiàn)的報錯是MCP2518FD驅(qū)動的問題,測試不會影響通信。)
(2) OK3562J-C開發(fā)板發(fā)送數(shù)據(jù):
① 設(shè)置波特率等操作同上,在配置功能時要使用 cansend 命令發(fā)送數(shù)據(jù)。

② OK3568-C依照OK3562-C的方法配置成接收數(shù)據(jù)的服務(wù)端。
ifconfig can0 down
ip link set can0 up type can bitrate 500000
ifconfig can0 up
candump can0&

可以看到,兩塊開發(fā)板可以進行正常的數(shù)據(jù)互發(fā)。以上是飛凌嵌入式RK3562J開發(fā)板適配和測試MCP2518FD模塊的全部過程,希望能夠?qū)Υ蠹业捻椖块_發(fā)有所幫助。
-
控制器
+關(guān)注
關(guān)注
114文章
16838瀏覽量
182255 -
嵌入式
+關(guān)注
關(guān)注
5125文章
19438瀏覽量
313072 -
Linux
+關(guān)注
關(guān)注
87文章
11420瀏覽量
212319 -
CANFD
+關(guān)注
關(guān)注
0文章
74瀏覽量
5175 -
RK3562
+關(guān)注
關(guān)注
0文章
55瀏覽量
267
發(fā)布評論請先 登錄
相關(guān)推薦
從CAN擴展器接收MCP2518FD數(shù)據(jù)不正確,是什么原因?qū)е碌模?/a>
MCP2518FD:帶SPI接口的外部CANFD控制器最高8M用戶手冊/原理圖/參考代碼等資料匯總分享
一文淺析汽車CAN-FD總線的通信應(yīng)用
多核異構(gòu)-雙核高速率CAN-FD評測
是否有任何外部組件可以使ESP32S3與CAN-FD兼容?
Microchip宣布提供業(yè)界第一款外部CAN靈活數(shù)據(jù)速率(CAN FD)控制器MCP2517FD
帶SPllnterface的外部CAN FD控制器MCP2517FD的英文數(shù)據(jù)手冊

MCP2517FD CAN FD控制器的詳細資料和數(shù)據(jù)手冊免費下載

can總線一幀多少字節(jié)多少位_MCU擴展CAN/CAN FD接口方案MCP2518FD+ATA6563

評論