pdf-icon

UIFlow Guide

UIFlow 1.0 Blockly

Event

Unit

UIFlow 1.0 Project

Atomic CAN

案例程序

from m5stack import *
from m5ui import *
from uiflow import *
from base.CAN import CAN
import time
frame = None
atom_can = CAN()

def buttonA_wasPressed():
  global frame
  atom_can.send([0, 1, 2, 3, 4, 5, 6, 7], 0)
  pass
btnA.wasPressed(buttonA_wasPressed)

atom_can.can_init(0, extframe=True, mode=atom_can.NORMAL, baudrate=atom_can.BAUDRATE_250K, tx_io=22, rx_io=19, auto_restart=False)
while True:
  print((str('status:') + str(atom_can.state())))
  if atom_can.any():
    frame = atom_can.recv()
    print((str('data:') + str(frame)))
  wait_ms(30)
  wait_ms(2)

功能说明

from base.CAN import CAN
atom_can = CAN()
atom_can.can_init(0, extframe=True, mode=atom_can.NORMAL, baudrate=atom_can.BAUDRATE_250K, tx_io=22, rx_io=19, auto_restart=False)
  • 初始化CAN总线, 配置是否为拓展帧模式,工作模式(常规模式, 回环模式等)以及波特率设置
atom_can.any()
  • 检查FIFO中是否有未读的数据
frame = atom_can.recv()
  • 接收数据
atom_can.send([0, 1, 2, 3, 4, 5, 6, 7], id)
  • 发送一条数据,并指定数据帧的ID, ID长度为1个byte, 传入的数据类型要求为list或是tuple, 数据帧的数据长度要求是8个byte
atom_can.setfilter(0, CAN.FILTER_RAW_SINGLE, [])
  • 设置过滤组
atom_can.state()
  • 获取CAN控制器状态
atom_can.clear_rx_queue()
  • 清除接收队列
atom_can.clear_tx_queue()
  • 清除发送队列
atom_can.clearfilter()
  • 清除过滤组
atom_can.restart()
  • 重启CAN总线
atom_can.deinit()
  • 停止CAN总线
On This Page