Skip to main content

6 posts tagged with "uart"

View All Tags

Настройка параметров последовательного порта в Linux

· One min read
dmn
maintainer

Настройка последовательного порта

Установка параметров последовательного порта в Linux на примере ttyS1

Просмотр текущих параметров

stty -F /dev/ttyS1 -a

Пример вывода:

speed 115200 baud; line = 0;
-brkint -icrnl -imaxbel
opost -onlcr
cs8 -parenb -cstopb

Расшифровка параметров

  • speed 115200 baud — текущая скорость
  • cs8 — 8 бит данных
  • -parenb — без бита четности (N)
  • -cstopb — 1 стоп-бит (если было cstopb → 2 стоп-бита)

Установка параметров порта

stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb -ixon -ixoff -crtscts

Тестирование порта

Дальше можно прямо из командной строки:

echo "test" > /dev/ttyS1

Overlay для RS485 на UART1 с GPIO управлением направления

· One min read
dmn
maintainer

Оверлей для RS485 на UART1

Оверлей для RS485 на UART1 (Napi-C) c контролем направления через GPIO (DE=GPIO2_B4)

Конфигурация DTS

root@rockpi-s:~/S3# cat uart1-de.dts
/dts-v1/;
/plugin/;

/ {
compatible = "rockchip,rk3308";

fragment@0 {
target = <&uart1>;
__overlay__ {
status = "okay";

pinctrl-names = "default";
pinctrl-0 = <&uart1_xfer>;

linux,rs485-enabled-at-boot-time;
rs485-rts-active-high;
rs485-rts-delay = <0 0>;
rts-gpios = <&gpio2 12 0>;
};
};
};

#rs485 #napic

Просмотр опций компиляции ядра Linux

· One min read
dmn
maintainer

Как посмотреть с какими опциями скомпилировано ядро Linux ?

zcat /proc/config.gz

Так же можно поставить фильтр - например, посмотрим все что касается последовательных портов

zcat /proc/config.gz | grep -E 'CONFIG_SERIAL_8250_NR_UARTS|CONFIG_SERIAL_8250|CONFIG_SERIAL_'

#linuxkernel #kernel #napikernel #uart

Чтение и программирование EEPROM преобразователя FT232

· 2 min read
dmn
maintainer

Читаем внутреннюю прошивку преобразователя rtu-usb ft232 под Linux (armbian na Napi-C)

Ставим софт

sudo apt install libftdi1-2 libftdi1-dev ftdi-eeprom

Читаем

touch c.txt #создаем пустой файл

#vendor/product смотрим в lsusb
echo 'vendor_id=0x0403
product_id=0x6001' > c.txt
ftdi_eeprom --read-eeprom c.txt  --verbose

Получаем результат

FTDI eeprom generator v0.17
(c) Intra2net AG and the libftdi developers <opensource@intra2net.com>
Unable to find FTDI device with description: i:0403:6001
Error code: -3 (device not found)
root@rockpi-s:~# ftdi_eeprom --read-eeprom c.txt --verbose

FTDI eeprom generator v0.17
(c) Intra2net AG and the libftdi developers <opensource@intra2net.com>
Unable to find FTDI devices under given vendor/product id: 0x0/0x0
Error code: -3 (device not found)
Retrying with default FTDI pid=0x6001.
FTDI read eeprom: 0
EEPROM size: 128
VID: 0x0403
PID: 0x6001
Release: 0x0000
Bus Powered: 90 mA USB Remote Wake Up
Manufacturer: FTDI
Product: FT232R USB UART
Serial: A10M5ZU3
Checksum : 17cb
Internal EEPROM
Oscillator: Internal
Enable Remote Wake Up
PNP: 1
Channel A has Mode UART VCP
C0 Function: TXLED
C1 Function: RXLED
C2 Function: TXDEN
C3 Function: PWREN
C4 Function: SLEEP
Warning: Not writing eeprom, you must supply a valid filename
FTDI close: 0

Этой же программой можно писать параметры в еепром ft232, создав конфигурационный файлик.

🙋‍♀️Зачем это надо ?

  • Проверить жив ли ft232
  • Проверить назначение линий CBUS (C0-C4), которые могут быть переопределены.

👍 Полезные факты

  • lsusb -v — должно быть состояние bConfigurationValue = 1

  • PWREN # после того как модуль инициализирован драйвером должен быть в НУЛЕ (0)

  • SLEEP #у FTDI — это сигнал, который показывает, что чип перешёл в режим сна (USB suspend).

Когда USB-шина в нормальном рабочем состоянии → SLEEP# = 1 (логическая единица).

Когда хост перевёл устройство в режим suspend (спящий режим по USB, обычно при бездействии или энергосбережении) → SLEEP# = 0.

😂 Несколько подсказок от чатГПТ (я не проверял)

  1. Сохранить сырой еепром
sudo ftdi_eeprom --read-eeprom текущий.conf --device ft232 --small-eeprom --eeprom-filename дамп.bin
  1. Файл, если нужно прошить свои кастом параметры (ftdi.conf)
vendor_id=0x0403
product_id=0x6001
manufacturer="MyCompany"
product="My FT232R"
serial="FT123456"

# CBUS configuration:
cbus0=1 # Можно оставить как есть или назначить PWREN
cbus1=1 # PWREN, к примеру
cbus2=0 # TXDEN
cbus3=2 # RXLED (имитация RXDEN через LED#)
cbus4=4 # TXRXLED

Как писать

sudo ftdi_eeprom --flash-eeprom ftdi.conf

#sys #ft232 #linux

Конфигурация UART на модуле CM4 в Токосборщике

· One min read
dmn
maintainer

В Токосборщике на модуле CM4 UART-ы расположились следующим образом:

✔️UART3 - внешний датчик Modbus ✔️UART9 - модуль расширений (Zigbee) ✔️UART7 - встроенный датчик тока

Для корректной работе Debian, необходимо подключить оверлеи с uart7,9 в файле /boot/orangepiEnv.txt

root@orangepicm4:~# cat /boot/orangepiEnv.txt 
verbosity=1
bootlogo=false
extraargs=cma=128M
overlay_prefix=rk356x
overlays=uart7-m2 uart9-m2
rootdev=UUID=a0f8ca89-7eb7-4a1e-947a-2341637b4782
rootfstype=ext4
console=serial

#fcucm4 #orangecm4 #fcu

Подключение UART4 в NapiLinux

· One min read
dmn
maintainer

Для подключения uart4 в NapiLinux необходимо:

✔️Создать папку /boot/overlay-user ✔️Положить в нее файл rk3308-uart4.dtbo ✔️Добавить строчку в файл /boot/uEnv.txt

user_overlays=rk3308-uart4 

✔️Перезагрузить систему ✔️Должно появиться устройство /dev/ttyS4

#napi #napioverlay #dts