CAN/RS232 Shield

O CAN/RS232 Shield combina um transceptor CAN-FD com um transceptor RS-232, de modo que a OpenMV Cam pode se comunicar com veículos, controladores e equipamentos seriais legados a partir de um único shield, com ampla entrada de alimentação e proteção contra tensão reversa.

CAN/RS232 Shield

Para o datasheet completo, fotos e informações de compra, consulte a página do produto CAN/RS232 Shield.

Destaques

  • CAN-FD de 8 Mb/s com terminação e filtragem embarcadas

  • RS-232 de 1 Mb/s com filtragem integrada

  • Entrada de 6-36 V, tolerante a tensão reversa

  • Entrada ADC de 0-5 V com proteção contra sobretensão de ±36 V

  • I/O digital de 0-5 V para gatilhos de sincronização de câmera, com proteção contra curto-circuito

Pinagem

Pinagem do CAN/RS232 Shield

Referência de pinos

Pino

Função

P1

CAN TX → entrada do transceptor (padrão)

P2

CAN TX → entrada do transceptor (alternativa)

P3

CAN RX ← saída do transceptor

P4

RS-232 TX → aciona a linha de saída

P5

RS-232 RX ← recebe a linha de entrada

P6

Releitura de AIN com deslocamento de nível (0–3,3 V no P6)

P10

SYN — I/O digital open-drain no bloco de terminais

PWR in

Ampla entrada de 6–36 V no bloco de terminais (tolerante a tensão reversa)

AIN in

Entrada analógica no bloco de terminais

VIN out

5,4 V até 600 mA do regulador embarcado

trilho de 3,3 V

Alimenta a eletrônica embarcada do shield

trilho GND

Terra comum

Nota

AIN tem proteção contra sobretensão de até ±36 V e, por padrão, é uma entrada de tensão de 0–5 V, reduzida para 0–3,3 V no P6. Faça a ponte do shunt de modo 4–20 mA na frente do shield para mudar o AIN para uma entrada de loop de corrente de 4–20 mA.

Nota

SYN é uma linha digital open-drain, com pull-up de 3,3 V no lado da câmera e de 5 V no lado do terminal SYN. Por padrão é uma entrada — o shield faz o deslocamento de nível de 0–5 V no SYN para 0–3,3 V no P10. Altere o jumper de solda embarcado para tornar o P10 uma saída, fazendo o deslocamento de nível de 0–3,3 V no P10 para 0–5 V no SYN.

Nota

Cada um dos pinos P1, P2, P3, P4, P5, P6 e P10 pode ser reaproveitado para outro uso. P1, P3, P4, P5, P6 e P10 estão conectados por padrão — P1, P3, P6 e P10 através de jumpers de solda na parte traseira, P4 e P5 através de jumpers de solda na frente. Abra o jumper de qualquer pino que você queira liberar. P2 vem desconectado por padrão: faça a ponte de seu jumper na parte traseira para rotear o CAN TX para o P2 (e abra o jumper traseiro do P1 para liberá-lo).

Nota

A divisão P1/P2 existe para que o shield funcione em diferentes famílias de processadores. As placas OpenMV Cam IMXRT (RT1062) podem rotear o CAN para o P1, então usam o mapeamento padrão. As placas STM32 não conseguem alcançar o P1 com seu periférico CAN, então faça a ponte do jumper traseiro do P2 (e abra o do P1) para usar a alternativa.

Nota

A terminação do barramento CAN está conectada por padrão — dividida em duas metades de 60 Ω em série entre CANH e CANL, com um capacitor para o terra no ponto médio (uma terminação dividida com acoplamento AC de 120 Ω). Abra os dois pads de solda para desconectar cada metade independentemente.

Uso

Nota

Os números de periférico CAN(0) e UART(1) abaixo seguem o mapeamento IMXRT (cabeamento padrão do P1). Em outro processador, o barramento conectado a esses pinos pode ser diferente — consulte a referência da sua placa.

Envie e receba quadros CAN-FD — TX no P1 (padrão) ou P2 (alternativa), RX no 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())

Ecoe bytes via RS-232 no P4 (TX) / P5 (RX):

from machine import UART

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

Leia a entrada do bloco de terminais AIN através do pino P6 com deslocamento de nível:

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)

Reaja a uma borda de descida na linha SYN — por exemplo, para sincronizar a câmera com outro dispositivo puxando SYN para nível baixo:

from machine import Pin

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

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