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

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

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

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

飛凌嵌入式 ? 2023-09-04 16:04 ? 次閱讀

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


說明

OKMX8MP-C核心板有兩路原生的SPI總線,目前是將SPI1的引腳用作了LEDUART3的功能,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芯片)。

wKgZomT5QKWABPCtAAGqeU6B1M0490.jpg

1、移植MC2518芯片驅(qū)動

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

2、補(bǔ)全對can_rx_offload_add_manual函數(shù)的定義

viOK8MQ-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)

viOK8MQ-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);

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

viOK8MP-linux-kernel/drivers/net/can/spi/Makefile

添加:

obj-y += mcp25xxfd/

viOK8MP-linux-kernel/drivers/net/can/spi/Kconfig

添加:

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

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

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

找到:CONFIG_CAN_MCP251X=y

改為:#CONFIG_CAN_MCP251X is not set

添加:CONFIG_CAN_MCP25XXFD=y

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

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

添加:

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

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

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

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

添加:

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

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

viOK8MP-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ā)板。

8、開發(fā)板驗(yàn)證

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

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

    關(guān)注

    57

    文章

    2756

    瀏覽量

    463781
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1707

    瀏覽量

    91645
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2887

    瀏覽量

    88118
  • 嵌入式開發(fā)
    +關(guān)注

    關(guān)注

    18

    文章

    1030

    瀏覽量

    47594
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5059

    瀏覽量

    97551
