Техническое руководство по AM335x (документ TI spruh73) дает ограничения скорости передачи для подсистемы UART в разделе UART (раздел 19.1.1, стр 4208 в версии spruh73l):
- скорость передачи от 300 бит до 3,6864 Мбит
УАПП модули каждый имеет 48MHz часы, чтобы генерировать их синхронизацию , Они могут быть сконфигурированы в одном из двух режимов: UART 16x и UART 13x, в которых эти часы делятся на 16 и 13 соответственно. Затем имеется сконфигурированный 16-разрядный делитель для генерации фактической скорости передачи данных с этих часов. Таким образом, для 300 бит/с это будет UART 16x и делитель 10000, или 48MHz/16/1000 = 300 bps
.
Когда вы сообщаете драйверу ядра omap-serial
(это драйвер, используемый для UART на BeagleBone), он вычисляет режим и делитель, который наилучшим образом приближает скорость, которую вы хотите. Фактическая скорость, которую вы получите, ограничена тем, как она сгенерирована - например, если вы попросили произвольный бод в 2998 бит/с, я полагаю, что вы действительно получите 2997.003 бит/с, потому что 48MHz/16/1001 = 2997.003
ближе к 2998, чем 48 MHz/16/1000 = 3000
.
Таким образом, модули UART могут, безусловно, генерировать все стандартные скорости передачи, а также большой диапазон произвольных (вам нужно будет на самом деле сделать математику, чтобы увидеть, как близко она может получить). В системах на базе Linux PySerial просто отправляет по боду, который вы передаете его драйверу ядра через вызов ioctl, поэтому он также не будет ограничивать вас.
Примечание: Я просто тестирование отправки данных о из BeagleBone Black в 200 бит, и она работала хорошо, но он не генерирует 110 бит (следующий более низкий уровень скорости передачи ниже 300 бит), так что указанные пределы действительно самые низкие и самые высокие стандарт тарифы, которые он может сгенерировать.