Скорость передачи данных Raspberry Pi UART заблокирована на уровне 9600

Я использовал raspberry pi с преобразователем usb в rs232, но теперь мне приходится использовать контакты UART Raspberry Pi, но у меня такая глупая проблема.

Я использую библиотеку termios.h на C (http://en.wikibooks.org/wiki/Serial_Programming/termios), и он очень хорошо работает с преобразователем, но когда я использую контакты UART, в то время как я устанавливаю скорость передачи данных как

cfsetospeed(&tio,B115200);            // 115200 baud
cfsetispeed(&tio,B115200);            // 115200 baud

скорость передачи по-прежнему работает на уровне 9600. Есть ли какие-либо другие настройки, связанные с библиотекой termios? Если нет, что мне нужно сделать, чтобы изменить скорость передачи данных?

Также я пробовал со скоростью 4800 бод, и он все еще работает со скоростью 9600, когда я использую UART, но с преобразователем usb в rs232 проблем нет.

я пользуюсь библиотекой

https://github.com/irukeru/TermiosSerialCom

что я модифицировал и с другими устройствами проблем нет.


person irukeru    schedule 04.09.2014    source источник
comment
Вы смотрели ответы на похожий вопрос? - stackoverflow.com/questions/4968529/ Похоже, что возможность установить более высокую скорость передачи данных зависит от оборудования/системы.   -  person Vite Falcon    schedule 04.09.2014
comment
И вы устанавливаете атрибуты для правильного устройства? Пожалуйста, покажите, как вы получаете и устанавливаете атрибуты, и как вы открываете устройство.   -  person Some programmer dude    schedule 04.09.2014
comment
Кажется, вы не проверяете статус, возвращаемый cfsetospeed/cfsetispeed ?   -  person Paul R    schedule 04.09.2014
comment
@PaulR, ты прав. Я проверю прямо сейчас. Но, как я уже говорил, у меня эта проблема только с контактами UART. В моем коде C нет 9600.   -  person irukeru    schedule 04.09.2014
comment
9600 обычно является скоростью передачи данных по умолчанию, поэтому ваши попытки изменить скорость передачи данных, вероятно, просто терпят неудачу.   -  person Paul R    schedule 04.09.2014
comment
Я проверил с помощью stty, и скорость передачи данных по умолчанию составляет 38400: S. Я сойду с ума, как она может быть на 9600   -  person irukeru    schedule 04.09.2014
comment
Вы уверены, что у вас есть разрешение на изменение скорости передачи данных? Попробуйте запустить программу от имени пользователя root, чтобы убедиться.   -  person Prof. Falken    schedule 04.09.2014
comment
Я пробовал, но ничего не изменилось. Может быть, мне нужно переустановить raspbian, чтобы решить эту проблему:/   -  person irukeru    schedule 04.09.2014


Ответы (1)


Не вижу ответа на ОП в этой ветке, поэтому, поскольку я потратил много времени на его поиски и ради всеобщего сведения, вот как изменить скорость передачи данных UART по умолчанию на Raspberry Pi: просто отредактируйте файл /boot/config.txt на добавьте следующую строку:

init_uart_baud=115200

Для этого вам потребуются права root, поэтому не забудьте либо начать с sudo su, а затем nano /boot/config.txt, либо просто sudo nano /boot/config.txt и добавить определенную строку в конце. Затем перезагрузитесь (sudo reboot).

Дополнительные параметры конфигурации /boot/config.txt см. по следующей ссылке.

person Ozk    schedule 08.04.2015