0x00前言

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是ISO国际标准化的串行通信协议。CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管理模块。
  本篇文章以TPYBoard v102开发板为例,为大家介绍一下如何使用STM32自带的CAN控制器,来实现两个开发板之间的CAN通讯。

0x01实验器材

TPYBoard v102 开发板 2块
杜邦线 若干
CAN总线收发器模块VP230(SN65HVD230)  2个

0x02前期准备

1.  TPYBoardv102的CAN控制器。
v102上有两个CAN控制器,分别为CAN1和CAN2,对应引脚如下:

  CAN1(RX)
  
  Y3
  
  CAN1(TX)
  
  Y4
  
  CAN2(RX)
  
  Y5
  
  CAN2(TX)
  
  Y6
  

v102上虽然已经有两个CAN控制器,但是想要完成两个板子之间的CAN通讯,还需要搭配CAN收发器模块。CAN收发器就是CAN控制器和物理总线之间的接口,主要作用就是将CAN控制器的逻辑电平转换为CAN总线的差分电平,在两条有差分电压的总线电缆上传输数据。

2.  去tpyboard的官网看看CAN类库的介绍。

http://docs.tpyboard.com/zh/latest/library/pyb.CAN/?highlight=pyb.CAN
看一下官方的实例代码,这些基本上够用了。

  from  pyb import CAN
  can  = CAN(1, CAN.LOOPBACK)
  can.setfilter(0,  CAN.LIST16, 0, (123, 124, 125, 126))  #  set a filter to receive messages with id=123, 124, 125 and 126
  can.send('message!',  123)   # send a message with id 123
  can.recv(0)                 # receive message on FIFO 0
  

0x03硬件连接

两个v102我用的都是CAN1。具体连接示意图如下:

  TPYBoard v102 (CAN1)
  
  CAN收发器模块
  
  3.3V
  
  VCC 
  
  GND
  
  GND
  
  Y3(RX)
  
  RX
  
  Y4(TX)
  
  TX
  

两个收发器之间H接H、L接L即可。

0x04源代码

第一个板子等待接收,当接收到数据再发送。

  import  pyb
  from  pyb import CAN
   
  can  = CAN(1, CAN.NORMAL)
  can.setfilter(0,  CAN.LIST16, 0, (123, 124, 125, 126))  #  set a filter to receive messages with id=123, 124, 125 and 126
  while  True:
      if can.any(0):
          data=can.recv(0)            # receive message on FIFO 0
          print('DATA:',data)
          can.send(b'message1',222)
  

第二板子是先发送,然后等待接收。

  #  main.py -- put your code here!
  from  pyb import CAN
  can  = CAN(2, CAN.NORMAL)
  can.setfilter(0,  CAN.LIST16, 0, (222,221,231,241))  #  set a filter to receive messages with id=123, 124, 125 and 126
  can.send('message!',  123)   # send a message with id 123
  while  True:
      if can.any(0):
          data=can.recv(0)            # receive message on FIFO 0
          print('DATA:',data)
  

0x05效果图

转载于:https://www.cnblogs.com/xxosu/p/9758809.html

[MicroPython]TPYBoard v102 CAN总线通信相关推荐

  1. java实现can通信_[MicroPython]TPYBoard v102 CAN总线通信

    0x00前言 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是ISO国际标准化的串行通信协议.CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探 ...

  2. python can总线_MicroPython教程之TPYBoard v102 CAN总线通信

    原标题:MicroPython教程之TPYBoard v102 CAN总线通信 0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串 ...

  3. Micropython TPYBoard v102 自动浇花实验

    2019独角兽企业重金招聘Python工程师标准>>> 1.系统功能 监测土壤湿度.环境温度.光照强度 根据当前环境自动浇水,寒冷天气自动加热土壤 2.所需元器件 TPYBoard板 ...

  4. MicroPython开发板:TPYBoard v102 播放音乐实例

    2019独角兽企业重金招聘Python工程师标准>>> 0x00 前言 前段时间看到TPYBoard的技术交流(q群号:157816561)里有人问关于TPYBoard播放音乐的问题 ...

  5. micropython web ws2812_MicroPython实例之TPYBoard v102炫彩跑马灯WS2812B

    一.实验目的 了解ws2812b的工作原理 学习ws2812b的驱动方法 二.实验器材 TPYBoard v102 1块 ws2812b RGB-Ring-8 1个 micro USB数据线 1条 杜 ...

  6. MicroPython实例之TPYBoard v102炫彩跑马灯WS2812B

    一.实验目的 了解ws2812b的工作原理 学习ws2812b的驱动方法 二.实验器材 TPYBoard v102 1块 ws2812b RGB-Ring-8 1个 micro USB数据线 1条 杜 ...

  7. TPYBoard v102 DIY照相机(视频和制作流程)

    2019独角兽企业重金招聘Python工程师标准>>> 前段时间的帖子,利用TPYBoard v102做的DIY照相机,周末实物终于做出来了,加了两个按键模块和一个5110,做的有点 ...

  8. python画心电图_基于MicroPython:TPYBoard心率监测器

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 一.前言 这几年智能穿戴设备大火,尤其是手环类,从A ...

  9. TPYBoard v102 驱动28BYJ-48步进电机

    为什么80%的码农都做不了架构师?>>> TPYBoard v102 驱动28BYJ-48步进电机 实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoar ...

最新文章

  1. apache php php.ini,apache php环境搭建 httpd.conf php.ini 修改点
  2. 数据增强_开源算法FMix:用于深度学习中增强混合样本数据增强
  3. NLPIR大数据处理技术实现多种类智能挖掘
  4. 牛客网——10进制 VS 2进制
  5. 探讨Redhat的开源“成功之道”
  6. Android中BroadcastReceiver
  7. .net Core 3 preview 3试用 WPF,winform桌面开发
  8. 3dmax模型转换为*.FLT格式的建模要点
  9. php中$tpl= add_member_info ;什么意思,DEDECMS会员信息在个人模板info和index的调用问题...
  10. python变量和数据类型_Python变量和数据类型简介
  11. html下拉菜单换背景颜色,无下拉箭头的Select下拉框实现更换背景颜色
  12. hadoop 代码中获取文件名
  13. [译]Rust返回引用的不同策略
  14. Python代码格式化规范
  15. 电机控制-H 桥电路 控制方式简单解析
  16. 蓝牙耳机哪款音质好?高人气低延迟十五款游戏蓝牙耳机推荐
  17. 【学术相关】过来人对研究生阶段的学习建议
  18. python办公自动化(6)——读取word文档
  19. “客户真的是魔鬼”吗?
  20. c语言降序字母,怎么实现对数组的降序排序

热门文章

  1. 3次握手中的最后一个ACK服务端收到了吗
  2. Nginx-08:Nginx配置高可用
  3. 银行系统开发必读的三本书!银行IT开发
  4. BigDecimal的四舍五入的RoundingMode 选择
  5. C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?
  6. C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态
  7. MySQL笔记4:desc命令的两个用法
  8. 1.怎么判断 float a 是 0?
  9. 【译】JS基础算法脚本:类数组(arguments)去重
  10. 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server