подключение UART2 по каналу RS-485
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
Доброго времени суток, уважаемые коллеги.
Изделие SK-iMX6S-SODIMM, совместное использование с SK-iMX6-MB-SODIMM. Цель - подключение UART2 по каналу RS-485, управление направлением передачи с помощью сигнала UART2 CTS_B.
1. В файле imx6qdl-sodimm.dtsi выпилил устройство ecspi1, закомментив строки 120-146, 276, 309-319. Цель - освободить контакт проца G23 EIM_D28.
2. Воткнул после строки 505 (там где пины UART2 описаны) строку вида
MX6QDL_PAD_EIM_D28__UART2_CTS_B 0x1b0b1 - подключил сигнал UART2_CTS_B к освободившемуся контакту EIM_D28.
3. пересобрал ядро, вызвав kernel_rebuild.sh и залил все в плату SK-iMX6S-SODIMM.
В результате пин EIM_D28 сидит в нуле и управлять направлением не желает. Я что-то не доделал. Подскажите пожалуйста, что я недоделал и где прочитать про это. Заранее благодарен. |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
sasamy спасибо Вам большое, а какое ядро Вы порекомендуете - 3.14 или совсем новое 4.1.15? |
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
4.1.15 наверное допиливают еще.....
Дайте ссылку пожалуйста, откуда можно скачать 3.14. |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
sasamy добрый вечер. скачал по Вашей ссылке ядро версии 3.14, распаковал рядом с версией 3.10.17, зашел в каталог версии 3.14, выполнил make clean, make imx6sk_qt5gst_defconfig, make menuconfig, выбрал тип платы, типы дисплеев, включил watchdog, запомнил.
Запустил make. Собралось с ошибками. Запустил make повторно, в консоли указав файл лога ошибок. Файл присоединяю.
Если не трудно, взгляните на лог. Где я мог накосячить?
Делал все точно как с версией 3.10.17 - эта версия собирается отлично.
Версия 3.14 собираться не хочет. Заранее благодарен. |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
sudo apt-get install pkg-config выполнил, Версия 3.14 собралась. При попытке вставить MX6QDL_PAD_ХХХ_ХХХ__GPIO1_IO11 0x80000000 и rs485-gpio = <&gpio1 11 0>; сигнал GPIO1_IO11 начинает управлять направлением передачи, однако перестает выдавать данные передатчик!
Пробовал использовать сигнал GPIO1_IO14 - результат тот же - при активизации сигнала GPIO1_IOхх в фале dtsi сигнал начинает управлять, но перестает выдавать данные передатчик, а если закомментить сигнал GPIO1_IOхх в фале dtsi, то передатчик начинает работать, но управление не работает. Может это ошибка в драйвере? |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
Скорей всего порт настроен неправильно, повторюсь - нужен raw режим с полным отключением эха и управления потоком. Драйвер я проверял так - соединял два порта через трансмиттеры и гонял данные - у меня ничего не перестает передавать, если отключить управление и эхо. |
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
sasamy добрый день.
Прошу Вас посмотреть код инициализации UART:
sfd = open("/dev/ttymxc1", O_RDWR | O_NOCTTY);
if (sfd < 0) {
qDebug() << "Can't open %1, error code %2", sfd, strerror(errno);
return;
}
qDebug() << "UART Status: Running, connected to port ttymxc1";
rc = tcgetattr(sfd, &tty);
if (rc < 0) {
qDebug() << "Failed to get attr: %1, error code %2", rc, strerror(errno);
return;
}
savetty = tty; /* preserve original settings for restoration */
spd = B115200;
cfsetospeed(&tty, (speed_t)spd);
cfsetispeed(&tty, (speed_t)spd);
cfmakeraw(&tty);
tty.c_cc[VMIN] = 1;
tty.c_cc[VTIME] = 1000;
tty.c_cflag &= ~CSTOPB;
tty.c_cflag &= ~CRTSCTS; /* no HW flow control? */
tty.c_cflag |= CLOCAL | CREAD;
rc = tcsetattr(sfd, TCSANOW, &tty);
if (rc < 0) {
qDebug() << "Failed to set attr: %1, error code %2", rc, strerror(errno);
return;
}
Я видимо установил raw режим не полностью, так как проблема осталась:
как только я устанавливаю пин управления направлением передачи, перестает работать передатчик (да и приемник тоже). Что я забыл? |
|
|
|
|
|
|
|