问一下CAN总线怎么用的?
-
pyb.CAN类的两个函数参数设置
波特率?
CAN.init(mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8, auto_restart=False)
滤波器组?
CAN.setfilter(bank, mode, fifo, params, *, rtr)示例:
from pyb import CAN can = CAN(2, 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
改了一下波特率为500, 并不能用..
can = CAN(2, CAN.LOOPBACK, extframe=False, prescaler=14, sjw=1, bs1=3, bs2=2)
-
can总线还需要单独的,额外的收发器的。
-
@kidswong999 已经接了收发器, 自发自收可以输出, 但是rx tx 示波器只有一个脚有波形, 正常吗? 我只找到这个示例程序, 还用其他的资料吗?
-
@kidswong999 官方有配套的CAN模块吗? 问了客服说没有...
-
没有,主要是目前我们还没遇到过使用can总线的场景。
-
已经通了
关于总线频率, 函数 pyb.freq([sysclk[, hclk[, pclk1[, pclk2]]]])输出"(216, 216, 54, 108)"
所以 pclk1 = 216/4MHz = 54MHz然后设置波特率 CAN.init(mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8)
-
你能把代码发上来看下吗,我这边也在调试CAN通讯,没有调试成功。