博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MicroPython教程之TPYBoard v102 CAN总线通信
阅读量:5880 次
发布时间:2019-06-19

本文共 1832 字,大约阅读时间需要 6 分钟。

  0x00前言

  CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串行通信协议。CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管理模块。

  本篇文章以TPYBoardv102开发板为例,为大家介绍一下如何使用STM32自带的CAN控制器,来实现两个开发板之间的CAN通讯。

  0x01实验器材

  TPYBoardv102开发板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 CANcan = 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 126can.send('message!', 123)   # send a message with id 123can.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 pybfrom pyb import CANcan = 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 126while 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 CANcan = 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 126can.send('message!', 123)   # send a message with id 123while True:    if can.any(0):        data=can.recv(0)            # receive message on FIFO 0        print('DATA:',data)

 

  0x05效果图

 

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

你可能感兴趣的文章
cacti 从头到脚之添加监控主机(win7/linux)
查看>>
细谈JavaScript dom编程----我的笔记
查看>>
监控各项服务
查看>>
Oracle数据库之SQL起航
查看>>
Oracle数据库之SQL单行函数---日期函数集锦
查看>>
使用OpenCV与Face++实现人脸解锁
查看>>
GC知识
查看>>
NPOI在.net中的操作Excel
查看>>
如何策划网站专题及注意事项
查看>>
java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setCacheBlocks(Z)V
查看>>
PX Deq: Execution Msg等待事件
查看>>
JQuery1.11.3版本POST方法在laravel5.2模板中的使用
查看>>
高性能 Oracle JDBC 编程
查看>>
java 中ResultSet可以获取的数据类型及返回值类型列表
查看>>
ubuntu 13 安装SH程序
查看>>
我的友情链接
查看>>
如何用几个简单的命令改善你的Linux安全
查看>>
查看MySQL记录执行过的SQL
查看>>
用vsftp搭建ftp服务器
查看>>
SpringMVC 之 国际化
查看>>