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

 
 
> Компас HMC 5883L в режиме автоинкремента адреса, зажимает SDA
Serj78
сообщение Apr 23 2013, 09:27
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Проблема в следующем- пытаюсь работать с HMC 5883L в режиме автоинкремента адреса., софтовый i2C.
Cами функии i2с работают на аналогичном хонейвелловском компасе ( HMC 6352) без проблем.

Cудя по даташиту после инициализации ( или просто после включения- по умолчанию стоит режим работы по запросу)
надо просто подать адрес на чтение и потом 6 раз подряд прочитать данные.

то есть ST- DA- RD -RD-RD-RD-RD-RD-SP ( DA-divice adress, RD- read data, ST- start, SP- stop)

Однако после этого алгоритма устройство "не отпускает" шину SDA.. и дальнейшее считывание превращается в мешанину импульсов
Если перед этим принудительно командой записать адрес регистра (3), (ST-DA-RA-SP)
то происходть то же самое.

Если я делаю стоп после одной регистровой пары ( (ST-DA-RA-SP) - задали адрес, затем прочитали 2 регистра подряд (ST- DA- RD -RD-SP),
то устройство шину отпускает, но считанные данные в регистре не меняются . (они кажется и не должны меняться пока не прочитаешь подряд все регистры)
(хотя данные в регистре правдоподобны)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexPec
сообщение Apr 23 2013, 21:36
Сообщение #2


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Когда читаете данные, контроллером выдаете 9-й импульс ACK. Если хотите чтоб устройство отпустило шину, надо на 9-м бите последнего байта сделать NACK, т. е. не тянуть на землю SDA. Устройство должно отпустить шину. Это реализовано?
Причина редактирования: Избыточное цитирование. Т. Абсолютно.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Apr 24 2013, 13:42
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(alexPec @ Apr 24 2013, 01:36) *
Когда читаете данные, контроллером выдаете 9-й импульс ACK. Если хотите чтоб устройство отпустило шину, надо на 9-м бите последнего байта сделать NACK, т. е. не тянуть на землю SDA. Устройство должно отпустить шину. Это реализовано?


Спасибо , это помогло! ( до этого я все все время передавал ask)
Странно, в даташите по этому поводу ничего не сказано..

Остается непонятным также почему с чтением регистровой пары устройство ведет себя по другому- при наличии ask все время- устройство отпускает шину.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th August 2025 - 09:06
Рейтинг@Mail.ru


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