Автор Тема: I2C устройства  (Прочитано 6837 раз)

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 537
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
I2C устройства
« : Февраль 09, 2016, 02:02:35 pm »
Приветствую жителей форума!

Кто-то подключал к Opi PC I2C устройства? Конкретно интересует дисплей 1602 с переходником на I2C.
Сейчас пытаюсь связать OpenELEC и этот дисплей, и не в какую. Подключил, установил всё что нужно, а он собака моргает подсветкой и ничего не выводит. Причём моргает так, что иногда чувство что он моргает либо под музыку, либо под светодиод активности сетевого интерфейса.
« Последнее редактирование: Февраль 09, 2016, 02:04:33 pm от warik »
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн UB3GAD

  • Moderator
  • Посвященный
  • *****
  • Сообщений: 197
  • Лайков: 128
  • Карма: +14/-0
    • Просмотр профиля
Re: I2C устройства
« Ответ #1 : Февраль 09, 2016, 02:07:09 pm »
Тут вроде про это было, сам не пробовал не могу вспомнить куда дисплей свой заиграл
Orange Pi PC

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 537
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: I2C устройства
« Ответ #2 : Февраль 09, 2016, 02:17:18 pm »
Да тут то вся и проблема... Я использую OpenELEC. Поддержка i2c включена при компиляции. У меня есть устройство /dev/i2c-0. Всё подключено и настроено по мануалам. Ладно то, что дисплей не показывает, но то, что он моргает подсветкой для меня загадка. Не понимаю что ему не так.
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 537
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: I2C устройства
« Ответ #3 : Февраль 09, 2016, 10:45:50 pm »
Инфа на эту тему под Raspberry: LCD For Raspberry Pi (HD44780 Via PCF8574 I2C) (Openelec). Но у меня не завелось при тестировании.
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн CHuKEPC

Re: I2C устройства
« Ответ #4 : Февраль 10, 2016, 11:27:48 am »
Подключаю по i2c rtc ds1307 и вот такую https://www.itead.cc/itead-pn532-nfc-module.html
Rtc еще не завелся, а вот NFC завелся с пол-пинка.
Линуха они такие, загадочные :)
OPi plus 2, OPi plus, OPi PC, RPi B, RPi2, RPi3, BPi, BPi Lamobo R1. И все работает!

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 537
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: I2C устройства
« Ответ #5 : Февраль 10, 2016, 01:23:10 pm »
Подключаю по i2c rtc ds1307 и вот такую https://www.itead.cc/itead-pn532-nfc-module.html
Rtc еще не завелся, а вот NFC завелся с пол-пинка.
Линуха они такие, загадочные :)
Вы питон юзаете? Если да, то там проблем нет. У меня конкретно проблема с lcdproc. Почему-то он не хочет выводить инфу на экран.
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн StaLeWaR

Re: I2C устройства
« Ответ #6 : Февраль 13, 2016, 02:14:37 pm »
Вы питон юзаете? Если да, то там проблем нет. У меня конкретно проблема с lcdproc. Почему-то он не хочет выводить инфу на экран.

Есть результаты?
Я вот намедни набрел на очень интересный модуль lcdi2c
https://github.com/lucidm/lcdi2c

Собрал его вместе с ядром от Loboris
https://github.com/loboris/OrangePI-Kernel

Подключил дисплей, загрузил в ручную модуль
root@OrangePI:~# modinfo ./lcdi2c.ko
filename:       /root/./lcdi2c.ko
version:        0.1.0
description:    Driver for HD44780 LCD with PCF8574 I2C extension.
author:         Jarek Zok <jarekzok@gmail.com>
license:        GPL
srcversion:     7978FC46B63CF5649BF59AC
alias:          i2c:lcdi2c
depends:
vermagic:       3.4.39-01-lobo SMP preempt mod_unload modversions ARMv7 p2v8
parm:           busno: I2C Bus number, default 1 (uint)
parm:           address: LCD I2C Address, default 0x27 (uint)
parm:           pinout: I2C module pinout configuration, eight numbers
                representing following LCD modulepins in order: RS,RW,E,D4,D5,D6,D7,
                default 0,1,2,3,4,5,6,7 (array of uint)
parm:           cursor: Show cursor at start 1 - Yes, 0 - No, default 1 (uint)
parm:           blink: Blink cursor 1 - Yes, 0 - No, defualt 1 (uint)
parm:           major: Device major number, default 0 (int)
parm:           topo: Display organization, following values are currently supported:
                0 - 40x2
                1 - 20x4
                2 - 20x2
                3 - 16x4
                4 - 16x2
                5 - 16x1 Type 1
                6 - 16x1 Type 2
                7 - 8x2
                Default set to 16x2 (uint)
root@OrangePI:~# insmod ./lcdi2c.ko busno=0
root@OrangePI:~# lsmod
Module                  Size  Used by
lcdi2c                 14422  0
8189es                901572  0
root@OrangePI:~# dmesg
   ...
[ 6637.970848] lcdi2c 0-0027: 16x2 LCD using bus 0x0, at address 0x27
[ 6637.971232] lcdi2c 0-0027: registered with major 246
root@OrangePI:~#

Протестировал  - работает  :D :D :D :D

Но беда в том что как только я загружаю модуль gpio-sunxi.ko то дисплей дохнет
[ 7494.740930] gpio_init finish with uesd 1!
[ 7570.290123] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7575.340129] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7580.440119] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7585.440119] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7590.440131] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7595.440103] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7600.440100] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7605.440116] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)
[ 7610.440123] sunxi_i2c_do_xfer()973 - [i2c0] xfer timeout (dev addr:0x27)

Есть мысли у кого-нить как это победить?
На официальном форуме отмалчиваются

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 386
  • Лайков: 100
  • Карма: +13/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: I2C устройства
« Ответ #7 : Февраль 13, 2016, 04:07:28 pm »
Почти все выводы имеют двойное а то и тройное назначение, одновремено их использовать нельзя, выдержки из script.fex:
Цитировать
;---------------------------------------------------------------------------------
;i2c configuration
;----------------------------------------------------------------------------------
[twi0]
twi_used        = 1
twi_scl         = port:PA11<2><default><default><default>
twi_sda         = port:PA12<2><default><default><default>

[twi1]
twi_used        = 1
twi_scl         = port:PA18<3><default><default><default>
twi_sda         = port:PA19<3><default><default><default>

[twi2]
twi_used        = 0
twi_scl         = port:PE12<3><default><default><default>
twi_sda         = port:PE13<3><default><default><default>

Цитировать
;----------------------------------------------------------------------------------
;userspace gpio interface
; ** COMMENT THE PINS USED IN OTHER INTERFACES (I2C, SPI, 1-WIRE...)
;----------------------------------------------------------------------------------
[gpio_para]
gpio_used       = 1

;gpio_num        = 30
gpio_pin_1      = port:PL10<1><default><default><1>
gpio_pin_2      = port:PA15<1><default><default><0>
;gpio_pin_3      = port:PA12<1><default><default><0>
;gpio_pin_4      = port:PA11<1><default><default><0>
gpio_pin_5      = port:PA06<1><default><default><0>
gpio_pin_6      = port:PA13<1><default><default><0>
gpio_pin_7      = port:PA14<1><default><default><0>
gpio_pin_8      = port:PA01<1><default><default><0>
gpio_pin_9      = port:PD14<1><default><default><0>
gpio_pin_10      = port:PA00<1><default><default><0>
gpio_pin_11      = port:PA03<1><default><default><0>
gpio_pin_12      = port:PC04<1><default><default><0>
gpio_pin_13      = port:PC07<1><default><default><0>
gpio_pin_14      = port:PC00<1><default><default><0>
gpio_pin_15      = port:PC01<1><default><default><0>
gpio_pin_16      = port:PA02<1><default><default><0>
gpio_pin_17      = port:PC02<1><default><default><0>
gpio_pin_18      = port:PC03<1><default><default><0>
gpio_pin_19      = port:PA21<1><default><default><0>
;gpio_pin_20      = port:PA19<1><default><default><0>
;gpio_pin_21      = port:PA18<1><default><default><0>
gpio_pin_22      = port:PA07<1><default><default><0>
gpio_pin_23      = port:PA08<1><default><default><0>
gpio_pin_24      = port:PG08<1><default><default><0>
gpio_pin_25      = port:PA09<1><default><default><0>
gpio_pin_26      = port:PA10<1><default><default><0>
gpio_pin_27      = port:PG09<1><default><default><0>
gpio_pin_28      = port:PA20<1><default><default><0>
gpio_pin_29      = port:PG06<1><default><default><0>
gpio_pin_30      = port:PG07<1><default><default><0>

