|
чтение/запись регистров 88E1111 через I2C, проблемы с random read и sequential read |
|
|
|
Feb 5 2010, 09:42
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 4-08-09
Пользователь №: 51 740

|
Есть трансиверы Marvell Alaska 88E1111 связанные с I2C контроллером. Последовательности чтения/записи расписанные в datasheet'е работают с непонятными глюками, которые никак не могу забороть. Не мог бы кто нибудь выложить последовательности состояний и команд для чтения/записи 16-битных регистров которые работают на практике? Заранее признателен.
|
|
|
|
|
 |
Ответов
|
Feb 5 2010, 11:04
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 4-08-09
Пользователь №: 51 740

|
Цитата(Victor® @ Feb 5 2010, 13:22)  Используется именно TWSI? CONFIG6 bit в "1"? На пине данных есть 1.5 kOhm pull-up? Проблемы на более высоком уровне. То есть считать значение регистра я кое как могу, но проблемы следующие: 1. при операции "random read", судя по datasheet'у, необходимо дважды выполнить одну и ту же операцию, чтобы получить сначала старший, а потом младший байт регистра, я же читаю постоянно только старший. После такого я решил попробовать "sequential read" 2. при операции "sequential read" два байта регистра читаются, но каждая вторая операция завершается NACK'ом я явно что то не допосылаю или наоборот шлю лишнего. по поводу "random read" там сказано ещё про ""dummy" byte write", но когда именно и как это сделать понять не смог.
|
|
|
|
|
Feb 5 2010, 11:44
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(salvian @ Feb 5 2010, 15:04)  Проблемы на более высоком уровне. То есть считать значение регистра я кое как могу, но проблемы следующие: 1. при операции "random read", судя по datasheet'у, необходимо дважды выполнить одну и ту же операцию, чтобы получить сначала старший, а потом младший байт регистра, я же читаю постоянно только старший. После такого я решил попробовать "sequential read" 2. при операции "sequential read" два байта регистра читаются, но каждая вторая операция завершается NACK'ом
я явно что то не допосылаю или наоборот шлю лишнего.
по поводу "random read" там сказано ещё про ""dummy" byte write", но когда именно и как это сделать понять не смог. Для чипов ревизии B1 есть проблема при чтении регистров, если чип в слипе или повердауне. Почитайте errata. А вообще - гляньте осциллом что там твориться на самом деле.
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Feb 5 2010, 11:50
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 4-08-09
Пользователь №: 51 740

|
Цитата(Victor® @ Feb 5 2010, 14:44)  Для чипов ревизии B1 есть проблема при чтении регистров, если чип в слипе или повердауне. Почитайте errata. А вообще - гляньте осциллом что там твориться на самом деле. Спасибо. Почитаю errata, посмотрю шину, отпишусь.
|
|
|
|
|
Feb 5 2010, 12:52
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 4-08-09
Пользователь №: 51 740

|
Цитата(Victor® @ Feb 5 2010, 15:04)  Не знаю какая ревизия у Вас Поэтому смотрите еще в "Release Notes - 88E1111 Rev B2" пункт 3.4 Судя по тому, что содержимое регистров 2 и 3 соответственно 0х141 и 0хС20D, ревизия видимо 'D'. Но вот с OUI Marvell'а что то не то... UPD: Если в первую очередь читать регистр 3 то читается 0x0CC2 как и должно. То есть в какой то момент происходит лишний сдвиг адреса на один байт.
Сообщение отредактировал salvian - Feb 5 2010, 13:21
|
|
|
|
|
Feb 5 2010, 19:34
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(salvian @ Feb 5 2010, 16:52)  Судя по тому, что содержимое регистров 2 и 3 соответственно 0х141 и 0хС20D, ревизия видимо 'D'. Но вот с OUI Marvell'а что то не то...
UPD: Если в первую очередь читать регистр 3 то читается 0x0CC2 как и должно. То есть в какой то момент происходит лишний сдвиг адреса на один байт. 1111 есть ревизий A0, B0, B1, B2 Смотрите на 1 страницу в errata на B2. Если лень - смотрите по маркировке на чипах. Кстати, в последнем даташите - die revision начали обзывать custom code. Перечитайте errata именно на ту ревизию, что используете. Что показывает осцил? -- успехов
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|