rasperry и UART
-
День добрый.
Оговорюсь сразу, я только купил Малинку и смутно представляю как с ней работать.
Глобально задача:
Мне необходимо по команде от устройства(Устройство общается со мной по UART со своим определенным протоколом)Считать данные с Флешки и сохранить их. Простая БД в текстовом формате.
Далее по следующим запросам выдавать нужную информацию из скаченой БД.
При установки ОС Raspbian я установил не консольную, а визуальную среду.Не могли бы вы подсказать статью, где было-бы доходчиво описано как же работать с UART.
Мне не понятно, где вообще писать программу обработки данных по UART. Надо ставить софт отдельный? Что-то вроде Kylix(Делфи под линукс). Но тогда нужны специальные библиотеки для работы с портами Малинки. Но я их не нашел. -
Присоединяюсь к теме!
Но у меня вопрос другой —
- каков предельный потребляемый ток от малинки?
- В каких логических уровнях выполнен UART у RasPI? 0...+5V или как в RS232?
-
Нет у Raspberry UART, ну нет и всё тут!
-
andreich (2014-11-11 20:17:57):Присоединяюсь к теме!
Но у меня вопрос другой —
- каков предельный потребляемый ток от малинки?
- В каких логических уровнях выполнен UART у RasPI? 0...+5V или как в RS232?
- максимум 50 мА.
- Напряжение строго 3.3В. Больше нельзя, а то сгорит.
hexvolt.blogspot.ru/2013/02/raspberry-pi-gpio.html
man2000 (2014-11-12 18:08:28):Нет у Raspberry UART, ну нет и всё тут! Собственно вам туда-же и по той-же ссылке…
Самое вменяемое, что я смог найти это: www.avislab.com/blog/raspberry-pi-uart_ru/
Лично я опробовал код на С. На отправку пакетов все работает. Кстати вот хорошая ссылка по настройке работы ЮАРТ www.techpages.org/os/unix-c-program-to-access-serial-port-through-device-file/76/
На данный момент мне осталось непонятно вот что:
Например, когда я писал программу на делфи, под виндоус, у меня был компонент который самостоятельно смотрел за моим ком-портом(На комп порте висел преобразователь в RS485). Моя программа могла делать что угодно. И в параллель компонент/ОС следили за портом, и как только там что-то начинало приниматься он заполнял свой буффер и выставив флаг о принятых данных, запускал подпрограмму где я уже мог анализировать принятый код. Ну есть у меня команда read, но что она читает? Мне надо зациклить мою программу на этой команде? Или же Малина сама принимает данные и хранит где-то в своих буфферах, которые я этой командой и считываю?
-
Не надо путать UART и GPIO или вопросы задавайте по-корректнее. А команда read действительно читает внутренний буфер Linux. Это не Arduino. Для работы Raspberry по UART используйте USB-адаптер.
-
man2000 (2014-11-18 11:26:33):Не надо путать UART и GPIO или вопросы задавайте по-корректнее. А команда read действительно читает внутренний буфер Linux. Это не Arduino. Для работы Raspberry по UART используйте USB-адаптер. Зачем? Везде пишут, что часть GPIO можно настроить под разные интерфейсы:
Доступные периферийные ресурсы:
UART
I2C bus
SPI bus with two chip selects
+3.3V
+5V
Ground
В интернете куча статей, как люди подключают(используя GPIO) по ЮСАРТу разные устройства. А вы все твердите, что по интерфейсу ЮАРТ я не могу соединить Малину с другими устройствами без доп оборудования.
Может я чего-то не понимаю в этой жизни?
А касаемо read. Я все ни как понять не могу.
Я соединил некое устройство с малиной через RX и TX. Я открываю порт(Командой open), передаю через TX данные(командой write). И Моё устройство благополучно его принимает. Я оставляю открытым порт, отправляю с моего устройство информацию, пытаюсь считать командой read, но ничего не считывается…
Я правильно понимаю механику работы? Если порт открыт, не в зависимости от того чем занята моя программа сам Линукс считывает данные с порта и сохраняет их. После в любой момент я могу прописать команду read, и считать информацию с буффера? -
Linux сам ничего не «считывает», считывает драйвер устройства в буфер чтения. Именно поэтому оптимальнее использовать USB-адаптер и его драйвер, а не пытаться реализовать драйвер самостоятельно, используя порты GPIO.
-
Maguark (2014-11-18 14:01:02): man2000 (2014-11-18 11:26:33):Не надо путать UART и GPIO или вопросы задавайте по-корректнее. А команда read действительно читает внутренний буфер Linux. Это не Arduino. Для работы Raspberry по UART используйте USB-адаптер. Зачем? Везде пишут, что часть GPIO можно настроить под разные интерфейсы:
Доступные периферийные ресурсы:
UART
I2C bus
SPI bus with two chip selects
+3.3V
+5V
Ground
В интернете куча статей, как люди подключают(используя GPIO) по ЮСАРТу разные устройства. А вы все твердите, что по интерфейсу ЮАРТ я не могу соединить Малину с другими устройствами без доп оборудования.
Может я чего-то не понимаю в этой жизни?
А касаемо read. Я все ни как понять не могу.
Я соединил некое устройство с малиной через RX и TX. Я открываю порт(Командой open), передаю через TX данные(командой write). И Моё устройство благополучно его принимает. Я оставляю открытым порт, отправляю с моего устройство информацию, пытаюсь считать командой read, но ничего не считывается…
Я правильно понимаю механику работы? Если порт открыт, не в зависимости от того чем занята моя программа сам Линукс считывает данные с порта и сохраняет их. После в любой момент я могу прописать команду read, и считать информацию с буффера? Все. Я разобрался. Я все правильно понимал. Оказывается при повторном открытии порта буффер очищается. Моя программа каждый раз начинала с открытия порта, и как следствие обнуляла все принятые данные. -
Без драйвера UART на GPIO будет работать, НО загрузка процессора и надежность чтения данных будут непредсказуемы.
-
Без драйвера UART на GPIO будет работать, НО загрузка процессора и надежность чтения данных будут непредсказуемы. А вот SPI и I2C действительно реализованы в Raspbian на уровне драйверов, поэтому работают без проблем.