Перейти к содержанию
    

I2C STM32L4

Помогите разобраться с I2C в STM32L4

Пытаюсь прочитать slave-микросхему.

Делаю следующее:

NBYTES = 3 (количество байт в транзакции)

SADD = 0x21 (адрес микросхемы)

TXDR = 0x5 (адрес регистра в микросхеме)

START = 1 (запуск передачи)

 

И передача начинается. Передаётся сначала 0x21 затем 0x03

Что делать дальше - не понимаю. Как после этого заставить I2C выставить ещё клоки и прочитать ответ микросхемы ?

 

Ставлю бит RD_WRN = 1

TXDR = 0xFF - ещё клоки выставляются , но в RXDR ничего не появляется.

 

Вообще, почему в RXDR ничего не появляется после каждой передачи ? Было бы логично, если бы там появлялось эхо.

 

Заранее спасибо !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался.

Суть в том, что в I2C нельзя в произвольной последовательнсоти передавать адреса / данные / что-то читать, а можно только по определённому, принятому в этой шине алгоритму.

I2C в МК работает, только если следовать этому алгоритму.

Во вложении мои функции для работы с кодеком MAX98090 процессор STM32L4

1.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался...

Спасибо большое. Давным-давно, на др. контроллерах, именно так и писал (с использованием прямого программирования регистров и пр.), а тут (у стм-ок) еще не успел

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...