Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Теория и практика автоматизации
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Вопрос по портам GPIO

 Ответить Ответить
Автор
Сообщение
Danil Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Апрель 2010
Категория: инжерен
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - Danil Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Вопрос по портам GPIO
    Опубликовано: 13 Апрель 2011 04:56
Есть плата Advantech PCM-4153 на ней порты цифрового ввода/вывода GPIO. Не могу получить доступ к этим портам, не известны адреса регистров управления этими портами. В документации описана работа с этими портами через библиотечные функции т.к. работаю в QNX нет возможности изпользовать эти функции, необходимы адреса регистров для управления портами.
Кто нибудь использовал порты GPIO на процессорных модулях Advantech? Как можно узнать адреса регистров?
В документации есть пример на ассемблере, из него не могу понять как идет обращение к регистрам управления.


GPIO configuration register:
Input_Reg                    EQU 00h
Output_Reg                   EQU 01h
Inversion_Reg                EQU 02h
Configure_Reg                EQU 03h
--------------------------------------------------------
Bh means int15 function you want to call:
Bh = 01h ; Get GPIO config
Bh = 02h ; Set GPIO config
Bh = 03h ; Get GPIO Status
Bh = 04h ; Set GPIO Status
--------------------------------------------------------
Sample code :
;===============================================================
;      Set GPIO Config
; Input:
;      ax=5E87h
;      bh=02h
;      cl= n ; n means which group of GPIO you want to set
;      bl= the n group of gpio config
;         bit 0 = gpio 0 , 0 => output pin; 1 => input pin
;         bit 1 = gpio 1 , 0 => output pin; 1 => input pin
;            .....
;         bit 7 = gpio 7 , 0 => output pin; 1 => input pin
; output:
;      ax=5E78            ;function success, other value means function fail
;===============================================================
mov            ax, 5E87H ;int15 hook as 5E87H
mov bh,02h
mov cl,Configure_Reg
mov al, bl ;( bl = bit0~7 = GPIO0~7 : 0 => output pin; 1 => input pin)
call      Ct_I2CWriteByte
mov ax,5E78h                        ;return function success 




Наверх
poison Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 02 Декабрь 2010
Online Status: Offline
Публикации: 68
Свойства публикации Свойства публикации   Ответить, цитируя автора - poison Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Апрель 2011 08:27
Добрый день!
С вашего кода видно что, есть еще подпрограмма Ct_I2CWriteByte в которой входные данные это регистры ax bx и cl. Судя по названию функции Ct_I2CWriteByte можно сделать вывод, что контроллер GPIO находится на шине I2C, а сама функция является драйвером этой шины. Выложите код функции I2CWriteByte будим разбератся дальше.
Наверх
Danil Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Апрель 2010
Категория: инжерен
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - Danil Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Апрель 2011 09:04
я бы и сам хотел бы посмотреть код функции  I2CWriteByte, но в документации к модулю и на сайте advantech ничего не нашел по этой функции. Подобные примеры видел в описании так же на модули AEON, но так же без указания адресов. Обращение к регистрам порта GPIO действительно идет по шине I2C. В bios  нечего ни нашел о этих портах.
Наверх
poison Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 02 Декабрь 2010
Online Status: Offline
Публикации: 68
Свойства публикации Свойства публикации   Ответить, цитируя автора - poison Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Апрель 2011 09:40
А сама библиотека с этой функцией есть?
Если есть скиньте на почту ASUTPсобакаSemkrточкаru попробую вам помочь. 
Наверх
KozlovKS Смотреть выпадающим
Prosoft.ru
Prosoft.ru


Присоединился: 21 Июнь 2003
Online Status: Offline
Публикации: 432
Свойства публикации Свойства публикации   Ответить, цитируя автора - KozlovKS Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Апрель 2011 10:21
Можно попробовать посмотреть PCM-4153-SUSI Software API 
Наверх
Danil Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Апрель 2010
Категория: инжерен
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - Danil Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Апрель 2011 12:14
PCM-4153-SUSI Software API  качаю, установлю буду смотреть. Есть библиотека под Windows, но в перечне функций библиотеки не нашел этой функции ... еще смотрю. Так же есть приер под Linux, но там тоже функции вызываются из библотеки и такой функции пока не нашел ... еще тоже разбираюсь.
Наверх
Danil Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Апрель 2010
Категория: инжерен
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - Danil Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Апрель 2011 12:48
PCM-4153-SUSI Software API, так же как и библиотека поставляемая с платой,    для работы с портами GPIO из Windows (на модуле установлен QNX) .Работа с портами через функции PortDirection, ReadPort, WritePort, которые вызываются из dll, функции которые используется в ассемблерном примере I2CWriteByte нет, работы с шиной I2C так же через функции WriteIIC, ReadIIC. 
Наверх
poison Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 02 Декабрь 2010
Online Status: Offline
Публикации: 68
Свойства публикации Свойства публикации   Ответить, цитируя автора - poison Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 13 Апрель 2011 13:58
Вот может это чем-то поможет:

Ct_I2CWriteByte Proc Near
push ax
push cx
mov dx,SMBus_Port +04h ;SMBus_Port(500h)
mov al,ch ;ID cmd(Write)
out dx,al
call Delay5ms
call Delay5ms
pop ax
mov dl,03h
out dx,al ;Index
call Delay5ms
call Delay5ms
pop ax
mov dl,05
out dx,al ;Data0
call Delay5ms
call Delay5ms
mov dl,02h
mov al,48h
out dx,al ;write data
call Delay5ms
call Delay5ms
mov cx, 100h
@@:
newiodelay
loop short @B
ret
Ct_I2CWriteByte Endp CALL Check_Chip

Это взята здесь http://www.tri-m.com/products/aaeon/files/manual/com945_man.pdf
Только здесь чип другой.

SMBus_Port(500h) – Это адрес шины для чипа Intel

Здесь можно посмотреть для чипа CS5536: http://pdf1.alldatasheet.com/datasheet-pdf/view/169131/NSC/CS5535.html


Наверх
Danil Смотреть выпадающим
Новичок
Новичок


Присоединился: 14 Апрель 2010
Категория: инжерен
Online Status: Offline
Публикации: 6
Свойства публикации Свойства публикации   Ответить, цитируя автора - Danil Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Апрель 2011 17:30
Скачал datasheet CS5535 это как раз тот чип который на модуле установлен, в документации есть подробное описание адресов регистров. Пока не совсем понятно, но нашел в инете исходники драйверов для чипа CS5535 под Linux буду во всем разбираться.
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz