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

 
 
> Работа с i2c устройствами в Linux, Python
wolfman
сообщение Nov 19 2015, 14:27
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



Здравствуйте.
Необходимо отладить I2c-шные корки в ПЛИС, т.к. ничего кроме Raspbery PI 2 нет, решил использовать её как мастер, наваял простенький код на Питоне.

На этапе отладки тестового софта использую eeprom и SFP модули.

Все бы хорошо, но есть проблемы: не читает данные из eeprom(типа AT24C256), точнее читает, но только один и тот же байт данных.
При этом из всевозможных SFP модулей данные читаются нормально.
В eeprom, если я правильно понимаю, используется страничный доступ, как его задействовать?
Если можно на пальцах, т.к. я ни разу не программист.

Код
#!/usr/bin/python
import smbus
import time

DevAddr = 0x55

bus = smbus.SMBus(1)

print "I2C: Read from Device 0x%02X" % DevAddr
for DevRegAddr in range (255):
    try:
        ret = bus.read_byte_data(DevAddr, DevRegAddr)
    except IOError, err:
        print "error reading device 0x%02X" % DevAddr
        exit(-1)
    print "%X" % ret


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
wolfman
сообщение Nov 19 2015, 16:38
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



С программистами сложнее, посему и ваяю сам. Диаграмки завтра. И когда писал, подумал, что может действительно не так писал(домой приезду, проверю). С SFP, нормально читается, там фактически таже eeprom, вот что смущает.


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post
krux
сообщение Nov 19 2015, 17:16
Сообщение #3


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Цитата(wolfman @ Nov 19 2015, 19:38) *
С SFP, нормально читается, там фактически таже eeprom, вот что смущает.

не совсем.
в SFP-модулях не предусмотрено настраиваемой адресации, как в обычном i2c, т.е. вы не можете повесить на одну i2c шину несколько SFP-модулей.
поэтому одного адреса A0, как для SFP, любым другим i2c устройствам недостаточно.
смотрите внимательно временные диаграммы для общения с EEPROM.



--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
wolfman
сообщение Nov 19 2015, 17:40
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032




Ну почему же, в случае конкретной eeprom, я корочу ножки адреса на "землю" и получаю адрес 0x50(A0).
С другими устройствами будет по другому, тут согласен. Как раз разбираюсь с такой i2c коркой, которая позволяет выходить на Авалон с разной шириной данных.


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:09
Рейтинг@Mail.ru


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