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

 
 
> чтение/запись регистров 88E1111 через I2C, проблемы с random read и sequential read
salvian
сообщение Feb 5 2010, 09:42
Сообщение #1


Участник
*

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



Есть трансиверы Marvell Alaska 88E1111 связанные с I2C контроллером. Последовательности чтения/записи расписанные в datasheet'е работают с непонятными глюками, которые никак не могу забороть. Не мог бы кто нибудь выложить последовательности состояний и команд для чтения/записи 16-битных регистров которые работают на практике? Заранее признателен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Victor®
сообщение Feb 5 2010, 10:22
Сообщение #2


Lazy
******

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



Цитата(salvian @ Feb 5 2010, 12:42) *
Есть трансиверы Marvell Alaska 88E1111 связанные с I2C контроллером. Последовательности чтения/записи расписанные в datasheet'е работают с непонятными глюками, которые никак не могу забороть. Не мог бы кто нибудь выложить последовательности состояний и команд для чтения/записи 16-битных регистров которые работают на практике? Заранее признателен.


Используется именно TWSI? CONFIG6 bit в "1"?
На пине данных есть 1.5 kOhm pull-up?


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
salvian
сообщение Feb 5 2010, 11:04
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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", но когда именно и как это сделать понять не смог.
Go to the top of the page
 
+Quote Post
Victor®
сообщение Feb 5 2010, 11:44
Сообщение #4


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
Go to the top of the page
 
+Quote Post



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

 


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


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