Ответы:
Этот ответ все еще корректен и более подробно объясняет природу изменений, но большинство пользователей текущего Raspbian должны просто запустить
sudo raspi-config
Select, аInterfacing Options / Serial
затем указать, хотите ли вы использовать последовательную консоль (вероятно, нет), а затем, если вы хотите, чтобы аппаратное обеспечение последовательного порта было включено (возможно, да). Затем используйте/dev/serial0
любой код, который обращается к последовательному порту.
BCM2837 на Raspberry Pi3, Pi3B +, Pi3A +, PiZeroW имеет 2 UART (как и его предшественники), однако для поддержки функциональности Bluetooth полнофункциональный UART PL011 был перенесен с выводов заголовка на чип Bluetooth, а мини-UART стал доступен на контакты заголовка 8 и 10.
(SOC на Pi4 имеет дополнительные UART, но те же 2 UART, что и BCM2837, используются для серийного соединения по умолчанию на контактах 8 и 10 и Bluetooth.)
Это имеет ряд последствий для пользователей последовательного интерфейса.
/dev/ttyAMA0
Ранее используемый для доступа к UART в настоящее время подключается к Bluetooth.
MiniUART теперь доступен на /dev/ttyS0
.
В последней версии программного обеспечения операционной системы есть , /dev/serial0
который выбирает соответствующее устройство , так что вы можете заменить /dev/ttyAMA0
с /dev/serial0
и использовать то же программное обеспечение на PI3 и более ранних моделей.
К сожалению, есть ряд других последствий:
The mini UART is a secondary low throughput UART
intended to be used as a console.
The mini Uart has the following features:
• 7 or 8 bit operation.
• 1 start and 1 stop bit.
• No parities.
• Break generation.
• 8 symbols deep FIFOs for receive and transmit.
• SW controlled RTS, SW readable CTS.
• Auto flow control with programmable FIFO level.
• 16550 like registers.
• Baudrate derived from system clock.
Поддержка четности не поддерживается, а пропускная способность ограничена, но последнее не должно влиять на большинство применений.
Существует одна особенность «Скорость передачи, полученная из системных часов», которая делает miniUART бесполезным, поскольку эти часы могут динамически изменяться, например, если система переходит в режим пониженной мощности или в режим низкой мощности.
Модификация /boot/config.txt
удаляет эту зависимость, добавляя следующую строку в конце: -
core_freq=250
Это решает проблему и, кажется, оказывает небольшое влияние. Символы SPI clock frequency
и ARM Timer
также зависят от системных часов.
По какой-то странной причине по умолчанию для Pi3, использующего последнее ядро 4.4.9, является ОТКЛЮЧЕНИЕ UART. Чтобы включить ее нужно изменить
enable_uart=1
в/boot/config.txt
. (Это также исправляет,core_freq
так что это больше не нужно.)
Наконец, если вы не используете Bluetooth (или используете его нетребовательно), можно поменять порты обратно в дереве устройств. Существует pi3-miniuart-bt
и pi3-disable-bt
модуль, который описан в /boot/overlays/README
.
наконец это получилось для моего pi3 (os: debian jessie)
Пожалуйста, внимательно следуйте этим 6 шагам .
Шаг 1 - Установите Raspbian Jessie на SD-карту и загрузите Pi при подключении к сети. Войдите через терминал или рабочий стол и оболочку. Сконфигурируйте систему с помощью:
sudo raspi-config
Разверните файловую систему и включите последовательный порт на расширенной странице, выйдите и перезагрузитесь.
Шаг 2 - в этом нет необходимости, если у вас есть новый выпуск jessie. Обновите систему:
sudo apt-get update
sudo apt-get upgrade
Шаг 3 - Настройки дерева устройств, как показано ниже:
Добавьте дерево устройств в /boot/config.txt, чтобы отключить Bluetooth Raspberry Pi 3.
sudo nano /boot/config.txt
Добавить в конец файла
* если вы хотите изменить blutooth на порт miniuart (плохо)
dtoverlay=pi3-miniuart-bt
* если вы хотите отключить Bluetooth (хорошо)
dtoverlay=pi3-disable-bt
Выйдите из редактора, сохранив свои изменения.
Шаг 4 - перезагрузите пи
sudo reboot
шаг 5 -
а) чтобы отключить Serial Console, отредактируйте файл, используя
sudo nano /boot/cmdline.txt
удалить слово фаза " console=serial0,115200
" или " console=ttyAMA0,115200
"
Выйдите и сохраните ваши изменения
б) Включить Serial Console, отредактировать файл, используя
sudo nano /boot/cmdline.txt
Измените файл на следующий:
dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Выйдите и сохраните ваши изменения
Шаг 6 - перезагрузите пи
sudo reboot
----------------- вот и все, веселись ---------------------------- ---
Ответ Насера правильный, но немного сложный, если вы только что мелькнули в последней версии. Все, что мне нужно было сделать, это просто добавить следующую строку в мой config.txt (например, из окон, где вы вставляете SD-карту в раздел fat32):
dtoverlay=pi3-disable-bt
Затем подключите его, и пи напрямую напечатает на выводах консоли.
9600
. Так что должно работать, если я установлю,core_freq=250
а затем настрою свою скорость передачи в скрипте ma python? Кроме того, было бы здорово, если бы вы могли взглянуть на: raspberrypi.stackexchange.com/questions/47379/… Спасибо!