Raspberry pi 4 uarts

UART configuration

1. Show all serial commands

Show all serial ports in pi4

2. View specific serial port information

View the configuration information of UART2, etc.:

Related information will show the allocation of GPIOs and the new UART serial port: 0-3 corresponds to UART2, 4-7 corresponds to UART3, 8-11 corresponds to UART 4, and 12-15 corresponds to GUIO 5

For the CTS/RTS corresponding to the last two of the 4 pins, please refer to: https://blog.csdn.net/zeroboundary/article/details/8966586

3. Configure to open the serial port UART2-5

Execute the edit config.txt command:

Add the following at the end of the file:

Save (Write Out) and exit (Exit)

Check whether it takes effect after restarting:

The results are as follows:

Correspondence between each UART serial port and GPIO:

4. Testing

4.1 Serial port spontaneous sending and receiving test

Now we first test whether UART2 is successfully enabled. The simpler way to test is to connect its TXD and RXD, and send and receive spontaneously.

According to the above correspondence, UART2 corresponds to TXD2 and RXD2, corresponds to GPIO0 and GPIO1, and corresponds to ttyAMA1

Note: UART0 corresponds to ttyAMA0, UART1 corresponds to ttyS0, UART2 to UART5 corresponds to ttyAMA1 to ttyAMA4.


Find the corresponding GPIO0 and GPIO1 pins to connect:


Enter the Python3 environment on the Raspberry Pi command line, and send and receive it spontaneously through the following modules and commands:

In the same way, we can continue to use jumper caps to connect GPIO4 and 5 to test UART3; GPIO8 and 9 to test UART4; GPIO12 and 13 to connect to test UART5.

4.2 Communication test between serial ports

Next, test the communication between UART2 and UART3. Connect TXD2 to RXD3, that is, GPIO0 and GPIO5; connect TXD3 and RXD2, that is, GPIO4 and GPIO1.

OK It went well, and the communication between UART2 and UART3 is normal.

Источник

¶ Подключение к Raspberry Pi

¶ Быстрый переход на ключевые разделы

¶ Вступление

Управляющий Raspberry Pi подключить к управляемому МК принтера можно двумя основными способами:

От выбора подключения будут зависеть настройки прошивки микроконтроллера принтера, доступность Raspberry Pi и подключение питания и дисплея к нему, наличие проводов и коннекторов снаружи принтера.

¶ Подключение по USB

Соединение с помощью обычного кабеля USB. Со стороны Raspberry Pi в случае Pi 3 и 4 используется стандартный разъем «USB type-A», в случае Pi Zero W — «MicroUSB type-B OTG через адаптер. Со стороны большинства плат принтера используется «USB type-B». Обычно скорость коммуникации не больше 250000 Бод, самые стабильные показатели соединения при 115200 Бод.

В настройках Klipper я всегда выставлял 250000 и не наблюдал проблем при подключении по USB

  • Не требует дополнительной настройки
  • Провод поставляется в комплекте с принтером
  • Крепление проводки и Raspberry Pi снаружи корпуса принтера
  • Штекер USB обычно торчит из корпуса принтера и может быть случайно сломан

¶ Подключение

Проще некуда: втыкаем один конец кабеля USB в Raspberry Pi, другой в принтер. Ищем, куда бы удобно пристроить одноплатник, чтобы не мешал.

В случае Pi Zero W у нас 2 гнезда microUSB: одно для питания, другое (OTG) для подключения периферии. Подключаем адаптер OTG в гнездо microUSB-OTG, к нему подключаем кабель USB, а дальше как обычно.

¶ Подключение по UART

Так называемое 3-Wire соединение 3-х жильным кабелем контактов TX , RX и GND на Raspberry Pi и плате принтера. Контакты TX и RX соединяются перекрестно, т.е. TX Pi с RX МК и наоборот.

Позволяет более быстрое и стабильное соединение между Pi и принтером. Стабильная скорость коммуникации 250000 Бод