Если оба модуля используются (xxx_used = 1), комментируем у gpio нужные для i2c порты, чтоб gpio их не забирал.

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 537
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: I2C устройства
« Ответ #8 : Февраль 14, 2016, 10:46:53 am »
Победил я свой дисплей. Теперь всё нормально выводиться. Позже добавлю инфу в тему: Дисплеи в OpenELEC.
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн StaLeWaR

Re: I2C устройства
« Ответ #9 : Февраль 14, 2016, 02:09:46 pm »
Почти все выводы имеют двойное а то и тройное назначение, одновремено их использовать нельзя, выдержки из script.fex:
Если оба модуля используются (xxx_used = 1), комментируем у gpio нужные для i2c порты, чтоб gpio их не забирал.
Пасиба мил человек. Взлетел все как родная.  ;)

Оффлайн Vital864

  • Посвященный
  • ***
  • Сообщений: 245
  • Лайков: 36
  • Карма: +4/-0
  • Orange Pi Plus
    • Просмотр профиля
Re: I2C устройства
« Ответ #10 : Февраль 29, 2016, 04:04:50 pm »
Подскажите, а для того чтобы шина i2c работала на gpio нужен модуль для неё в /etc/modules?
Не могу понять, на запрос i2cdetect -y 0 не находит ни одного адреса, хотя устройство подключено.
А на запрос i2cdetect -F говорит, что "Error. No i2c-bus specified."
Orange Pi Plus

Оффлайн ua3nbw

  • Посвященный
  • ***
  • Сообщений: 128
  • Лайков: 60
  • Карма: +7/-0
  • Orange Pi PC
    • Просмотр профиля
Re: I2C устройства
« Ответ #11 : Февраль 29, 2016, 07:32:48 pm »
 dmesg | grep i2c
ls -la /dev/i2c*
что выдает ?
« Последнее редактирование: Февраль 29, 2016, 08:06:21 pm от ua3nbw »

Оффлайн Vital864

  • Посвященный
  • ***
  • Сообщений: 245
  • Лайков: 36
  • Карма: +4/-0
  • Orange Pi Plus
    • Просмотр профиля
Re: I2C устройства
« Ответ #12 : Февраль 29, 2016, 08:29:53 pm »
На команду dmesg | grep i2c терминал выдал миллион строк, одинаковых, только адреса разные.
Первые полмиллиона - [133.........] twi_send_clk_9pulse()558 - [i2c0] SDA is still Stuck Low, failed.
Вторые полмиллиона  ;D - [164......] twi_start()429 - [i2c0] START can't sendout!

На команду ls -la /dev/i2c-0 выдал
crw-rw---- 1 root i2c 89, 0 Jan  1  1970 /dev/i2c-0
Orange Pi Plus

Оффлайн ua3nbw

  • Посвященный
  • ***
  • Сообщений: 128
  • Лайков: 60
  • Карма: +7/-0
  • Orange Pi PC
    • Просмотр профиля
Re: I2C устройства
« Ответ #13 : Февраль 29, 2016, 09:15:00 pm »
Первые полмиллиона - [133.........] twi_send_clk_9pulse()558 - [i2c0] SDA is still Stuck Low, failed.

sda не подтянут к плюсу.

Оффлайн Vital864

  • Посвященный
  • ***
  • Сообщений: 245
  • Лайков: 36
  • Карма: +4/-0
  • Orange Pi Plus
    • Просмотр профиля
Re: I2C устройства
« Ответ #14 : Февраль 29, 2016, 09:52:42 pm »
Сдаётся мне, что я не туда втыкаю проводки в gpio. Народ, подскажите пины для подключения i2c кто уже подключал. Для сверки. У меня подключен модуль следующим образом:
пин 1 - +3,3 вольта
пин 3 - SDA
пин 4 - SCL (сначала подключил на 5 по инструкции с orangepi.org)
пин 6 - GND

В script.bin заремил строки в gpio пин 3 и 4 (РА11 и РА12). Всё равно i2cdetect -y 0 не находит адреса. Все адреса пустые, никем не заняты.
Orange Pi Plus