реклама на сайте
подробности

 
 
> работа с GPIO через I2С расширитель PCA9555PW
Метценгерштейн
сообщение Aug 4 2016, 14:21
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



На плате стоят 2 расширителя GPIO на PCA9555PW. Адреса 0х20 0х21 на определенной шине I2C.
Есть скрипт, шел с этой платой, с образом Ubuntu.
Работа такая:
запускаю
./gpio_out.sh 240 1
выставляю на какой- то ноге 1.

сам скрипт:
Код
#!/bin/bash

PIO=${1}
MODE=${2}

if [ ! -d /sys/class/gpio/gpio${PIO}/ ]; then
    echo "Exporting gpio$PIO"
    echo $PIO > /sys/class/gpio/export
    echo out > /sys/class/gpio/gpio${PIO}/direction
fi

echo "gpio$PIO set to $MODE"
echo $MODE > /sys/class/gpio/gpio${PIO}/value

Где описано, что 240- это определенная нога этой PCA9555PW? Где указано, что сидит она на определенной шине I2C и какой имеет адрес? Как мне вторую PCA9555PW запустить на адресе 0х21?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение Aug 4 2016, 15:06
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Спасибо. А как установить, что это с 240 начинается? Или с 224? Можно ли его поменять?
Go to the top of the page
 
+Quote Post
Jury093
сообщение Aug 4 2016, 15:21
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(Метценгерштейн @ Aug 4 2016, 18:06) *
Спасибо. А как установить, что это с 240 начинается? Или с 224? Можно ли его поменять?

никогда не было такой задачи, в теории это можно покрутить в потрохах ядра или в драйвере для PCAxxxx, но лучше этого не делать, чтобы избежать неоднозначности наименования аппаратуры и ресурсов

у вас последний блок GPIO для АРМа начинается так:
Код
2000000.aips-bus/20b4000.gpio/gpio/gpiochip192

и занимает 32 - число GPIO в блоке
192+32=224 - это число вычисляется в ядре при запросе драйвера, например pca9555 (не смотрел d/s но вероятно 16 пинов для GPIO), тогда следующий расширитель будет
224+16=240
кстати, логичнее было бы 0х20 с 224, а 0х21 с 240, почему тут наоборот - не знаю, не сталкивался. возможно в описание слейвов на шине в ядре первым прописан 0х21 и получает блок с 224..
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th August 2025 - 17:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016