Наблюдения

Jan 19, 2014 15:25

Сейчас на всех вестибюлях станций метро вешают светодиодные часы-термометр. Какой-то гений на Ленинском проспекте повесил их прямо на решетку вентшахты, встроенной в вестибюль, в итоге вокруг мороз, а термометр весело сообщает о нуле градусов ( Read more... )

Микроконтроллеры, Город, Энергосистема, Электроника, Промзона

Leave a comment

Comments 25

maddev January 19 2014, 11:51:29 UTC
> Что-то все-таки инженеры ST при разработке нового модуля I2C в STM32
перемудрили
А какой именно это чип?

Reply

alex_avr2 January 19 2014, 12:45:17 UTC
F3 серия.
Тоже самое по идее в F0.
В F1 старый и2ц, говорят очень глючный, не сталкивался к счастью. Вот насчет F4 не уверен, но подозреваю что тоже старый.

Глянул F4 - точно, старый.

А в F3 они заморочились - там все по максимуму автоматизированно - настраиваешь адрес, настраиваешь количество байт передать/принять, запускаешь и оно само все(почти) делает :)

Reply


sashman January 19 2014, 15:17:12 UTC
всё просто
1) регистр опустошился, интеррупт дёрнулся, бит значит "докиньте данных в регистр ололол!11"
0) регистр пустой, ок.

Reply

alex_avr2 January 19 2014, 15:19:01 UTC
Не понятно.

Reply

nicka_startcev January 19 2014, 18:05:20 UTC
Возможно, там есть буферизация. Тогда докидывать надо не по факту окончания передачи, а чуть раньше.

Reply


executehv January 19 2014, 15:50:22 UTC
Бит 1 очищается сам(by hardware) по записи в регистр I2Cx_TXDR. Устанавливается, если необходимо записать новую порцию данных в регистр.
Он может быть установлен в единицу (для генерации сообщения TXIS) программой, но такая запись возможна, только если NOSTRETCH=1.
Сгенерируется прерывание, если установлен бит TXIE, и запрос DMA, если установлен TXDMAEN.
Бит 0 аналогичен (очищается сам(by hardware) по записи в регистр I2Cx_TXDR. Устанавливается, если необходимо записать новую порцию данных в регистр),
но запись в него единицы приведет к очистке регистра данных(ясно, что до их фактической передачи, вроде ж регистр чистится сам после отправки пачки данных, так?)

Reply

alex_avr2 January 19 2014, 15:53:43 UTC
>>но запись в него единицы приведет к очистке регистра данных

Это не единственная разница, судя по поведению. Я до сих пор не понимаю логику этих флагов, какой нужен для чего и в каких ситуациях.

Reply

executehv January 19 2014, 15:55:17 UTC
Ну на чтение у них поведение одинаково, а на запись уже разница большая)

Reply

alex_avr2 January 19 2014, 16:01:16 UTC
В том то и дело, что не одинаковое.

Ситуация - надо передать два байта по и2ц(после адреса). Инициализирую передачу, пишу в TXDR первый байт сразу.

Потом ловлю прерывание по флагу(одному из этих двух), которое говорит нам что байт передался и можно слать следующий. Пишу в TXDR второй байт, завершаю передачу, все отлично.

Веселуха начинается при попытке повторить тоже самое еще раз. В случае если использовался флаг TXIS - все ок, тот же алгоритм приводит к правильному результату. А вот если использовать TXE, то первый байт второй посылки будет не тот что мы запишем, а такой же, как второй байт первой посылки. Не знаю, баг это или фича, в ERRATA про это нет(хотя другие косяки с I2C там описаны). Ну и в любом случае описание кривое - можно было бы поподробнее расписать чем отличаются биты и когда что применять. Впрочем это типично для ST :)

Reply


executehv January 19 2014, 15:52:23 UTC
Про трубы - в корне несогласен с теми, кто говорит, какого хрена подсвечивают ТЭЦ-12. Выглядит прекрасно.

Reply

alex_avr2 January 19 2014, 15:54:14 UTC
А кто-то так говорит?
Выглядит круто, да :)

Reply

executehv January 19 2014, 15:59:06 UTC

... )

Reply

alex_avr2 January 19 2014, 16:03:23 UTC
Ого!

Reply


mbr January 20 2014, 05:15:02 UTC
Очевидно же :)

TXIS используется для interrupt mode, записью 1 можно начать цикл передачи

TXE для поллинга

Reply

alex_avr2 January 20 2014, 10:50:00 UTC
Передача без записи в какие либо флаги начинается.

Reply

mbr January 20 2014, 12:04:13 UTC
Ответ о slave или master, polling или interrupt?

Reply

alex_avr2 January 20 2014, 12:11:43 UTC
Режим мастера, работа по прерываниям.

Reply


Leave a comment

Up