Atomic CAN Base

这是 ATOM CAN Base 的驱动程序库,用于从 CAN 模块接受和发送数据。

支持以下产品:

Atom CAN

Atomic CAN Base

UIFLOW2 应用示例:

CAN 通讯

在UiFlow2 中打开 atoms3_can_example.m5f2 项目。

本示例演示如何使用 Atom CAN Base 接收和发送数据。

UiFlow2 代码块:

example.png

示例输出:

通过串行端口输出接收到的 CAN 通讯数据。

MicroPython 应用示例:

CAN 通讯

本示例演示如何使用 Atom CAN Base 接收和发送数据。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8from base import ATOMCANBase
 9import time
10
11
12title0 = None
13label0 = None
14label1 = None
15base_can = None
16
17
18def setup():
19    global title0, label0, label1, base_can
20
21    M5.begin()
22    title0 = Widgets.Title("CAN Base", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
23    label0 = Widgets.Label("TX:", 1, 38, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
24    label1 = Widgets.Label("RX:", 1, 68, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
25
26    base_can = ATOMCANBase(0, (6, 5), ATOMCANBase.NORMAL, baudrate=1000000)
27
28
29def loop():
30    global title0, label0, label1, base_can
31    M5.update()
32    if BtnA.isPressed():
33        label0.setText(str("TX: Send"))
34        base_can.send("uiflow2", 0, timeout=0, rtr=False, extframe=False)
35        time.sleep(1)
36        label0.setText(str("TX: Not Send"))
37    if base_can.any(0):
38        label1.setText(str("RX: Rec"))
39        print(base_can.recv(0, timeout=5000))
40        time.sleep(1)
41        label1.setText(str("RX: Not Rec"))
42
43
44if __name__ == "__main__":
45    try:
46        setup()
47        while True:
48            loop()
49    except (Exception, KeyboardInterrupt) as e:
50        try:
51            from utility import print_error_msg
52
53            print_error_msg(e)
54        except ImportError:
55            print("please update to latest firmware")

示例输出:

通过串行端口输出接收到的 CAN 通讯数据。

API参考

ATOMCANBase

class base.atom_can.ATOMCANBase(*args, **kwargs)

基类:CAN

创建 ATOMCANBase 对象。

参数:
  • id (int) – CAN 通讯使用的 ID 号, 默认为0

  • port (list | tuple) – 包含 TX 和 RX 引脚编号的列表或元组。

  • mode (int) – 使用的 CAN 模式(NORMAL、NO_ACKNOWLEDGE、LISTEN_ONLY),默认为 NORMAL。

  • baudrate (int) – 使用的波特率,默认为 1000000。

UiFlow2 代码块:

init.png

MicroPython 代码块:

from base import ATOMCANBase

base_can = ATOMCANBase(0, (6, 5), ATOMCANBase.NORMAL, baudrate=1000000)

ATOMCANBase 类继承了 CAN 类,详情请参见 hardware.CAN