worklog: STM32F746 I2C через DMA, чтение из устройства.
|
4 ноя, 2017 @ 00:04
|
---|
Таки наврал - чтение отличается от записи и разбить его так просто на две фазы (адрес, потом всё остальное) не позволяет сама железяка. Хотя это, видимо, и не нужно. Просто я не совсем ещё врубился в то, как именно отрабатываются ошибки - если настроить транзакцию и запустить её, но удалённое устройство не ответит или вернёт NACK, то как аппаратура это воспримет? пока не ясно. Но уже понятно, что изначальная идея с разбиванием на две фазы, по-видимому, это излишнее усложнение. Промежду тем, Microchip отличился и выпустил PIC32 со встроенной графикой и, что гораздо интереснее, со встроенной памятью SDRAM аж до 32 мегабайт. |
From: | oopk |
---|
Date: | Ноябрь, 3, 2017 22:38 (UTC) |
---|
| | | (Link) |
|
Я не в теме; а откуда берутся экранчики как на иллюстрации (для виртуальной приборной панели же; иначе зачем графика?; или я не понял и это только к обычным дисплейчикам?), сколько могут стоить? какие экранчики, не понял From: | oopk |
---|
Date: | Ноябрь, 4, 2017 17:44 (UTC) |
---|
| | | (Link) |
|
PIC32MZ DA. Я так понял по картинке на сайте, что градусник справа — виртуальная панель (типа https://www.youtube.com/watch?v=_LaKArbY_pw ). Это я размечтался, или для такого они тоже годятся? А про экранчики спросил непрямоугольные (как у градусника): распространены ли они? не знаю, может быть кастомный дизайн а из неквадратных я видел только круглый дисплей и это выглядит тупо и убого, как по мне. ![[User Picture Icon]](https://l-userpic.livejournal.com/74394549/829213) | From: | mbr |
---|
Date: | Ноябрь, 4, 2017 05:54 (UTC) |
---|
| | | (Link) |
|
Скажем так, это нужно не всегда. Некоторые I2c-шные смарт-карты требуют первым байтом вычитать размер получаемых данных, далее идут сами данные. Если вовремя не ответить NACK, смарт-карта отвалится. значит, с ними можно работать только битбанг-I2C, потому что аппаратный устроен так, что все настройки (включая длину прдполагаемых данных) задаются в самом начале. Или же хитрожопо обойти, играя с флагами AUTORELOAD и всё такое - вообще это рассчитано на применение, когда длина пакета данных превышает 255 байт, но я не вижу указаний на то, что это обязательно должно быть так. Можно указать NBYTES=1, считать 1 байт, модуль войдёт в SCL stretch, затем прописать уже новый NBYTES и дочитать пакет до конца. ![[User Picture Icon]](https://l-userpic.livejournal.com/74394549/829213) | From: | mbr |
---|
Date: | Ноябрь, 4, 2017 14:46 (UTC) |
---|
| | | (Link) |
|
Я делал на F0 без DMA. У F1 оно как-то совсем черезжопно устроено, но тоже, вроде, делали.
|
|