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

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

i.MX8MPlus開發(fā)板實現(xiàn)SPI轉(zhuǎn)CAN,該如何操作?

2023/09/01 來源:wechat
2615
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

飛凌嵌入式OKMX8MP-C核心板有兩路原生CAN總線,但用戶在開發(fā)產(chǎn)品時可能需要用到更多的CAN,這該如何解決呢?今天小編將為大家介紹一種SPI轉(zhuǎn)CAN的方法,供各位工程師小伙伴參考。

說明

OKMX8MP-C核心板有兩路原生的SPI總線,目前是將SPI1的引腳用作了LED和UART3的功能,SPI2做成了正常的SPI2接口。此處以SPI2轉(zhuǎn)CAN為例,移植SPI轉(zhuǎn)CAN芯片;

SPI轉(zhuǎn)CAN芯片型號為:MCP2518,這款芯片可轉(zhuǎn)出CAN-FD,若只需要CAN功能,可參照該方式移植MCP2515或其他芯片;

本次移植的MCP2518芯片驅(qū)動來源是i.MX8MQ的源碼(處理器中默認(rèn)移植MCP2518芯片)。

01移植MC2518芯片驅(qū)動

OK8MP-linux-kernel/drivers/net/can/spi/路徑下創(chuàng)建一個文件夾——mcp25xxfd,將相關(guān)文件(包含.c文件、.h文件、Makefile、Kconfig等)放置到此文件夾中。

02補全對can_rx_offload_add_manual函數(shù)的定義

vi
OK8MQ-linux-kernel/include/linux/can/rx-offload.h

添加:

int?can_rx_offload_add_manual(struct?net_device?*dev,????struct can_rx_offload *offload,????unsigned?int?weight)

vi
OK8MQ-linux-kernel/drivers/net/can/rx-offload.c

添加:

int?can_rx_offload_add_manual(struct?net_device?*dev,        struct can_rx_offload *offload,            unsigned int weight){    if (offload->mailbox_read)            return -EINVAL;      return can_rx_offload_init_queue(dev, offload, weight);}EXPORT_SYMBOL_GPL(can_rx_offload_add_manual);

03修改上一級目錄spi/下的Makefile和Kconfig

vi
OK8MP-linux-kernel/drivers/net/can/spi/Makefile

添加:

obj-y     +=  mcp25xxfd/

vi
OK8MP-linux-kernel/drivers/net/can/spi/Kconfig

添加:

source "drivers/net/can/spi/mcp25xxfd/Kconfig"

04修改驅(qū)動配置文件,將MCP2518編譯進(jìn)內(nèi)核

vi
OK8MP-linux-kernel/arch/arm64/configs/OK8MP-C_defconfig

找到:CONFIG_CAN_MCP251X=y

改為:#
CONFIG_CAN_MCP251X is not set

添加:CONFIG_CAN_MCP25XXFD=y

05在設(shè)備樹中配置時鐘

vi
OK8MP-linux-kernel/arch/arm64/boot/dts/freescale/OK8MP-C.dts

添加:

clocks{  mcp2518fd_clock:   mcp2518fd_clock{    compatible = "fixed-clock";    #clock-cells = <0>;    clock-frequency = <40000000>;    };};

06找一個引腳用作芯片的中斷引腳

此處是將GPIO4_IO21用作了中斷引腳。

vi
OK8MP-linux-kernel/arch/arm64/boot/dts/freescale/OK8MP-C.dts

添加:

pinctrl_ecspi2_can:?ecspi2can{  fsl,pins = <    MX8MP_IOMUXC_SAI2_RXFS__GPIO4_IO21   0x40000    >;};

07在設(shè)備樹的ecspi2節(jié)點中進(jìn)行修改

vi
OK8MP-linux-kernel/arch/arm64/boot/dts/freescale/OK8MP-C.dts

從:

&ecspi2{????#address-cells=?<1>;????#size-cells=?<0>;????fsl,spi-num-chipselects=?<1>;????pinctrl-names=?"default";????pinctrl-0=?<&pinctrl_ecspi2?&pinctrl_ecspi2_cs>;????cs-gpios=?<&gpio5?13?GPIO_ACTIVE_LOW>;????status=?"okay";
????spidev1:spi@0?{????????reg=?<0>;????????compatible=?"rohm,dh2228fv";????????spi-max-frequency=?<500000>;    };};

改為:

&ecspi2{????#address-cells=?<1>;????#size-cells=?<0>;????fsl,spi-num-chipselects=?<1>;????pinctrl-names=?"default";????pinctrl-0=?<&pinctrl_ecspi2?&pinctrl_ecspi2_cs &pinctrl_ecspi2_can>;????cs-gpios=?<&gpio5?13?GPIO_ACTIVE_LOW>;????status=?"okay";
mcp1:mcp2518fd@0{????????????compatible=?"microchip,mcp2518fd";????????????reg=?<0>;????????????spi-max-frequency=?<20000000>;????????????clocks=?<&mcp2518fd_clock2>;????????????interrupts-extended=?<&gpio4?21?IRQ_TYPE_LEVEL_LOW>;        };};

 

完成上述修改后即可進(jìn)行編譯,并用新生成的鏡像燒寫OKMX8MP-C開發(fā)板。

08開發(fā)板驗證

將MCP2518芯片接到SPI2的接口上,啟動OKMX8MP-C開發(fā)板,啟動后使用ifconfig-a命令查看,即可看到多出了1個CAN節(jié)點。節(jié)點生成后,即可按照用戶使用手冊4.18FlexCAN測試】章節(jié)進(jìn)行測試,驗證功能是否正常。

用戶使用手冊下載鏈接:https://pan.baidu.com/s/1TY4R5BrAnjAuTTJj9fNGWw

提取碼:?7qc8

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
HFBR-2524 1 Agilent Technologies Inc Receiver, 5Mbps, DIP, Through Hole Mount
$14.66 查看
KSZ8463MLI-TR 1 Microchip Technology Inc Manchester Encoder, PQFP64
暫無數(shù)據(jù) 查看
552AD000270DGR 1 Silicon Laboratories Inc Oscillator, 10MHz Min, 945MHz Max, 148.5MHz Nom
暫無數(shù)據(jù) 查看
飛凌嵌入式

飛凌嵌入式

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

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

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

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