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#

CAN/RS232 Shield Pinout

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)