美文网首页
Arduino CAN总线实验结果

Arduino CAN总线实验结果

作者: 小鱼儿他老汉 | 来源:发表于2018-12-04 21:12 被阅读140次

CAN总线实现方案

CAN总线节点框架主要由三部分组成:

  1. MCU,应用控制器;
  2. CAN控制器,总线控制器,往往通过SPI总线暴露寄存器,实现CAN协议;
  3. CAN收发器,物理层收发器,可以初略理解为RS485/RS232的接口芯片,但是却也有部分定时适配任务。

目前把CAN控制器作为片内外设集成到MCU中,渐成趋势。但是CAN收发器大多数5V的,需要留意三类芯片连接时所需的电平匹配问题。如果是兼容3/5V设计,就问题不大,否则需要使用电平转换或者高速光耦。

Arduino

Arduino上有过一款SeeedStudio的CAN Shield,使用MCP2515控制器和TJA1050。于是我在5V版本的Arduino Nano,和泥人版的简化CAN Shield上做了测试。

连线部分需要注意两点:

  • SPI_CS连接到D9,旧版本的Demo缺省连接到D10,也可以自定义。
  • INT连接到D2,即INT.0,不是D0,当然也可以自定义。由于接收端大多数采用中断方式,所以这个脚还必须连接。
Enter setting mode success
set rate success!!
Enter Normal Mode Success!!
CAN BUS Shield init ok!
Enter setting mode success
set rate success!!
Enter Normal Mode Success!!
CAN BUS Shield init ok!

发射端终端截屏

Get Data From id: 7
0x7     0x7     0x7     0x7     0x7     0x7     0x7     0x7

------------------------------------------------------------------
Get Data From id: 8
0x8     0x8     0x8     0x8     0x8     0x8     0x8     0x8

------------------------------------------------------------------
Get Data From id: 9
0x9     0x9     0x9     0x9     0x9     0x9     0x9     0x9

------------------------------------------------------------------
Get Data From id: 4
0x4     0x4     0x4     0x4     0x4     0x4     0x4     0x4

------------------------------------------------------------------
Get Data From id: 5
0x5     0x5     0x5     0x5     0x5     0x5     0x5     0x5

------------------------------------------------------------------
Get Data From id: 6
0x6     0x6     0x6     0x6     0x6     0x6     0x6     0x6

------------------------------------------------------------------
Get Data From id: 7
0x7     0x7     0x7     0x7     0x7     0x7     0x7     0x7

------------------------------------------------------------------
Get Data From id: 8
0x8     0x8     0x8     0x8     0x8     0x8     0x8     0x8

------------------------------------------------------------------
Get Data From id: 9
0x9     0x9     0x9     0x9     0x9     0x9     0x9     0x9

接收端终端截屏

下一步:STM32F103/F407/F072

做Arduino实验之前,基于MicroPython的F407的CAN例程环回自测也通过了。但是CAN节点是孤立的,则总线会被断开,用示波器和逻辑分析仪是看不到波形的。现在则问题不大了,因为两组 Arduino+MCP+TJA 组合可以构成了一对完整的总线节点,剩下的只是把新节点挂上去测试罢了。

接下来,我可能会基于STM32F103C8做些试验,可能会对接3.3V CAN收发器,或者3/5V兼容收发器。此外,F407/F072可以分别针对USB/CAN转换进行收发,同样需要兼容收发器。最后,LPC11C24和STM8S也可能。LPC11C24因为是三合一,把收发器也集成的芯片,而STM8S则可能是比较便宜的选择,配合CH340既可以用了。

3V 收发器

  • NXP TJA1040
  • TI SN65HVD230

因为STM32F103/F407/F072的CANH/CANL引脚都是5V容错的,所以TJA105X直接接上问题也不大。

应用场景

  • ROS,机械臂、机器人场景
  • 电机驱动:多路伺服、步进、无刷电机
  • 智能农业:区域自动化
  • 交通工具:船舶
  • 交通工具:车用ODB
  • 物流工具:UAV
  • 其他:大型家电、服务器背板、智能电网、电池管理系统

参考

相关文章

  • Arduino CAN总线实验结果

    CAN总线实现方案 CAN总线节点框架主要由三部分组成: MCU,应用控制器; CAN控制器,总线控制器,往往通过...

  • STM32F0 CAN总线

    STM32F0 CAN总线数据转发实验 实验目的: 把CAN总线控制器接收到的数据直接发送出去。包括:标准数据帧、...

  • CAN总线小结

    了解了些can总线资料,发现和其他的协议还是有点不一样的,所以写篇文章记录下 首先如果用arduino实现CAN总...

  • CAN总线控制器如何进行验收滤波

    了解CAN总线的人都知道,CAN总线在的帧数据在总线上传送时,其它的CAN控制器是通过验收滤波来决定总线上的数据帧...

  • 汽车控制系统

    介绍一下CAN总线 CAN(Controller Area Network, CAN)控制局域网总线网络,是汽车控...

  • 电路识读39-车载网络(CAN)系统组成及电路图识读

    一、CAN总线的组成与功能 1.CAN 数据传输总线系统的组成 以马自达6 汽车为例介绍CAN总线系统结构与原理。...

  • CAN总线

    CAN(Contronller Area Network)控制器局域网,是一种能够实现分布式实时控制的串行通信网络...

  • CAN总线

    CAN是Controller Area Network 的缩写,是ISO国际标准化的串行通信协议。 CAN协议 C...

  • CAN总线

    1、什么是CAN总线 通俗的讲:CAN总线就是一种总线形式,通信用的,比如咱们用的网线,就是一种总线形式,网线就是...

  • 记录

    something about CAN/LIN总线 汽车的控制单元间通过CAN/LIN总线进行数据交换 LIN是主...

网友评论

      本文标题:Arduino CAN总线实验结果

      本文链接:https://www.haomeiwen.com/subject/logvcqtx.html