Некоторые платы, такие как MKS Robin Nano, получают питание от Raspberry Pi по USB. Это требует отключение как питания от БП принтера, так и от Pi для отключения управляющей платы. В свою очередь не даёт управлять питанием принтера с помощью Pi, требует дополнительных шагов для перепрошивки принтера, а в некоторых случаях вызывает ошибку «Undervoltage» на Pi не смотря на достаточное питание. Подключение по UART избавляет от этих недостатков. Но требует дополнительную настройку Raspberry Pi и другую конфигурацию прошивки МК. Не все принтеры обладают возможностью такого подключения. Платы как BTT SKR 1.3/1.4 обладают джампером для отключения получения питания по USB.

  • Скорость и стабильность
  • Размещение Raspberry Pi и проводки внутри корпуса
  • Возможность настроить управление питанием принтера через дополнительные реле или модули
  • Нет необходимости отключать Pi от принтера при прошивке
  • Более сложные настройки, иногда и танцы с бубном
  • Сложности в подключении некоторых одноплатных компьютеров других производителей

¶ Подключение Raspberry Pi Zero W по UART

Задействует пины GPIO14 и GPIO15 .

Запускаем конфигурацию Raspberry Pi, удобнее всего выполнить это на этапе Настраиваем Raspberry Pi

  • Выбираем Interface Options -> Serial Port
  • Выбираем No — отключаем serial console
  • Выбираем Yes — включаем serial hardware
  • Жмём OK , затем Finish и Yes для перезагрузки

После перезагрузки редактируем /boot/config.txt , потребуется root-доступ

Проверяем наличие двух строчек, редактируем, если надо

Сохраняем и перезагружаем

Подключение будет доступно через серийный порт /dev/ttyAMA0 .

Можно припаять провода напрямую, или припаять гребёнку. Иногда RPi Zero W продаётся с припаянной гребёнкой.

¶ Схема подключения RPi Zero по UART

  • TX на GPIO14 — пин №8,
  • RX на GPIO15 — пин №10,
  • GND на любой свободный, например, на пин №14.

¶ Подключение Raspberry Pi 3B+ по UART

У этого одноплатника 2 серийных порта — миниUART и обычный UART. Пины UART в обычном состоянии заняты модулем Bluetooth. МиниUART — обрезанный UART и имеет ряд ограничений и поэтому крайне желательно отключить Bluetooth и использовать обычный UART. Задействует пины GPIO14 и GPIO15 .

Запускаем конфигурацию Raspberry Pi, удобнее всего выполнить это на этапе Настраиваем Raspberry Pi

  • Выбираем Interface Options -> Serial Port
  • Выбираем No — отключаем serial console
  • Выбираем Yes — включаем serial hardware
  • Жмём OK , затем Finish и Yes для перезагрузки

После перезагрузки редактируем /boot/config.txt , потребуется root-доступ

Проверяем наличие двух строчек, редактируем, если надо

Сохраняем и перезагружаем

Подключение будет доступно через серийный порт /dev/ttyAMA0 .

dtoverlay=pi3-disable-bt отключает bluetooth и освобождает пины для UART. Если по какой-либо причине bluetooth нужен, то можно заменить на dtoverlay=pi3-miniuart-bt , что включит миниUART. Подключение через /dev/ttyS0 .

¶ Схема подключения RPi 3 по UART

  • TX на GPIO14 — пин №8,
  • RX на GPIO15 — пин №10,
  • GND на любой свободный, например, на пин №14.

¶ Подключение Raspberry Pi 4 по UART

У этого микрокомпьютера в общей сложности 5 серийных портов. Самый подходящий для подключения к принтеру — UART5 . У него нет ограничений, как у других четырёх и его пины GPIO12 и GPIO13 позволяют подключить экран к освободившимся GPIO14 и GPIO15.

Запускаем конфигурацию Raspberry Pi, удобнее всего выполнить это на этапе Настраиваем Raspberry Pi

  • Выбираем Interface Options -> Serial Port
  • Выбираем No — отключаем serial console
  • Выбираем Yes — включаем serial hardware
  • Жмём OK , затем Finish и Yes для перезагрузки

После перезагрузки редактируем /boot/config.txt , потребуется root-доступ

Проверяем наличие двух строчек, редактируем, если надо

Сохраняем и перезагружаем

Подключение будет доступно через серийный порт /dev/ttyAMA1 .

¶ Схема подключения RPi 4 по UART5

  • TX на GPIO12 — пин №32,
  • RX на GPIO13 — пин №33,
  • GND на любой свободный, например, на пин №34.

