Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Raspberry Pi
  3. Управление устройствами по I2C шине

Управление устройствами по I2C шине

Запланировано Прикреплена Закрыта Перенесена Raspberry Pi
13 Сообщения 1 Posters 169 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано
    #1

    В ожидания статьи от Mike по работе с ресивером через i2c, хотелось бы немного вникнуть в вопрос и определить для себя путь копания в эту тему. Т.к. опыта работы нет по данному направлению. Будем отталкиваться от fm ресивера, раз Mike будет на нем проверять.
    Итак, что требуется. Есть набор параметров по которым управляется ресивер и различные значения, которые могут принимать эти параметры. Например возьмам два параметра, параметр 1 -частота и ряд значений этой частоты с заданным интервалом, параметр 2 -моно/стерео прием, у которого всего два значения стерео или моно.
    Допустим, нам надо, чтобы при запуске малины, автоматически стартовал консольный радиоприемник. Соответственно прописываем в автозапуск некий скрипт, который этим будет заниматься. Здесь вроде пока мне все понятно, все дальше-лес темный.

    1 ответ Последний ответ
    0
    • piP Не в сети
      piP Не в сети
      pi
      написал в отредактировано
      #2

      Теперь мое видение этого проекта.
      Вариант 1: создается файл (текстовый), где прописываются все параметры и значения параметров, которые можно использовать для управления устройством. В нашем случае это два параметра-частота и стерео/моно и их значения 87,5...108 с шагом 0,5 и стерео/моно. Нужное значение параметра раскомментируется, остальные - #. Ну или указываются в явном виде. Например параметр 0х01, значение 101010 и в комментариях список вариантов.

      1 ответ Последний ответ
      0
      • piP Не в сети
        piP Не в сети
        pi
        написал в отредактировано
        #3

        Скрипт автостартует, считывает эти значения и отправляет в микросхему. (на форуме нужна функция редактирования сообщений).
        Вариант 2: все прописывается в самом скрипте в явном виде с описанием значений в комментариях.
        Какой вариант рабочий? И будет ли возможность управлять gpio с автозапуска под учетной записью pi? Или нужно будет входить с правами администратора?

        1 ответ Последний ответ
        0
        • piP Не в сети
          piP Не в сети
          pi
          написал в отредактировано
          #4

          Т.е. мне нужно разово произвести настройку (прописать значения) и чтоб потом малинка отправляла всю конфигурацию по i2c скопом без моего участия при запуске.
          А вот Mike, думаю, будет делать с использованием кнопок для автопоиска радиостанций или установки частоты.

          1 ответ Последний ответ
          0
          • piP Не в сети
            piP Не в сети
            pi
            написал в отредактировано
            #5

            Самое первое, с чего нужно начинать, это изучить документацию на то устройство, которым вы собрались управлять. Если этим устройством является некоторая микросхема, то набиваете в Гугле "datasheet название микросхемы" и изучаете найденый документ. В нём подробно будет расписано- какие команды и параметры вы должны передать этой микросхеме и какие данные и как вы можете считать из неё. Ну и уже после этого сможете выбрать способ реализации.

            1 ответ Последний ответ
            0
            • piP Не в сети
              piP Не в сети
              pi
              написал в отредактировано
              #6

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

              1 ответ Последний ответ
              0
              • piP Не в сети
                piP Не в сети
                pi
                написал в отредактировано
                #7

                Ну если уже всё работает, то никаких проблем возникнуть недолжно. К RPi она подключается так-же, как и к МК. Устнавливаете частоту шины, устанавливаете адрес устройства, а дальше командой записи передаёте то что нужно в шину I2c.

                1 ответ Последний ответ
                0
                • piP Не в сети
                  piP Не в сети
                  pi
                  написал в отредактировано
                  #8

                  А вот с этим пока проблема "дальше командой записи передаёте то что нужно в шину I2c". Буду конечно учится по слепому методу, пока отдельным командам, потом как все запихать в один скрипт. Вот и жду работу Mike в качестве образца. Надеюсь он пойдет дальше, чем просто послать в КС одну команду на запись в один регистр. А пока собираю устройство в железе, надо плату нарисовать, да запаять.

                  1 ответ Последний ответ
                  0
                  • piP Не в сети
                    piP Не в сети
                    pi
                    написал в отредактировано
                    #9

                    Теперь мое видение этого проекта.

                    Самый простой вариант сделать bash-скрипт, которые запишет нужные данные в регистры чипа утилитой i2cset. Я имел дело с FM чипами Philips. Частота, на которую нужно настроится задаётся двухбайтным словом. Формула, как рассчитывается значение этого слова есть в Datasheet. Ещё один регистр отвечает за выбор частоты генератора такта. И есть ещё регистр, который отвечает за старт автопоиска станций, MONO/STEREО, уровень сигнала при котором Stereo будет автоматически переключён на Mono и т.д

                    И будет ли возможность управлять gpio с автозапуска под учетной записью pi? Или нужно будет входить с правами администратора?

                    В Linux'е любое устройство это файл. Соответственно для работы с i2c у пользователя должен быть доступ на чтение/запись в файл /dev/i2c-0
                    Вообще есть мнение, что работать с gpio из userspace это плохо.
                    Я так не считаю. Программа должна быть рабочей и по возможности простой. Всё остальное вторично

                    1 ответ Последний ответ
                    0
                    • piP Не в сети
                      piP Не в сети
                      pi
                      написал в отредактировано
                      #10

                      В принципе тоже на скрипте остановился, через i2cset. У меня не приемник, а передатчик, так что мне часто запись в регистры не нужна. Один раз рассчитал, прописал в скрипте, и больше туда не лезть. Тем более раз работа не отличается от МК.
                      Осталось только собрать все железо в кучу и разобраться с обращениями к gpio. Я так понял, проблем с правами доступа к /dev/i2c-1 значит нет, просто устанавливаются как и для любого другого файла. Спасибо за за эту информацию.

                      1 ответ Последний ответ
                      0
                      • piP Не в сети
                        piP Не в сети
                        pi
                        написал в отредактировано
                        #11

                        Собрал в железе, все заработало. Осталось красиво оформить.

                        1 ответ Последний ответ
                        0
                        • piP Не в сети
                          piP Не в сети
                          pi
                          написал в отредактировано
                          #12

                          Самый простой вариант сделать bash-скрипт
                          ну если делать программу с помошью которой можно будет управлять чипом - то баш не лучший вариант. я лично за руби.
                          Управление устройствами по I2C шине
                          а ктонибудь пробовал подключать к шине i2c несколько устройств (ну там мастер/слейв и тп)?
                          а ктонибудь пробовал работать одновременно с двумя шинами i2c-0 и i2c-1?

                          1 ответ Последний ответ
                          0
                          • piP Не в сети
                            piP Не в сети
                            pi
                            написал в отредактировано
                            #13

                            нашел вот это http://raspberrypi.ru/readtopic/415/ так что мои вопросы про подключение устройств бльше не актуальны.

                            1 ответ Последний ответ
                            0

                            • Войти

                            • Нет учётной записи? Зарегистрироваться

                            • Login or register to search.
                            • Первое сообщение
                              Последнее сообщение
                            0
                            • Категории
                            • Главная
                            • Документация
                            • Последние
                            • Пользователи