[MicroPython]TPYBoard v102 CAN总线通信
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总线通信相关推荐
- java实现can通信_[MicroPython]TPYBoard v102 CAN总线通信
0x00前言 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是ISO国际标准化的串行通信协议.CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探 ...
- python can总线_MicroPython教程之TPYBoard v102 CAN总线通信
原标题:MicroPython教程之TPYBoard v102 CAN总线通信 0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串 ...
- Micropython TPYBoard v102 自动浇花实验
2019独角兽企业重金招聘Python工程师标准>>> 1.系统功能 监测土壤湿度.环境温度.光照强度 根据当前环境自动浇水,寒冷天气自动加热土壤 2.所需元器件 TPYBoard板 ...
- MicroPython开发板:TPYBoard v102 播放音乐实例
2019独角兽企业重金招聘Python工程师标准>>> 0x00 前言 前段时间看到TPYBoard的技术交流(q群号:157816561)里有人问关于TPYBoard播放音乐的问题 ...
- micropython web ws2812_MicroPython实例之TPYBoard v102炫彩跑马灯WS2812B
一.实验目的 了解ws2812b的工作原理 学习ws2812b的驱动方法 二.实验器材 TPYBoard v102 1块 ws2812b RGB-Ring-8 1个 micro USB数据线 1条 杜 ...
- MicroPython实例之TPYBoard v102炫彩跑马灯WS2812B
一.实验目的 了解ws2812b的工作原理 学习ws2812b的驱动方法 二.实验器材 TPYBoard v102 1块 ws2812b RGB-Ring-8 1个 micro USB数据线 1条 杜 ...
- TPYBoard v102 DIY照相机(视频和制作流程)
2019独角兽企业重金招聘Python工程师标准>>> 前段时间的帖子,利用TPYBoard v102做的DIY照相机,周末实物终于做出来了,加了两个按键模块和一个5110,做的有点 ...
- python画心电图_基于MicroPython:TPYBoard心率监测器
转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 一.前言 这几年智能穿戴设备大火,尤其是手环类,从A ...
- TPYBoard v102 驱动28BYJ-48步进电机
为什么80%的码农都做不了架构师?>>> TPYBoard v102 驱动28BYJ-48步进电机 实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoar ...
最新文章
- apache php php.ini,apache php环境搭建 httpd.conf php.ini 修改点
- 数据增强_开源算法FMix:用于深度学习中增强混合样本数据增强
- NLPIR大数据处理技术实现多种类智能挖掘
- 牛客网——10进制 VS 2进制
- 探讨Redhat的开源“成功之道”
- Android中BroadcastReceiver
- .net Core 3 preview 3试用 WPF,winform桌面开发
- 3dmax模型转换为*.FLT格式的建模要点
- php中$tpl= add_member_info ;什么意思,DEDECMS会员信息在个人模板info和index的调用问题...
- python变量和数据类型_Python变量和数据类型简介
- html下拉菜单换背景颜色,无下拉箭头的Select下拉框实现更换背景颜色
- hadoop 代码中获取文件名
- [译]Rust返回引用的不同策略
- Python代码格式化规范
- 电机控制-H 桥电路 控制方式简单解析
- 蓝牙耳机哪款音质好?高人气低延迟十五款游戏蓝牙耳机推荐
- 【学术相关】过来人对研究生阶段的学习建议
- python办公自动化(6)——读取word文档
- “客户真的是魔鬼”吗?
- c语言降序字母,怎么实现对数组的降序排序
热门文章
- 3次握手中的最后一个ACK服务端收到了吗
- Nginx-08:Nginx配置高可用
- 银行系统开发必读的三本书!银行IT开发
- BigDecimal的四舍五入的RoundingMode 选择
- C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?
- C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态
- MySQL笔记4:desc命令的两个用法
- 1.怎么判断 float a 是 0?
- 【译】JS基础算法脚本:类数组(arguments)去重
- 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server