Jump to content

    

I2C STM32L4

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

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

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

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

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

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

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

 

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

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

 

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

Для чтения есть бит RD_WRN

Share this post


Link to post
Share on other sites

эхо может быть в виде бита или в виде байта

Share this post


Link to post
Share on other sites

Разобрался.

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

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

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

1.txt

Share this post


Link to post
Share on other sites
Разобрался...

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this