#Eugene 0 19 апреля, 2019 Опубликовано 19 апреля, 2019 (изменено) · Жалоба Привет! Использую АЦП с параллельным интерфейсом совместно с STM32F407VG. Как только во время работы DMA происходит запись в регистр GPIOD->ODR в результатах оцифровки появляются помехи. Из Errata нашел следующий пункт, где говорится о невозможности совместной работы DMA2 и GPIO: Quote DMA2 data corruption when managing AHB and APB peripherals in a concurrent way Description When the DMA2 is managing AHB Peripherals (read- or write-sensitive devices such as peripherals embedding FIFOs or GPIOs) and also APB transfers in a concurrent way, this generates a data corruption (multiple DMA access). When this condition occurs: • The data transferred by the DMA to the AHB peripherals could be corrupted in case of a FIFO target. • For memories, it will result in multiple access (not visible by the Software) and the data is not corrupted. • For the DCMI, a multiple unacknowledged request could be generated, which implies an unknown behavior of the DMA. AHB peripherals embedding FIFO are DCMI, CRYPTO, and HASH. Also we can consider external FIFO controlled by the FSMC and GPIO Output Data register as AHB write sensitive peripherals. On sales types without CRYPTO, mainly impacted peripheral is the DCMI peripheral which embeds a FIFO. External FIFO controlled by the FSMC and GPIOs when used as parallel output are also impacted. Workaround Avoid concurrent AHB (DCMI, CRYPTO, HASH, FSMC with external FIFO, or GPIOs output data register) and APB transfer management using the DMA2. 1. Существуют ли варианты обхода этого ограничения? Дело в том, что после завершения DMA транзакции из DCMI в SRAM нужно сгенерировать импульс VSYNC, чтобы запустить следующую транзакцию. 2. Быть может, DCMI можно использовать без VSYNC? 3. Существуют ли процессоры с параллельным интерфейсом и поддержкой Sleep & Stop mode? Изменено 19 апреля, 2019 пользователем #Eugene Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба https://www.st.com/content/ccc/resource/technical/document/application_note/group0/c0/ef/15/38/d1/d6/49/88/DM00373474/files/DM00373474.pdf/jcr:content/translations/en.DM00373474.pdf надеюсь читали. А для генерации VSYNC можно таймер задействовать, используя его же для счета принятых по DCMI данных. Возможна конечно синхронизация DCMI по цифровым кодам без VSYNC, но она не удобна, требует FPGA, а тогда проще на FSMC все посадить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 3 часа назад, #Eugene сказал: 3. Существуют ли процессоры с параллельным интерфейсом и поддержкой Sleep & Stop mode? Так может вообще использовать АЦП с последовательным интерфейсом или встроенный в МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 21 minutes ago, jcxz said: Так может вообще использовать АЦП с последовательным интерфейсом или встроенный в МК? А почему не на RC и компараторе? Наверное, параллельный интерфейс к АЦП не просто так нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
#Eugene 0 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 1 hour ago, khach said: https://www.st.com/content/ccc/resource/technical/document/application_note/group0/c0/ef/15/38/d1/d6/49/88/DM00373474/files/DM00373474.pdf/jcr:content/translations/en.DM00373474.pdf надеюсь читали. А для генерации VSYNC можно таймер задействовать, используя его же для счета принятых по DCMI данных. Возможна конечно синхронизация DCMI по цифровым кодам без VSYNC, но она не удобна, требует FPGA, а тогда проще на FSMC все посадить. Да, читал этот документ. В случае с таймером для генерации VSYNC - какой лучше выбрать источник тактирования для него? 1 hour ago, jcxz said: Так может вообще использовать АЦП с последовательным интерфейсом или встроенный в МК? Нужно от 3.5 до 20 MSPS, параллельный в самый раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 30 минут назад, #Eugene сказал: Нужно от 3.5 до 20 MSPS, параллельный в самый раз. В самый раз по какой причине? Необходима гальваническая развязка или разрядность требуется большая или ещё почему? Просто есть МК со встроенным АЦП и там нет проблем с синхронизацией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
#Eugene 0 19 апреля, 2019 Опубликовано 19 апреля, 2019 (изменено) · Жалоба jcxz, с внешним АЦП проще добиться требуемой разрядности, чем с внутренним. Параллельный выбран из-за того, что требуется на 10...20 MSPS работать, с последовательным это еще и к бОльшему потреблению приведет. Сейчас для экспериментов на 12 бит, планируется поставить на 14 бит. Изменено 19 апреля, 2019 пользователем #Eugene Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 66 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 47 минут назад, jcxz сказал: Просто есть МК со встроенным АЦП и там нет проблем с синхронизацией. Мне вот тоже интересно МК с встроенным АЦП на 20MSPS и хотя бы 12 разрядов. И RAM желательно не 40 Кбайт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 19 минут назад, #Eugene сказал: jcxz, с внешним АЦП проще добиться требуемой разрядности, чем с внутренним. Параллельный выбран из-за того, что требуется на 10...20 MSPS работать, с последовательным это еще и к бОльшему потреблению приведет. Сейчас для экспериментов на 12 бит, планируется поставить на 14 бит. Проще применить CPLD + SRAM, а потом МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
#Eugene 0 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба khlenar, Не факт, что проще. Этот проц загружен всего на 20% при обработке на 7MSPS. В особенности интересуют варианты экономии энергии, переводом процессора в спячку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 14 minutes ago, HardEgor said: Мне вот тоже интересно МК с встроенным АЦП на 20MSPS и хотя бы 12 разрядов. И RAM желательно не 40 Кбайт. LPC4370 6 hours ago, #Eugene said: 3. Существуют ли процессоры с параллельным интерфейсом и поддержкой Sleep & Stop mode? про sleep&stop немного не понял, но у блэкфинов(bf592 или bf700 если usb надо) параллельный порт по-человечески сделан, по сравнению с DCMI. да и у пиков32 ещё вроде бы выглядит неплохо. 4 minutes ago, #Eugene said: Этот проц загружен всего на 20% при обработке на 7MSPS. В особенности интересуют варианты экономии энергии, переводом процессора в спячку. это что за обработка такая, среднее значение посчитать? 20% от 160МГц и 7 MSPS это аж целых четыре такта на отсчёт. по потреблению у небольших дсп, C55 или блэкфинов, мВт/МГц может поменьше в результате выйти чем у stm32. а учитывая что они за такт могут сделать, так тем более. но те процессоры что могут что-то осмысленное сделать с потоком 20мспс спят обычно довольно плохо, тревожно, потребляя при этом довольно много, иногда наверное проще какую-нибудь "8ми битную" мелочь рядом поставить которая будет усыплять рубильником по питанию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 2 часа назад, HardEgor сказал: Мне вот тоже интересно МК с встроенным АЦП на 20MSPS и хотя бы 12 разрядов. И RAM желательно не 40 Кбайт. Уже написали - LPC4370. Хотя он всего 12 бит, а ТСу нужно 14. 2 часа назад, _pv сказал: но те процессоры что могут что-то осмысленное сделать с потоком 20мспс спят обычно довольно плохо, тревожно, потребляя при этом довольно много, иногда наверное проще какую-нибудь "8ми битную" мелочь рядом поставить которая будет усыплять рубильником по питанию. При требовании малого потребления LPC4370 будет хорош: для быстрой обработки есть M4 на 204МГц, а для экономной работы - два других M0-ядра на выбор. Правда не знаю - можно ли там полностью отключать M4 (и второе M0) работая только на одном M0. 2 часа назад, #Eugene сказал: В особенности интересуют варианты экономии энергии, переводом процессора в спячку. У LPC4370 можно попробовать работать на одном M0-ядре. Оно всяко будет потреблять меньше чем M4. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 66 19 апреля, 2019 Опубликовано 19 апреля, 2019 · Жалоба 4 часа назад, _pv сказал: LPC4370 Вот спасибо, добрые люди. Еще и отладка недорогая под него нашлась:OM13054 , вдруг кому пригодится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 20 апреля, 2019 Опубликовано 20 апреля, 2019 · Жалоба 23 hours ago, #Eugene said: В случае с таймером для генерации VSYNC - какой лучше выбрать источник тактирования для него? PIXCLK использовал. Т.е таймер отсчитывал число принятых слов, а на предпоследнем в пакете перезапускал модуль АЦП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться