MicroPython:Библиотеки/pyb/Класс CAN
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Класс CAN – коммуникационная шина CAN[1]
В классе CAN реализован коммуникационный протокол CAN. На физическом уровне он состоит из 2 линий: RX и TX. Для подключения PyBoard к шине CAN нужно использовать CAN-трансивер – чтобы преобразовать сигналы CAN-логики от PyBoard в правильные уровни напряжения на шине.
Пример использования (работает, даже если ничего не подключено):
from pyb import CAN
can = CAN(1, CAN.LOOPBACK)
# задаем фильтр для получения сообщений с id 123, 124, 125 и 126:
can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
can.send('message!', 123) # отправляем сообщение с ID 123
can.recv(0) # получаем сообщение на FIFO 0
Конструкторы
Методы класса
Методы
- CAN.init(mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8, auto_restart=False)
- CAN.deinit()
- CAN.restart()
- CAN.state()
- CAN.info([list])
- CAN.setfilter(bank, mode, fifo, params, *, rtr)
- CAN.clearfilter(bank)
- CAN.any(fifo)
- CAN.recv(fifo, list=None, *, timeout=5000)
- CAN.send(data, id, *, timeout=0, rtr=False)
- CAN.rxcallback(fifo, fun)
- [[MicroPython:Библиотеки/pyb/Класс CAN/
- [[MicroPython:Библиотеки/pyb/Класс CAN/
- [[MicroPython:Библиотеки/pyb/Класс CAN/
- [[MicroPython:Библиотеки/pyb/Класс CAN/
- [[MicroPython:Библиотеки/pyb/Класс CAN/
- [[MicroPython:Библиотеки/pyb/Класс CAN/
- CAN.rxcallback(fifo, fun) – регистрирует функцию, которая будет вызвана при приеме сообщения в пустой FIFO.
- fifo – FIFO, получающий сообщение.
- fun – функция, которая будет вызвана, когда FIFO перестанет быть пустым.
Функция обратного вызова принимает два аргумента. Первый – это сам объект CAN, а второй – это целое число, информирующее о причине запуска функции обратного вызова:
- «0» – сообщение принято в пустой FIFO.
- «1» – FIFO заполнен.
- «2» – сообщение было потеряно из-за полного FIFO.
Пример использования CAN.rxcallback(fifo, fun):
def cb0(bus, reason):
print('cb0')
if reason == 0:
print('в режиме ожидания')
if reason == 1:
print('полный')
if reason == 2:
print('переполнение')
can = CAN(1, CAN.LOOPBACK)
can.rxcallback(0, cb0)
Константы
- CAN.NORMAL, CAN.LOOPBACK, CAN.SILENT, CAN.SILENT_LOOPBACK – режимы работы CAN-шины, используемые в init().
- CAN.STOPPED, CAN.ERROR_ACTIVE, CAN.ERROR_WARNING, CAN.ERROR_PASSIVE, CAN.BUS_OFF – режимы работы CAN-контроллера, возвращаемые функцией state().
- CAN.LIST16, CAN.MASK16, CAN.LIST32, CAN.MASK32 – режимы работы фильтра, используемые в setfilter().
<syntaxhighlight lang="python" enclose="div">