ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: GPIO  (Прочитано 9065 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Сергей 16 RUS

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 18
GPIO
« : 21 Ноября, 2012, 18:58:03 »

Доброго времени суток.
Изучаем Тион-Про28. Пробую работать с GPIO через Ваш драйвер.
Навскидку прибежавшись по портам (DeviceIoControl) от 0 до 128 удалось задействовать только 6 портов и только на Х22.
Остальные порты остаются неизменны. Это недоработка драйвера или же все таки есть какие то ньюансы при работе с данной платой.
« Последнее редактирование: 22 Ноября, 2012, 08:12:19 от Сергей 16 RUS »
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: GPIO
« Ответ #1 : 23 Ноября, 2012, 20:49:59 »

Порт может быть занят под какую-то другую функцию. Приведите пример порта, который не получается использовать
Записан

Сергей 16 RUS

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 18
Re: GPIO
« Ответ #2 : 26 Ноября, 2012, 13:51:01 »


Пожалуйста, черными точками отмечены порты которые отреагировали на запрос, и по какому номеру порта порт откликнулся.
Все остальные молчат.
« Последнее редактирование: 26 Ноября, 2012, 13:55:21 от Сергей 16 RUS »
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: GPIO
« Ответ #3 : 26 Ноября, 2012, 15:19:59 »

Проверил порты 50 и 52 (вывод 7 и 9) с помощью примера работы с GPIO, который выложен у нас на сайте (http://www.zao-zeo.ru/dokuwiki/doku.php/wince-dev). При установке "Направление->Выход" и "Альт.Функция->GPIO" напряжение на ножке разъема меняется в зависимости от состояния порта.
Записан

Day

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 34
Re: GPIO
« Ответ #4 : 01 Апреля, 2013, 10:05:59 »

Может кто нибудь кинет где можно почитать инфу по работе с GPIO именно imx28 под Linux, или пример инициализации и обращения к ним???
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: GPIO
« Ответ #5 : 01 Апреля, 2013, 12:08:38 »

Почитать про работу с GPIO можно в документации Linux - Documentation/gpio.txt.
А также в документе "i.MX28_Linux_BSP_RM.pdf" раздел "3.4 Pin Multiplexing".
Записан

Day

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 34
Re: GPIO
« Ответ #6 : 10 Апреля, 2013, 12:51:28 »

В общем с GPIO под Linux так и не разобрался. Так и не понял какие библиотеки подключать и какие функции использовать. Всё в общих чертах в доке. Может у кого нить есть простенький пример работы с GPIO на ввод\вывод???
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: GPIO
« Ответ #7 : 15 Апреля, 2013, 14:30:40 »

Постараюсь добавить информацию по работе с GPIO в близжайшее время.
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: GPIO
« Ответ #8 : 24 Апреля, 2013, 21:07:55 »

Для работы с GPIO можно использовать следующий способ:

Например, для GPIO4_20:
echo 148 > /sys/class/gpio/export

далее задаем направление порта:
echo out > /sys/class/gpio/gpio148/direction

и устанавливаем выходное значение:
echo 1 > /sys/class/gpio/gpio148/value

Для использования этого способа необходимо обновить образ Linux на последний.
Записан

Day

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 34
Re: GPIO
« Ответ #9 : 25 Апреля, 2013, 10:43:41 »

Да ))) Теперь есть поддержка работы с GPIO через файлы. Сразу следующий вопрос -> "Как определить номер GPIO для экспорта, зная номер порта и номер пина???".
Записан

Day

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 34
Re: GPIO
« Ответ #10 : 25 Апреля, 2013, 13:20:09 »

а всё разобрался.
просто от 0 и в банке по 32 пина (0 банк считается)
к примеру
-------------
1 банк
32+номер пина
-------------
4 банк
128 + номер пина
--------------
как у вас в примере 4 банк =128 + 20 пин = 148
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: GPIO
« Ответ #11 : 25 Апреля, 2013, 16:54:44 »

Да, все верно. Номер банка умножаем на 32 и прибавляем номер пина в банке.
Записан

OlegSL

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 9
    • Мой блог
Re: GPIO
« Ответ #12 : 08 Ноября, 2013, 20:29:40 »

Возможно мой вопрос не очень компетентный, только начинаю работать с embedded устройствами. А как переключить режим Pin Multiplexing в Linux? Скажем для Beagleboard платы можно сделать с помощью манипулировавшем файлов в /sys/kernel/debug (http://youtu.be/SaIpz00lE84?t=7m26s), а как это можно сделать в Tion?
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: GPIO
« Ответ #13 : 11 Ноября, 2013, 12:16:56 »

Можно установить режим работы вывода в GPIO. Это можно сделать разными способами, подробно описано в документации Linux: Documenentation\gpio.txt.

Включить другой режим, не GPIO, простым способом вряд ли получится, т.к. помимо включения альтернативной функции, необходима еще поддержка драйвера той функции, которую включаете.

Я вижу такие варианты:
1. Включить нужную функцию вывода в исходниках ОС и пересобрать образ.
2. Написать драйвер, и в нем установить нужную функцию.
3. Обращаться к регистрам процессора с помощью ioremap.

Возможно есть и другие способы.
Записан

plonti

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 2
Re: GPIO
« Ответ #14 : 28 Августа, 2014, 15:39:45 »

А как получить доступ к GPIO, допустим на разъеме X19?
В "Назначении контактов" у данных пинов - четвертый банк, т.е. номер gpio должен быть 128 + X.
Но в тестовом примере есть код:

if ((uGPIO>128)||(uGPIO<0)){
    MessageBox(L"Неверно указан номер порта",L"Ошибка",MB_OK);
    return;
}

Соответственно при попытке доступа будет выкидыться ошибка.
Или такое ограничение только в GPIO_test заложено?

UPD: набросал пробную программу, да, действительно, в драйвер можно передавать значения > 128, вопрос снят.
« Последнее редактирование: 28 Августа, 2014, 19:39:55 от plonti »
Записан