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

java实现can通信_[MicroPython]TPYBoard v102 CAN总线通信相关推荐

  1. [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. python做工控机_[Micropython]TPYBoard v202 利用单片机快速实现家庭智能控制平台

    一提到智能家庭,大家可能首先想到的是各种大佬级公司搞的牛逼产品,或者说是创新产品.想想就觉得很复杂,有的用工控机,有的用树莓派,还有的用arduino,不管用什么,都绕不过服务器进行控制,比如yeel ...

  5. android 串口通信_使用UART与ZYBO进行通信常用外设设计方案

    作者:Wilson Qiu,Xilinx工程师 常用外设设计 使用UART与ZYBO进行通信 ZYNQ学习过程中一个重要环节是进行调试,当然在SDK中进行调试时,设置断点进行单步调试非常高效.但是ZY ...

  6. mysql与串口通信_虚拟机串口与主机串口通信·小程序(下)

    上次说到的,不能做到实时通信.那么开两个进程就可以了,一个用来监听是否有消息传来,一个用来等待用户输入.那么,先来复习一下进程的相关概念. 进程结构 linux中进程包含PCB(进程控制块).程序以及 ...

  7. c# wifi串口通信_在C#中实现串口通信的方法

    通常,在C#中实现串口通信,我们有四种方法: 第一:通过MSCOMM控件这是最简单的,最方便的方法.可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册,不在本文讨论范围.可以访问h ...

  8. STM32+MCP2515多路CAN总线通信电路板(三路、四路、五路)

    基于STM32的多路CAN总线通信软件程序和硬件设计 STM32F407自带两路CAN,按照客户要求,需要定制一款5路CAN的电路板,选择三片MCP2515另外扩展出三路CAN通信电路,实测五路CAN ...

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

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

最新文章

  1. jquery操作复选框(checkbox)的12个小技巧总结
  2. Xamarin Essentials应用教程文件系统FileSystem
  3. 2018 年,你可以把论文投给这 13 场 AI 学术会议(附截稿日期)
  4. Py学生信息管理系统 案例(优化版)
  5. Number With The Given Amount Of Divisors(反素数)
  6. for循环和数组练习
  7. fastapi 请求体 - 多个参数 / 字段Field / 嵌套模型
  8. 20155324 《信息安全系统设计基础》课程总结
  9. Mac实用技巧:如何关闭笔记本的Fn功能
  10. 【JavaWeb】医院药品入库管理系统
  11. 心理学计算机交叉就业,拥有着全美最高年薪?心理学专业介绍及就业前景解析...
  12. 中国工商注册企业统计数据
  13. python拟合直线的斜率_Python:直线,斜率k是已知的,一点P1是已知的,长度P1P2是已知的,如何得到P2?...
  14. HoudahGeo 6 for Mac(地理位置信息软件)
  15. Mac 使用 扫描 仪
  16. 编辑表格用什么软件比较好?最好用的都在这了!
  17. Spring Cloud学习(一) ZuulFilter 过滤器详解
  18. 关于微信公众号支付接口开发遇到的奇葩问题,始终返回get_brand_wcpay_request:fail。
  19. 十款入门级微信小程序源码分享之三
  20. TS 如何解决已声明“XXX”,但从未读取其值

热门文章

  1. 计算机无线网络拓扑图试题,无线局域网期末复习试题库.doc
  2. 走马观花-浪里跳-学习英文
  3. 公共数据库介绍~OECD经合组织数据库
  4. python menu_Python——Menu控件
  5. IT十年人生过客-二十四-转型互联网
  6. go get无法下载(unrecognized import path)的问题解决方法
  7. g++的英文版使用说明和选项
  8. 软件质量模型(ISO/IEC 9126和Mc Call)
  9. 软件测试——三角形问题测试用例练习
  10. ETH 或者 ERC20 如何通过 TxID 查询充值状态