收藏 人收藏

    評論

    相關(guān)推薦

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對比
    的頭像 發(fā)表于 11-28 14:31 ?414次閱讀
    【迅為電子】<b class='flag-5'>i.MX</b>6UL和<b class='flag-5'>i.MX</b>6ULL芯片區(qū)別與<b class='flag-5'>開發(fā)板</b>對比

    i.MX Linux開發(fā)實(shí)戰(zhàn)指南—基于野火i.MX系列開發(fā)板

    電子發(fā)燒友網(wǎng)站提供《i.MX Linux開發(fā)實(shí)戰(zhàn)指南—基于野火i.MX系列開發(fā)板.pdf》資料免費(fèi)下載
    發(fā)表于 10-10 17:23 ?11次下載

    198元,米爾NXP i.MX 93開發(fā)板,限購300套

    。即日,米爾聯(lián)合NXP推出活動:米爾NXPi.MX93開發(fā)板限量300套,僅售198元!此次活動針對企業(yè)客戶參與,需要您提供公司信息和聯(lián)系方式,請按如下流程操作
    的頭像 發(fā)表于 09-27 08:00 ?372次閱讀
    198元,米爾NXP <b class='flag-5'>i.MX</b> 93<b class='flag-5'>開發(fā)板</b>,限購300套

    CAN轉(zhuǎn)I2C橋接器

    電子發(fā)燒友網(wǎng)站提供《CAN轉(zhuǎn)I2C橋接器.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 11:10 ?0次下載
    <b class='flag-5'>CAN</b><b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>I</b>2C橋接器

    【正點(diǎn)原子i.MX93開發(fā)板試用連載體驗(yàn)】第一篇:開箱

    感謝電子發(fā)燒友論壇和正點(diǎn)原子提供的這次寶貴的試用機(jī)會,我計劃利用開發(fā)板完成一個小型機(jī)器人的控制demo,同時測評各個功能模塊。首先,正點(diǎn)原子i.MX93開發(fā)板是一款基于NXP
    發(fā)表于 06-20 14:06

    【GD32F303紅楓派開發(fā)板使用手冊】第二十講 SPI-SPI NAND FLASH讀寫實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SPI通信協(xié)議,參考19.2.1東方紅開發(fā)板使用手冊 ?GD32F303 SPI操作方式,參考19.2.2東方紅
    的頭像 發(fā)表于 06-20 09:50 ?921次閱讀
    【GD32F303紅楓派<b class='flag-5'>開發(fā)板</b>使用手冊】第二十講 <b class='flag-5'>SPI-SPI</b> NAND FLASH讀寫實(shí)驗(yàn)

    米爾NXP i.MX 93開發(fā)板的Qt開發(fā)指南

    1.概述Qt是一個跨平臺的圖形應(yīng)用開發(fā)框架,被應(yīng)用在不同尺寸設(shè)備和平臺上,同時提供不同版權(quán)版本供用戶選擇。米爾NXPi.MX93開發(fā)板(MYD-LMX9X開發(fā)板)使用Qt6.5版本進(jìn)行
    的頭像 發(fā)表于 06-07 08:01 ?1753次閱讀
    米爾NXP <b class='flag-5'>i.MX</b> 93<b class='flag-5'>開發(fā)板</b>的Qt<b class='flag-5'>開發(fā)</b>指南

    正點(diǎn)原子i.MX93開發(fā)板

    我計劃申請正點(diǎn)原子i.MX93開發(fā)板,因?yàn)槲蚁M闷鋸?qiáng)大的NXP i.MX9352處理器進(jìn)行中高端嵌入式Linux開發(fā)。這款處理器具備雙核
    發(fā)表于 05-16 14:57

    STM8AF開發(fā)板無法實(shí)現(xiàn)CAN通信怎么解決?

    各位大神 我是STM8的新手,最近買了兩套STM8A-DISCOVERY開發(fā)板,基于STM8AF52芯片開發(fā),原本想著將兩塊
    發(fā)表于 05-14 07:00

    鴻蒙OpenHarmony【輕量系統(tǒng) 運(yùn)行】 (基于Hi3861開發(fā)板

    由于Hi3861為WLAN模組,您可以在版本編譯及燒錄后,通過如下操作,使開發(fā)板實(shí)現(xiàn)聯(lián)網(wǎng)功能。
    的頭像 發(fā)表于 05-10 16:38 ?708次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng) 運(yùn)行】 (基于Hi3861<b class='flag-5'>開發(fā)板</b>)

    NXP i.MX 93核心板工業(yè)方案

    MYC-LMX9X核心板及開發(fā)板NXPi.MX93重新定義入門級嵌入式CPU模組2*Cortex-A55@1.7GHz+Cortex-M33@250MHz,滿足高性能和實(shí)時性需求;集成
    的頭像 發(fā)表于 04-23 11:07 ?1136次閱讀
    NXP <b class='flag-5'>i.MX</b> 93核心板工業(yè)方案

    鴻蒙OpenHarmony【輕量系統(tǒng)運(yùn)行】 (基于Hi3861開發(fā)板

    由于Hi3861為WLAN模組,您可以在版本編譯及燒錄后,通過如下操作,使開發(fā)板實(shí)現(xiàn)聯(lián)網(wǎng)功能。
    的頭像 發(fā)表于 04-23 09:50 ?781次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng)運(yùn)行】 (基于Hi3861<b class='flag-5'>開發(fā)板</b>)

    米爾-全志T113-i開發(fā)板與modbus設(shè)備的連接和操作

    本文主要介紹通過米爾-全志T113-i開發(fā)板實(shí)現(xiàn)與modbus設(shè)備的連接和操作
    的頭像 發(fā)表于 03-21 19:42 ?945次閱讀
    米爾-全志T113-<b class='flag-5'>i</b><b class='flag-5'>開發(fā)板</b>與modbus設(shè)備的連接和<b class='flag-5'>操作</b>

    使用i.MX RT500實(shí)現(xiàn)SPI/DMA AN14170應(yīng)用指南

    電子發(fā)燒友網(wǎng)站提供《使用i.MX RT500實(shí)現(xiàn)SPI/DMA AN14170應(yīng)用指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-01 10:05 ?0次下載
    使用<b class='flag-5'>i.MX</b> RT500<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>SPI</b>/DMA AN14170應(yīng)用指南

    用tc275開發(fā)板實(shí)現(xiàn)can通信,一直不工作怎么解決?

    最近我想用 tc275的官方開發(fā)板實(shí)現(xiàn)can通信,一直不工作,在我反復(fù)檢查了好幾遍代碼之后,感覺實(shí)在找不出錯誤來,就疑惑這塊shield buddy板子上是否有CAN transceiver 芯片?
    發(fā)表于 02-01 07:08