¶ Питание

Питание можно подключить:

через GPIO пины №2/4 и №6

Преимущества подключения в компактности и простоте в случае, если Raspberry Pi размещён внутри корпуса принтера, где места не так уж и много. Недостатки в том, что на GPIO нет защиты от перенапряжения или скачков.

через USB: стандартный разъем microUSB на RPi Zero и RPi 3 или USB-C на RPi 4

Преимущества подключения через microUSB/USB-C в том, что питание проходит через предохранитель (polyfuse) и не поджарит одноплатник до состояния Well Done.

Для нестандартных блоков питания можно просто обрезать качественный провод для зарядки смартфона, оставив коннектор для подключения к RPi, и прикрутить к БП. Недостатки в том, что коннектор выпирает из корпуса Pi.

подпаявшись к контактам USB-разъема питания — способ для ценителей

Сочетает в себе плюсы обоих предыдущих. Можно подпаяться к контактам разъема питания на плате, сохранив тем самым компактность и защиту. Но при неумелом использовании паяльника можно зажарить RPi ещё до включения. Подробнее, например, тут и тут.

Источник

Raspberry Pi 4, 3 and Zero W Serial Port Usage

The Raspberry Pi 3, 4 serial port

The Raspberry Pi 3 Model B, B+, Pi Zero W contain two UART and Pi 4 four UART controllers which can be used for serial communication (more information here), the mini UART and PL011 UART . By default, the mini UART is mapped to the TXD ( pin 8 / GPIO 14 ) and RXD ( pin 10 / GPIO 15 ) on the 40 pin GPIO header and the PL011 UART is used for the Bluetooth/Wireless module but either module can be mapped to the GPIO port.

UART on the 40 pin GPIO PI header

The Raspberry Pi UARTs

A Universal Asynchronous Receiver-Transmitter (UART) is a computer hardware device for asynchronous serial communication in which the data format and transmission speeds are configurable. The electric signaling levels and methods are handled by a driver circuit external to the UART. A UART is usually an individual (or part of an) integrated circuit (IC) used for serial communications over a computer or peripheral device serial port. One or more UART peripherals are commonly integrated in microcontroller chips. A related device, the universal synchronous and asynchronous receiver-transmitter (USART) also supports synchronous operation. (Wikipedia)

UART0 = PL011

The Raspberry Pi SoC is still based on the same hardware, the BCM2835. Only the microprocessor has evolved. The BCM2835 has two UARTs for serial links. The first, PL011 is a “real” UART:

BCM2835 — UART block diagram

That is, it is autonomous, with its own Baud Rate generator, and all the circuits necessary for its operation.

UART1 = “mini” UART

The second UART is a “mini” UART:

BCM2835 — mini UART baudrate

The “mini UART” port can be accessed using the /dev/ttyS0 device in Linux. One issue with the “mini UART” controller is that its baud rate is linked to the VPU core frequency so as the VPU frequency changes depending on processor load so does the baud rate of the UART controller. This will cause problems as serial devices expect a constant baud rate during communication.

To fix this issue the VPU core frequency must be fixed which can either limit the speed of the Raspberry Pi or increase power consumption and heat generated depending on what speed the core frequency is set at.

The mini UART controller has a smaller FIFO buffer than the PL011 UART controller. This can cause problems at higher baud rates as it makes losing characters more likely.

The PL011 UART controller is not linked to the VPU core frequency. This means that the baud rate stays the same regardless of VPU speed. The PL011 UART controller also includes other features not present in the mini UART controller such as framing error detection, break detection, receive timeout interrupts and parity bit support.

The main disadvantage of using the PL011 UART controller is that it disables the Bluetooth/Wireless module so you will be unable to use the Bluetooth features of the Raspberry Pi4, Pi3 and Zero W.

I recommend using the PL011 UART controller in any situation where a reliable data connection is needed, or power consumption and processor speed are a priority.

If you need to use the Bluetooth module on the Raspberry Pi, then you should use the mini UART controller.

Make a choise

The first thing to do is a choice. Do I need Bluetooth? My answer is no. This means that I can disable the Bluetooth and therefore recover the “Kivabian” UART.

You have 4 options

Option 1 : Using the real PL011 UART port

