单位的网站建设费会计处理,wordpress 主题后台,抖音代运营服务内容,足球世界排名国家Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 CAN 是目前应用非常广泛的现场总线之一#xff0c;主要应用于汽车电子和工业领域#xff0c;尤其是汽车 领域#xff0c;汽车上大量的传感器与模块都是通过 C…Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 CAN 是目前应用非常广泛的现场总线之一主要应用于汽车电子和工业领域尤其是汽车 领域汽车上大量的传感器与模块都是通过 CAN 总线连接起来的。 CAN 总线目前是自动化领 域发展的热点技术之一由于其高可靠性 CAN 总线目前广泛的应用于工业自动化、船舶、汽 车、医疗和工业设备等方面。 本次笔记需要学习CAN总线相关内容主要包括CAN总线相关的基础理论知识、硬件原理图分析说明以及驱动开发、测试。重点内容为驱动开发及测试相关内容。 本章节的思维导图如下 一、CAN协议简析
1、何为CAN? 汽车网络的标准协议。 特点多主控制、柔软性、速度快、距离远、错误检测、错误通知和错误恢复、故障封闭、连接节点多。
2、CAN电气属性 显性电平0 3.5V-1.5V2V 隐形电平1 2.5V-2.5V0V 空闲状态 CAN 总线传输速度可达 1Mbps/S。
3、CAN协议 5 种帧格式数据数据帧、遥控帧、错误帧、过载帧和帧间隔。 1、数据帧 2、遥控帧 3、错误帧 4、过载帧 5、帧间隔 4、CAN速率 CAN2.0 最高速度为1Mbps/S。1个位分为4段
①、同步段(SS) ②、传播时间段(PTS) ③、相位缓冲段 1(PBS1) ④、相位缓冲段 2(PBS2) 段由 Tq(Time Quantum)组成 Tq 是 CAN 总线的最小时间单位。 在总线空闲态最先开始发送消息的单元获得发送权。 当多个单元同时开始发送时各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性 电平最多的单元可继续发送。
5、I.MX6ULL FlexCAN简介 FlexCAN 支持四种模式正常模式(Normal)、冻结模式(Freeze)、仅监听模式(Listen-Only)和 回环模式(Loop-Back)另外还有两种低功耗模式禁止模式(Disable)和停止模式(Stop)。
波特率 /总 Tq
二、硬件原理图分析 三、实验程序编写
1、修改设备树
1、FlexCAN1 引脚节点信息
1 pinctrl_flexcan1: flexcan1grp{
2 fsl,pins
3 MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x1b020
4 MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x1b020
5 ;
6 }; 2、FlexCAN1 控制器节点信息
1 flexcan1 {
2 pinctrl-names default;
3 pinctrl-0 pinctrl_flexcan1;
4 xceiver-supply reg_can_3v3;
5 status okay;
6 };
3、关闭 FlexCAN2 相关节点 在 imx6ull-alientek-emmc.dts 文件中找到名为“ flexcan2”的节点然后将其屏蔽掉即可。 重新编译设备树还需要配置 Linux 内核使能内核里面的 FlexCAN 驱动。
2、使能Linux内核自带的FlexCAN驱动
1、使能 CAN 总线 - Networking support - * CAN bus subsystem support //打开 CAN 总线子系统 2、使能 Freescale 系 CPU 的 FlexCAN 外设驱动 - Networking support - CAN bus subsystem support - CAN Device Drivers - Platform CAN drivers with Netlink support - * Support for Freescale FLEXCAN based chips //选中 四、FlexCAN测试
1、检查CAN网卡设置是否存在 ifconfig -a //查看所有网卡
2、移植iproute2 在移植 ip 命令的时候必须先对根文件系统做个备份 busybox 自带的 ip 命令并不支持对 can 的操作因此我们需要重新移植 ip 命令也就是 iproute2。
CC:arm-linux-gnueabihf-gcc 1、将交叉编译得到的 ip 拷贝到开发板中 首先将交叉编译到的 ip 命令拷贝到开发板中先不要替换开发板根文件系统中原有的 ip 命 令
2、在开发板根文件系统中用新的 ip 命令替换原来的
cd lib/modules/4.1.15/
cp ip /sbin/ip -f
3、 替换 ip 命令以后系统启动失败怎么办 ip 命令替换错误导致的
3、移植can-utils工具 使用 can-utils 这个工具来对 can0 网卡进行测试
cd can-utils-2020.02.04 //进入 can-utils 源码目录
./autogen.sh //先执行 autogen.sh生成配置文件 configure
./configure --targetarm-linux-gnueabihf --hostarm-linux-gnueabihf --
prefix/home/zuozhongkai/linux/IMX6ULL/tool/can-utils --disable-static --enable-shared //配置
make //编译
make install
4、CAN通信测试
1、两块 ALPHA 开发板连接测试 将两个开发板的 CAN 接口连接起来注意 CAN_H 接 CAN_H CAN_L 接 CAN_L ①、收发测试
ip link set can0 type can bitrate 500000
/*设置 can0 速度为 500Kbit/S两个 CAN 设备的速度要设置为一样的*/ifconfig can0 up //打开 can0
/*can0 打开以后就可以使用 can-utils 里面的小工具进行数据收发测试了。一个开发板用来接
收数据一个用来发送数据接收数据的开发板使用 candump 命令输入如下命令*/
candump can0 //接收数据/*发送数据的开发板使用 cansend 命令向接收单元发送 8 个字节的数据 0X11、0X22、0X33、
0X44、 0X55、 0X66、 0X77、 0X88。输入如下命令*/
cansend can0 5A1#11.22.33.44.55.66.77.88
/*
cansend 命令用于发送 can 数据“ 5A1”是帧 ID“ #”号后面的“ 11.22.33.44.55.66.77.88”
就是要发送的数据十六进制。 CAN2.0 一次最多发送 8 个字节的数据 8 个字节的数据之间用
“ .”隔开。
*/
关闭CAN0:
ifconfig can0 down ②、回环测试
ifconfig can0 down //如果 can0 已经打开了先关闭
ip link set can0 type can bitrate 500000 loopback on //开启回环测试
ifconfig can0 up //重新打开 can0
candump can0 //candump 后台接收数据
cansend can0 5A1#11.22.33.44.55.66.77.88 //cansend 发送数据
2、 USB 转 CAN 卡测试
ip link set can0 type can bitrate 500000 //设置 can0速率 500Kbit
ifconfig can0 up //打开 can0
candump can0 //candump 后台接收数据 通过开发板向 USBCAN 发送数据输入如下命令发送数据 cansend can0 5A1#11.22.33.44.55.66.77.88 本笔记为参考正点原子开发板配套教程整理而得仅用于学习交流使用不得用于商业用途。