• 正文
    • 硬件原理
    • IOMUX配置
    • 设备节点
    • 添加驱动
    • 编译测试
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之FLEXCAN

02/26 13:50
661
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

FLEXCAN(Flexible Controller Area Network),是一个支持CAN2.0协议规范的CAN通信控制器。CAN 是控制器局域网络(Controller Area Network)的简称,是1986年德国电气商博世公司开发的面向汽车产业的串行通信协议,主要满足汽车行业以下几点需求:数据处理的实时性、EMI环境下数据传输的可靠性、降低线缆成本、增大数据带宽等。

开发板提供两路原生的CAN。

硬件原理

ELF 1开发板跟NXP使用的原生的FLEXCAN是同一方案,所以,添加起来就简单多了。

通过查表CAN1_TX对应的PAD NAME为UART3_CTS_B,CNA1_RX的PAD NAME为UART3_RTS_B,CAN2_TX对应的PAD NAME为UART2_CTS_B,CNA2_RX的PAD NAME为UART2_RTS_B。

IOMUX配置

在arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件中已经添加好的配置:

设备节点

已配置好的设备节点:

其中xceiver-supply = <&reg_can_3v3>;属性表示给can收发时供电的电源

添加驱动

使用make menuconfig打开图形化配置界面:

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

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

进入该选项,在

CAN bus subsystem support

-> CAN Device Drivers

中选中以下几个选项:

替换配置文件

通过make menuconfig修改的内容写入到了.config文件,当使用make imx6ull_elf1_defconfig配置内核源码时,.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

编译测试

编译内核和设备树并拷贝到开发板:

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/

进行sync操作后重启开发板:

我们使用CAN1和CAN2进行对测。将开发板的 CAN1与CAN2 的H与H相连,L与L相连。板子启动之后,在命令行输入以下命令,对CAN1配置波特率为125000:

root@ELF1:~# ifconfig can0 down                                //关闭can1

root@ELF1:~# ip link set can0 up type can bitrate 125000 triple-sampling on //设置can1波特率

root@ELF1:~# ifconfig can0 up                                  //开启can1

对CAN2配置波特率为125000:

root@ELF1:~# ifconfig can1 down                                //关闭can2

root@ELF1:~# ip link set can1 up type can bitrate 125000 triple-sampling on //设置can2波特率

root@ELF1:~# ifconfig can1 up                                  //开启can2

CAN2接收数据:

root@ELF1:~# candump can1 &                   //can2以后台方式接收数据

[1] 686

CAN1发送数据:

root@ELF1:~# cansend can0 123#1234567891234567       //can1发送数据

can1 123 [8] 12 34 56 78 91 23 45 67                         //can2接收到数据

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录