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

 
 
 
Reply to this topicStart new topic
> Модуль iic (i2c) в stm8L
ibiza11
сообщение May 17 2012, 06:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 13-01-09
Пользователь №: 43 304



Доброго времени суток, Уважаемые!

Вопрос для тех, кто работал с указанным протоколом в stm8L. В документации на контроллер указано два размера адреса: 7 и 10 битный, все настраивается внутренними регистрами.
По стандарту протокола i2c при обращении к slave в первом байте указывается 7-битный адрес slave и бит чтение/запись. так вот я не могу найти в документации на контроллер, куда этот битик записывать при настройке протокола.
Кто использовал - помогите советом.
Кому интересно, обрисую задачу: Необходимо настроить связь двух контроллеров по i2c (master-slave).
Протокол верхнего уровня уже продуман, в итоге задача сводится к пересылке пакетов туда-обратно.

Всем заранее спасибо.
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение May 18 2012, 09:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



In 7-bit addressing mode,
– To enter Transmitter mode, a master sends the slave address with LSB reset.
– To enter Receiver mode, a master sends the slave address with LSB set.

Это из рефренс-мануала.
Go to the top of the page
 
+Quote Post
ibiza11
сообщение May 18 2012, 10:48
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 13-01-09
Пользователь №: 43 304



RabidRabbit, спасибо большое!
В документации предоставлена противоречивая информация:
1)
Цитата
In 7-bit addressing mode,
– To enter Transmitter mode, a master sends the slave address with LSB reset.
– To enter Receiver mode, a master sends the slave address with LSB set.

2)
Цитата
28.7.4 Own address register LSB (I2C_OAR1L)
...
Bit 0 ADD1[0] Interface address
- 7-bit addressing mode: don’t care (??????????? Это и есть тот LSB?)
- 10-bit addressing mode: bit 0 of address

Из этого можно сделать неправильный вывод: LSB поля Address (отвечающий за направление передачи данных) является бит №1 регистра I2C_OAR1L
В общем непонятно написано.
Прикрепленное изображение

В итоге: чтобы передать адрес слейва с битом READ, нужно записать в регистр I2C_OAR1L 8-битное значение, в котором 7 старших бит будут определять адрес слейва, а младший (№0) направление передачи = 1 (READ)? так?
Go to the top of the page
 
+Quote Post
Семин
сообщение May 18 2012, 15:02
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 27-04-12
Пользователь №: 71 608



При передаче адреса, LSB, Младший бит говорит о направлении передачи следующего байта.
"0" - Ведомому с этим адресом.
"1" - От Ведомого с этим адресом.
Обычно всегда: "0" это Запись, "1" - Чтение.
Go to the top of the page
 
+Quote Post

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

 


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


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