MiklPolikov 0 4 мая, 2016 Опубликовано 4 мая, 2016 · Жалоба Помогите разобраться с I2C в STM32L4 Пытаюсь прочитать slave-микросхему. Делаю следующее: NBYTES = 3 (количество байт в транзакции) SADD = 0x21 (адрес микросхемы) TXDR = 0x5 (адрес регистра в микросхеме) START = 1 (запуск передачи) И передача начинается. Передаётся сначала 0x21 затем 0x03 Что делать дальше - не понимаю. Как после этого заставить I2C выставить ещё клоки и прочитать ответ микросхемы ? Ставлю бит RD_WRN = 1 TXDR = 0xFF - ещё клоки выставляются , но в RXDR ничего не появляется. Вообще, почему в RXDR ничего не появляется после каждой передачи ? Было бы логично, если бы там появлялось эхо. Заранее спасибо ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
niXto 0 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба Для чтения есть бит RD_WRN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
golf2109 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба эхо может быть в виде бита или в виде байта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Разобрался. Суть в том, что в I2C нельзя в произвольной последовательнсоти передавать адреса / данные / что-то читать, а можно только по определённому, принятому в этой шине алгоритму. I2C в МК работает, только если следовать этому алгоритму. Во вложении мои функции для работы с кодеком MAX98090 процессор STM32L4 1.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AleksBak 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Разобрался... Спасибо большое. Давным-давно, на др. контроллерах, именно так и писал (с использованием прямого программирования регистров и пр.), а тут (у стм-ок) еще не успел Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться