CAN接口介绍
  CAN总线是广播类型的总线。这意味着所有节点都可以侦听到所有传输的报文。无法将报文单独发送给指定节点;所有节点都将始终捕获所有报文。但是,CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应。
总线使用不归零位填充。模块以线与逻辑连接到总线:如果只有一个节点向总线传输逻辑0,那么不管有多少个节点向总线传输逻辑1,整个总线都处于逻辑0状态。
CAN总线上的电平:
  CAN2.0A/B标准规定:总线空闲时,CAN_HCAN_L上的电压为2.5V
在数据传输时,显性电平(逻辑 0):CAN_H 3.5V CAN_L 1.5V
隐性电平(逻辑 1):CAN_H 2.5V CAN_L 2.5V
  CAN标准定义四种不同的报文类型(数据帧、远程帧、错误帧、过载帧)。报文使用逐位仲裁智能方案来控制对总线的访问,每条报文都带有优先级标记,在协议中规定ID小则优先级高。CAN总线拓扑图如下图:
图片1.png
图片2.png
CAN总线拓扑图

ELF 1 CAN接口硬件电路介绍
  主板上提供了1CAN接口,扩展板上有1CAN接口,由3.81mm间距绿端子引出。
目前ELF 1上默认焊接TJA1040TCAN模块原理图如下图所示,由于TJA1040T的输出端RX5V电平,可能会影响核心板的3.3V电压,因此,芯片输出端分别经过电阻R51R54分压到3.3V,再输入CPUCAN1_RX
  此部分电路除了电平的匹配外还要注意到R52R53两个电阻这两个电阻为CAN总线的终端电阻这两个电阻在CAN总线通讯时起着至关重要的作用,首先阻抗匹配实现保证信号在总线上的最大传输功率提高抗干扰能力,其次是确保总线可以快速进入隐性状态,给结电容的快速放电,如果在多个设备挂载的情况下,两端设备不接终端电阻CAN总线会有不能通讯的风险。
图片3.png
1 CAN模块
图片4.png 图片5.png
2 CAN引脚示意图
  通过查表CAN1_TX对应的PAD NAMEUART3_CTS_BCNA1_RXPAD NAMEUART3_RTS_BCAN2_TX对应的PAD NAMEUART2_CTS_BCNA2_RXPAD NAMEUART2_RTS_B

图片6.png
3 TJA1040T芯片功能框图
图片7.png
4 TJA1040T芯片引脚说明



  CAN接口设计指南
1ELF 1核心板最多可支持2CAN
2)设计CAN接口时要注意收发器和核心板之间的电平匹配;
3)终端电阻可以预留插针通过跳线帽选择使用;
  CAN接口PCB设计指南
1CAN使用差分布线,预留120Ω端接电阻;
2)连接端口建议预留地信号;
CAN口对测
ELF1引出两路CAN,我们使用CAN1CAN2进行对测,CAN1位于主板上,CAN2位于扩展板上。将ELF1CAN1CAN2 HH相连,LL相连。
    图片8.png
ELF1启动之后,在命令行输入以下命令,对CAN1配置波特率为125000
root@ELF1:~# ifconfig can0 down                           //关闭can1
root@ELF1:~# ip link set can0 up type can bitrate 125000 triple-sampling on //设置can1波特率
flexcan 2090000.can can0:writing ctrl=0x0e312085
IPV6:ADDRCONF(NETDEV_CHANGE):can0:link becomes ready
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波特率
flexcan 2094000.can can1:writing ctrl=0x0e312085
IPV6:ADDRCONF(NETDEV_CHANGE):can0:link becomes ready
root@ELF1:~# ifconfig can1 up                            //开启can2
设置CAN2接收数据:
root@ELF1:~# candump can1 &             //can2以后台方式接收数据
[1] 686
CAN1发送数据
root@ELF1:~# cansend can0 123#1234567891234567   //can1发送数据
root@ELF1:~# can1 123 [8] 12 34 56 78 91 23 45 67      //can2接收到数据
CAN2接收到CAN1发送的数据。

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

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.