• ,
  • вход на сайт

    Имя пользователя :
    Пароль :

    Восстановление пароля Регистрация
    Работа с I2C на Cubieboart
    Статьи (Автор: Asket)

    Работа с I2C на Cubieboart 

      В одном с наших проектов мы решили использовать одноплатный компьютер Cubieboard, так как он более производительный чем Raspberry Pi.

    Спустя пару вечеров копания мануалов и прочего все же получилось настроить и протестировать шину I2C. В этой статье хочу поделиться опытом и полезной информацией.

      Мы, небольшая группа энтузиастов решили собрать квадрокоптер. Драйверами двигателей решили управлять по i2c-шине. Просто передаем в шину адрес и значение мощности движка.

      Как удалось выяснить, работать с i2c под linux можно несколькими способами:

        1. Использовать готовую софтину i2c-tools (i2cdetect, i2cdump, i2cget, i2cset);

        2. Как и с другой периферией под linux, то есть - открыть файл, записать/считать, закрыть файл;

      Конечно гораздо практичнее реализовывать обмен данными вторым способом, первый больше подойдет для проверки шины и устройств. Для начала разберем первый способ.

      Пакет программ i2c-tools устанавливаем командой в терминале:

    sudo apt-get install i2c-tools

      Данный пакет содержит такие программы:

      - i2cdetect (используеться для проверки подключенных устройств - выводит адреса slave устройств)

      - i2cdump (программа для снятия дампа данных)

      - i2cget (получаем значение нужного нам регистра в подключенном устройстве. Опрашивается в формате : i2cget <bus> <chip> <register>

    )

      - i2cset (записываем значение в нужный регистр подключенного устройства, команда в фотмате: i2cset <bus> <chip> <register> <value>

      . Например: # i2cset 0 0x2d 0x10 0x22 , то есть пишем значение 0х22 в регистр 0х10 устройства по адресу 0x2d на шине 0)

     

    В начальной конфигурации шина I2C-1 отключена, что бы ее активировать - правим script.bin. Чтобы это сделать - используем программу bin2fex и правим несколько строк в script.fex :

     

    [twi1_para]

    twi1_used = 1

    twi1_scl = port:PB18<2><default><default><default>

    twi1_sda = port:PB19<2><default><default><default>

     

      Что такое script.bin и как с ним работать сейчас расписывать не буду - в интернете есть масса информации на эту тему.

    Таким образом мы активировали шину на ногах PB18и PB19. Размещение этих пинов на колодках одноплатника смотрим здесь:

    Работа с I2C на Cubieboart

    5 PG0 (CSI1-PCLK/SDC1-CMD) 6 PB18 (TWI1-SCK)
    7 PB19 (TWI1-SDA) 8 PG3 (CSI1-VSYNC/SDC1-D1)

    После подключения датчика давления BMP085, для теста, запустим сканирование шины командой:

    sudo i2cdetect -r 1 (можно использовать так же ключ -y)

    Получим 255 адресных ячеек:

    Работа с I2C на Cubieboart

      Видим что по адесу 0х77 находится наш барометр.

      Так же нужно помнить что шина имеет 3.3В логические уровни, по этому для работы с лог. уровнями 5В (драйвера у меня питаются от 5В) необходим преобразователь уровней - например на полевом транзисторе BSS138.

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

      К статье прикрепляю файл с тестовой программой на С, в основе которой был взят пример по ссылке [1]. Программа отправляет байт по адресу 0х70 (так как AVRка на плате драйвера откликается на этот адрес) значение, которое берем из файла "throttle" или как аргумент при запуске с консоли.

     

    Полезные ссылки:

    1. http://docs.cubieboard.org/tutorials/cb1/development/access_at24c_eeprom_via_i2c

    Пример использование шины i2c и EEPROM at24c256

    2.http://www.lm-sensors.org/wiki/i2cToolsDocumentation

    Малуал по программе i2c-tools

     

    Пример программы: i2c_test.zip [4,67 Kb] (cкачиваний: 166)

    Удачи.


    Теги: i2c, Cubieboard
    • 0
    Новость опубликована 25-11-2014, 15:37, её прочитали 4912 раз(а).
    Понравилась тема? Посмотрите эти:
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.