python can总线_[MicroPython]TPYBoard v102 CAN总线通信

本文介绍了如何使用TPYBoard v102开发板上的CAN控制器进行CAN总线通信。通过连接CAN收发器模块,实现了两个开发板之间的数据交换,并提供了相关的Python代码示例。
摘要由CSDN通过智能技术生成

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效果图

5c331bc13b947657664ec44bcc6115f6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值