[X]关闭

linux CAN通信学习笔记(一)功能实现

文档创建者:ぉ沙皮狗的忧伤
浏览次数:9598
最后更新:2020-04-03
本帖最后由 ぉ沙皮狗的忧伤 于 2020-4-8 16:44 编辑

(一)、先看原理图
截图202004031725412299..png 截图202004031726235131..png
注:原理图并非米联客的开发板,关系不大,测试都差不多可以参考

(二)、vivado配置

截图202004031730317898..png
注:根据自己板卡的情况设置PS IP核can功能这里也可在设备树中设置CAN的pinctrl代码

(三)、配置内核
1、#make menuconfig
    Networking support  --->
         <*> CAN bus subsystem support  --->
                 --- CAN bus subsystem support                                          
                 <*>   Raw CAN Protocol (raw access with CAN-ID filtering)   
                 <*>   Broadcast Manager CAN Protocol (with content filtering)
                 <*>   CAN Gateway/Router (with netlink configuration)            
                       CAN Device Drivers  --->
                       <*>   Xilinx CAN
     #make all
     #make uImage
     拷贝uImage到SD卡中

  2、配置设备树
     打开can设备树代码
     #vim arch/arm/boot/dts/system-top.dts
      截图202004031743005103..png
     增加CAN pinctrl代码
      截图202004031743593119..png
     #make all
     将arch/arm/boot/dts/system-top.dtb重命名位devicetree.dtb文件放入SD中


(四)、调试板卡
     设置can0的波特率,这里设置的是125k
     ip link set can0 type can bitrate 125000

     启用can0
     ip link set can0 up

     显示can0状态信息
     ip -d -s link show can0
      截图202004031752259340..png

     1、回环测试(自己发自己收)
        can0接受同时发送数据
        candump can0&
        cansend can0 123#0011223344556677

     2、测试通信
        板A发数据
            截图202004031753452745..png
        板B收数据
            截图202004031754162657..png
        板卡连接图
             截图202004031759449647..png
   关闭can0
   ip link set can0 down


测试can_id参考网址:http://www.voidcn.com/article/p-yiqzydyx-bwo.html

candump can0,00200200:0,255:0

00200200:0,255:0分别是过滤器指定接收数据的can_id,冒号后面的0表示mask掩码,当掩码为0时,每个CAN ID都将匹配它.
所以can_id没有实际效果,这就是所有消息都通过的原因,can id中的每个必需位都应该在掩码中设置为1.

candump can0,00200200:DFFFFFFF,255:7FF


cansend can0 207#112233 不能发送过来,被过滤掉
cansend can0 255#112233 能接收,

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则