Use the UART (the real one!) by losing the Bluetooth function. You must swith the I/O of the two UARTs.

  • Step 1 — Login via terminal or desktop and shell
  • Step 2 — Device Tree settings as below:

Add device tree to /boot/config.txt to disable the bluetooth module.

Add at the end of the file for pi4

Looking in /boot/overlays/README from the September 2019 release of Raspbian Buster I can now see disable-bt documented

  • Step 3 — Exit the editor saving your changes and then:

If everything is ok by doing an ls -l /dev/serial* you should find a serial0 port which points to ttyAMA0 .

  • Step 4 — Disabling the Serial Console (optional)

The serial console on Raspberry Pi Buster is enabled by default. To use the UART port with serial devices you will need to disable the console.

To disable the serial console, you need to edit the /boot/cmdline.txt file

Find the following text and remove it:

Exit the editor saving your changes and then:

  • Step 5 — Disabling bluetooth on raspberry

With the serial console disabled you can now access the UART serial port at /dev/ttyAMA0 . I chose this option.

Option 2 : Operate the serial interface and Bluetooth

The processor clock speed will be fixed (at a low speed [250MHz] or at a high speed [500MHz?]).

Add enable_uart = 1 to /boot/config.txt This will affect processor performance as it controls the speed of the L2 cache, and there will also be a reduction in analog audio quality

If you want high clock speed (you will really need a fan and a heatsink) to keep the processor performance and audio quality, also add force_turbo = 1 to /boot/config.txt

Option 3 : Correct Bluetooth with “rotten” serial interface

Having a “rotten” serial interface on the GPIO (variable speed) with having correct Bluetooth: Do nothing. These are the default settings

Option 4 : Correct serial interface (UART) with slowly Bluetooth

Operate the serial interface (UART) correctly, with a Bluetooth which operates slowly.

Add dtoverlay = miniuart-bt to the file /boot/config.txt

Set the frequency to a fixed (low) value by adding, still to /boot/config.txt : core_freq = 250 . This will affect processor performance.

If you prefer to keep higher performance do not add the line core_freq = 250 but rather the line force_turbo = 1 (this requires using a fan and a radiator).

How to test the configuration

Before to connect anything to the serial port, we must test at first if it works. Connect the GPIO 14 (pin 8) and GPIO 15 (pin 10) corresponding to TxD (data sent) and RxD (data received). When you are going to send data to the TxD serial port, they will come back through the RxD port … (loopback)! And the program used to send the data will receive it and display it.

Loopback UART on the 40 pin GPIO PI header

Connect pin 8 and pin 10 with a resistor to avoid destroying the ports (or worse) in the event of an error. 680 Ω or 560 Ω will do it well.

The loopback works well when the UART is connected to pins 8 and 10. Remember to disconnect the short-circuit between these two pin after the end of the tests, otherwise you risk damaging your SoC !

Python script for test

This program will send data as output to the serial port, then retrieve it from the input. Here the test that interests us is that of /dev/ttyAMA0 .

  • Start the test program and you should get:

If you do not have confirmation that the ttyAMA0 port is working correctly, no need to continue. You must first operate this port to use it. Share on :

About

IT Consultant, Technical Architect & Developer. Highly qualified professional offering 22 years of experience with international and high-profile companies.

Strong experience in Energy & Utilities, Smart Metering, Telecommunication, Embedded System, and Information Systems Security.

Arduino PRO Portenta H7 board and carrier

Production ready certified hardware. Designed for demanding industrial control, AI edge processing, and robotics applications Continue reading Arduino PRO Portenta H7 board and carrier

Tips — Disabling Bluetooth on Raspberry Pi

This post shows steps to “1. disable on-board Bluetooth” and “2. disable Bluetooth completely”. Continue reading Tips — Disabling Bluetooth on Raspberry Pi

Random Posts

  • COVID-19, Automatically generate a French confinement certificate (Shortcut iOS) 30 Oct 2020
  • LTE and Starlink ISP — How to access to your LAN from outside 01 Jan 2022
  • How to host a site on the Dark Web 12 Nov 2020

© 2022 under the terms of the GPL-3.0 License

“The most incomprehensible thing about the world is that it is comprehensible” Albert Einstein

Источник

Adblock
detector