• 正文
    • 硬件原理
    • IOMUX配置
    • 設(shè)備節(jié)點(diǎn)
    • 添加驅(qū)動(dòng)
    • 編譯測試
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之FLEXCAN

02/26 13:50
514
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

FLEXCAN(Flexible Controller Area Network),是一個(gè)支持CAN2.0協(xié)議規(guī)范的CAN通信控制器。CAN 是控制器局域網(wǎng)絡(luò)(Controller Area Network)的簡稱,是1986年德國電氣商博世公司開發(fā)的面向汽車產(chǎn)業(yè)的串行通信協(xié)議,主要滿足汽車行業(yè)以下幾點(diǎn)需求:數(shù)據(jù)處理的實(shí)時(shí)性、EMI環(huán)境下數(shù)據(jù)傳輸的可靠性、降低線纜成本、增大數(shù)據(jù)帶寬等。

開發(fā)板提供兩路原生的CAN。

硬件原理

ELF?1開發(fā)板跟NXP使用的原生的FLEXCAN是同一方案,所以,添加起來就簡單多了。

通過查表CAN1_TX對應(yīng)的PAD NAME為UART3_CTS_B,CNA1_RX的PAD NAME為UART3_RTS_B,CAN2_TX對應(yīng)的PAD NAME為UART2_CTS_B,CNA2_RX的PAD NAME為UART2_RTS_B。

IOMUX配置

在arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件中已經(jīng)添加好的配置:

設(shè)備節(jié)點(diǎn)

已配置好的設(shè)備節(jié)點(diǎn):

其中xceiver-supply = <&reg_can_3v3>;屬性表示給can收發(fā)時(shí)供電的電源。

添加驅(qū)動(dòng)

使用make menuconfig打開圖形化配置界面:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$?make menuconfig

在Networking support菜單下添加CAN bus subsystem support:

進(jìn)入該選項(xiàng),在

CAN bus subsystem support

-> CAN Device Drivers

中選中以下幾個(gè)選項(xiàng):

替換配置文件

通過make menuconfig修改的內(nèi)容寫入到了.config文件,當(dāng)使用make imx6ull_elf1_defconfig配置內(nèi)核源碼時(shí),.config文件會被覆蓋,因此,需要替換原有的imx6ull_elf1_defconfig。

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$?cp .config arch/arm/configs/imx6ull_elf1_defconfig

編譯測試

編譯內(nèi)核和設(shè)備樹并拷貝到開發(fā)板:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$?./build.sh

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$?scp arch/arm/boot/zImage ?root@172.16.0.175:/run/media/mmcblk1p1/

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$?scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

進(jìn)行sync操作后重啟開發(fā)板:

我們使用CAN1和CAN2進(jìn)行對測。將開發(fā)板的 CAN1與CAN2 的H與H相連,L與L相連。板子啟動(dòng)之后,在命令行輸入以下命令,對CAN1配置波特率為125000:

root@ELF1:~#?ifconfig can0 down????????????????????????????????//關(guān)閉can1

root@ELF1:~#?ip link set can0 up type can bitrate 125000 triple-sampling on?//設(shè)置can1波特率

root@ELF1:~#?ifconfig can0 up??????????????????????????????????//開啟can1

對CAN2配置波特率為125000:

root@ELF1:~#?ifconfig can1 down????????????????????????????????//關(guān)閉can2

root@ELF1:~#?ip link set can1 up type can bitrate 125000 triple-sampling on?//設(shè)置can2波特率

root@ELF1:~#?ifconfig can1 up??????????????????????????????????//開啟can2

CAN2接收數(shù)據(jù):

root@ELF1:~#?candump can1 &???????????????????//can2以后臺方式接收數(shù)據(jù)

[1] 686

CAN1發(fā)送數(shù)據(jù):

root@ELF1:~#?cansend can0 123#1234567891234567???????//can1發(fā)送數(shù)據(jù)

can1 123 [8] 12 34 56 78 91 23 45 67 ????????????????????????//can2接收到數(shù)據(jù)

相關(guān)推薦