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

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

RK3562J開發(fā)筆記 | MCP2518FD外部CAN-FD控制器的調(diào)試方法

12/06 15:33
692
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

SPI轉(zhuǎn)CAN-FD”是嵌入式開發(fā)領(lǐng)域的常用方法,它極大地促進(jìn)了不同通信接口之間的無縫連接,并顯著降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性。飛凌嵌入式依托瑞芯微RK3562J處理器打造的OK3562J-C開發(fā)板因?yàn)閮?nèi)置了SPI轉(zhuǎn)CAN-FD驅(qū)動,從而原生支持這一功能。該開發(fā)板特別設(shè)計(jì)了一組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ū)動配置進(jìn)內(nèi)核,在kernel下打開圖形化配置界面make menuconfig ARCH=arm64

(1) 按下?‘/’ 鍵進(jìn)入搜索界面,輸入?mcp251?可搜索MCP2518驅(qū)動:

上圖中的CAN_MCP251XFD就是適配MCP2518FD模塊的驅(qū)動。

(2)?選擇?2?將其打?*?編譯進(jìn)內(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.dtsiindex 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 / 5pl022,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é)點(diǎn),要匹配模塊實(shí)際的晶振頻率;

② 模塊上有的 INT 腳是模塊的中斷腳,在適配時需要連接一個可控的GPIO引腳作為終端腳;

③ 在?spi2 節(jié)點(diǎn)下添加匹配MCP2518驅(qū)動的設(shè)備樹信息,compatible?信息不能出錯,這是匹配驅(qū)動的重要屬性。

3、編譯燒寫

將以上的驅(qū)動和設(shè)備樹配置好后,編譯內(nèi)核燒寫進(jìn)開發(fā)板就可以測試了:

(1)?在源碼目錄下單獨(dú)編譯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ā)板是否進(jìn)入燒錄狀態(tài)。

⑤ 擇之前編譯好的 boot.img 鏡像文件,在boot選項(xiàng)前面打勾,點(diǎn)擊執(zhí)行進(jìn)行燒寫,燒寫完成會自動重啟開發(fā)板

4、功能測試

在開發(fā)板內(nèi)搜索can節(jié)點(diǎn),使用 ifconfig -a 命令

可以看到生成的can0節(jié)點(diǎn)。接下來的功能測試,我們采用OK3562J-C和OK3568-C兩塊開發(fā)板的can0進(jìn)行數(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)的報(bào)錯是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ā)板可以進(jìn)行正常的數(shù)據(jù)互發(fā)。以上是飛凌嵌入式RK3562J開發(fā)板適配和測試MCP2518FD模塊的全部過程,希望能夠?qū)Υ蠹业捻?xiàng)目開發(fā)有所幫助。

飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦

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

秉承專業(yè)態(tài)度,專注智能設(shè)備核心平臺研發(fā)與制造,以技術(shù)研發(fā)創(chuàng)新為主導(dǎo),以客戶實(shí)用化,產(chǎn)品化為目標(biāo),把握嵌入式行業(yè)的前沿發(fā)展需求,利用核心技術(shù)為客戶提供穩(wěn)定、可靠、功能優(yōu)異的高品質(zhì)產(chǎn)品。合作聯(lián)系:17713286011