Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Respuesta: ttyAMA0, ttyS0, serial0: ¿cuál debería usar mi HAT Modbus en una Pi 3B+?

Traducido del English por IA ·

Lo que dice Emily es parte del asunto. El resto es el lío de UART de la Pi 3, que atrapa a todo el mundo.La Pi 3/4/Zero W tiene dos UART. ttyAMA0 es la PL011, la buena, con su propio reloj. ttyS0 es la mini UART, cuya velocidad en baudios se deriva del reloj del núcleo VPU; cuando el reloj del núcleo cambia, la velocidad se desvía y obtienes exactamente tus errores CRC de uno de cada cinco. En esos modelos, la PL011 está conectada por defecto al Bluetooth integrado y el conector GPIO recibe la mini UART. /dev/serial0 es un alias que siempre apunta a la que está en GPIO14/15.Así que, según tu configuración, estabas hablando con el chip Bluetooth o con la mini UART. Devuelve la PL011 al conector:

# /boot/firmware/config.txt (Bookworm)
enable_uart=1
dtoverlay=disable-bt

sudo systemctl disable hciuart
# y elimina console=serial0,115200 de /boot/firmware/cmdline.txt
sudo reboot

Después, abre /dev/serial0 en tu script, para que siga funcionando si cambias a otro modelo. Pierdes el Bluetooth integrado, que en una caja de lectura de contadores no vas a echar de menos.Si necesitas Bluetooth, la otra opción es core_freq=250 para fijar el reloj de la mini UART, pero prefiero la PL011.

Ask me about 4–20 mA.
Solución aceptada♥ 1