Управление устройствами по I2C шине
-
Т.е. мне нужно разово произвести настройку (прописать значения) и чтоб потом малинка отправляла всю конфигурацию по i2c скопом без моего участия при запуске.
А вот Mike, думаю, будет делать с использованием кнопок для автопоиска радиостанций или установки частоты. -
Самое первое, с чего нужно начинать, это изучить документацию на то устройство, которым вы собрались управлять. Если этим устройством является некоторая микросхема, то набиваете в Гугле "datasheet название микросхемы" и изучаете найденый документ. В нём подробно будет расписано- какие команды и параметры вы должны передать этой микросхеме и какие данные и как вы можете считать из неё. Ну и уже после этого сможете выбрать способ реализации.
-
В принципе, эта микросхема уже работает в автономном проекте под управлением атмеги с выводом текстовой информации на жк-дисплей от телефона. Да и не думаю, что набор команд сильно влияет на выбор способа. Тут главное как это вообще будет правильно организовать в распе. Можно ли вообще организовать, что я хочу.
-
Ну если уже всё работает, то никаких проблем возникнуть недолжно. К RPi она подключается так-же, как и к МК. Устнавливаете частоту шины, устанавливаете адрес устройства, а дальше командой записи передаёте то что нужно в шину I2c.
-
А вот с этим пока проблема "дальше командой записи передаёте то что нужно в шину I2c". Буду конечно учится по слепому методу, пока отдельным командам, потом как все запихать в один скрипт. Вот и жду работу Mike в качестве образца. Надеюсь он пойдет дальше, чем просто послать в КС одну команду на запись в один регистр. А пока собираю устройство в железе, надо плату нарисовать, да запаять.
-
Теперь мое видение этого проекта.
Самый простой вариант сделать bash-скрипт, которые запишет нужные данные в регистры чипа утилитой i2cset. Я имел дело с FM чипами Philips. Частота, на которую нужно настроится задаётся двухбайтным словом. Формула, как рассчитывается значение этого слова есть в Datasheet. Ещё один регистр отвечает за выбор частоты генератора такта. И есть ещё регистр, который отвечает за старт автопоиска станций, MONO/STEREО, уровень сигнала при котором Stereo будет автоматически переключён на Mono и т.д
И будет ли возможность управлять gpio с автозапуска под учетной записью pi? Или нужно будет входить с правами администратора?
В Linux'е любое устройство это файл. Соответственно для работы с i2c у пользователя должен быть доступ на чтение/запись в файл /dev/i2c-0
Вообще есть мнение, что работать с gpio из userspace это плохо.
Я так не считаю. Программа должна быть рабочей и по возможности простой. Всё остальное вторично -
В принципе тоже на скрипте остановился, через i2cset. У меня не приемник, а передатчик, так что мне часто запись в регистры не нужна. Один раз рассчитал, прописал в скрипте, и больше туда не лезть. Тем более раз работа не отличается от МК.
Осталось только собрать все железо в кучу и разобраться с обращениями к gpio. Я так понял, проблем с правами доступа к /dev/i2c-1 значит нет, просто устанавливаются как и для любого другого файла. Спасибо за за эту информацию. -
Собрал в железе, все заработало. Осталось красиво оформить.
-
Самый простой вариант сделать bash-скрипт
ну если делать программу с помошью которой можно будет управлять чипом - то баш не лучший вариант. я лично за руби.
Управление устройствами по I2C шине
а ктонибудь пробовал подключать к шине i2c несколько устройств (ну там мастер/слейв и тп)?
а ктонибудь пробовал работать одновременно с двумя шинами i2c-0 и i2c-1? -
нашел вот это http://raspberrypi.ru/readtopic/415/ так что мои вопросы про подключение устройств бльше не актуальны.