CAN/RS232 Shield

CAN/RS232 Shield объединяет приёмопередатчик CAN-FD с приёмопередатчиком RS-232, чтобы камера OpenMV Cam могла взаимодействовать с транспортными средствами, контроллерами и устаревшим последовательным оборудованием с одного шилда, с широким диапазоном входного питания и защитой от обратной полярности.

CAN/RS232 Shield

Полную спецификацию, фотографии и информацию для заказа смотрите на странице продукта CAN/RS232 Shield.

Основные особенности

  • CAN-FD 8 Мбит/с со встроенным терминированием и фильтрацией

  • RS-232 1 Мбит/с с интегрированной фильтрацией

  • Вход 6–36 В, устойчивый к обратной полярности

  • Вход ADC 0–5 В с защитой от перенапряжения ±36 В

  • Цифровой ввод-вывод 0–5 В для триггеров синхронизации камеры, с защитой от короткого замыкания

Распиновка

Распиновка CAN/RS232 Shield

Назначение выводов

Вывод

Функция

P1

CAN TX → вход приёмопередатчика (по умолчанию)

P2

CAN TX → вход приёмопередатчика (альтернативный)

P3

CAN RX ← выход приёмопередатчика

P4

RS-232 TX → управляет линией передачи

P5

RS-232 RX ← принимает линию приёма

P6

Считывание AIN с преобразованием уровня (0–3,3 В на P6)

P10

SYN — цифровой ввод-вывод с открытым стоком на клеммной колодке

PWR in

Широкий вход 6–36 В на клеммной колодке (устойчив к обратной полярности)

AIN in

Аналоговый вход на клеммной колодке

VIN out

5,4 В при токе до 600 мА со встроенного стабилизатора

Шина 3,3 В

Питает встроенную электронику шилда

Шина GND

Общая земля

Примечание

AIN защищён от перенапряжения до ±36 В и по умолчанию работает как вход напряжения 0–5 В, масштабируемый до 0–3,3 В на P6. Замкните шунт режима 4–20 мА на лицевой стороне шилда, чтобы переключить AIN на токовый вход 4–20 мА.

Примечание

SYN — цифровая линия с открытым стоком, подтянутая к 3,3 В на стороне камеры и к 5 В на стороне клеммы SYN. По умолчанию это вход — шилд преобразует уровень 0–5 В на SYN до 0–3,3 В на P10. Измените встроенную паяную перемычку, чтобы переключить P10 в режим выхода, преобразуя уровень 0–3,3 В на P10 до 0–5 В на SYN.

Примечание

Каждый из выводов P1, P2, P3, P4, P5, P6 и P10 может быть высвобожден для других нужд. P1, P3, P4, P5, P6 и P10 подключены по умолчанию — P1, P3, P6 и P10 через паяные перемычки на задней стороне, P4 и P5 через паяные перемычки на лицевой стороне. Разомкните перемычку на любом выводе, который хотите освободить. P2 по умолчанию отключён: замкните его перемычку на задней стороне, чтобы направить CAN TX на P2 вместо этого (и разомкните перемычку P1 на задней стороне, чтобы освободить P1).

Примечание

Разделение P1/P2 существует для того, чтобы шилд работал с разными семействами процессоров. Платы OpenMV Cam IMXRT (RT1062) могут направлять CAN на P1, поэтому используют схему по умолчанию. Платы STM32 не могут подключить P1 к своему периферийному устройству CAN, поэтому замкните перемычку P2 на задней стороне (и разомкните P1), чтобы использовать альтернативный вариант.

Примечание

Терминирование шины CAN подключено по умолчанию — оно разделено на две половины по 60 Ом, включённые последовательно между CANH и CANL, с конденсатором на землю в средней точке (терминирование с разделением и AC-связью на 120 Ом). Разомкните две паяные площадки, чтобы отключить каждую половину независимо.

Использование

Примечание

Номера периферийных устройств CAN(0) и UART(1) ниже соответствуют схеме IMXRT (распиновка по умолчанию для P1). На другом процессоре шина, подключённая к этим выводам, может отличаться — сверьтесь с документацией вашей платы.

Отправляйте и принимайте кадры CAN-FD — TX на P1 (по умолчанию) или P2 (альтернативный), RX на P3:

from machine import CAN

can = CAN(2, 1_000_000)
can.set_filters(None)
can.send(0x123, b"\xDE\xAD\xBE\xEF")
print(can.recv())

Передавайте эхом байты по RS-232 на P4 (TX) / P5 (RX):

from machine import UART

uart = UART(1, baudrate=115200)
uart.write("hello\n")
print(uart.read())

Считывайте вход клеммной колодки AIN через вывод P6 с преобразованием уровня:

from machine import ADC
import time

ain = ADC("P6")

while True:
    v = ain.read_u16() * 3.3 / 65535
    print("AIN:", v * (5.0 / 3.3), "V")
    time.sleep_ms(100)

Реагируйте на спадающий фронт на линии SYN — например, для синхронизации камеры с другим устройством, опускающим SYN в низкий уровень:

from machine import Pin

def on_sync(pin):
    print("SYN falling edge")

syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)