|
АЦП и энергопотребление |
|
|
|
Dec 1 2015, 13:55
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 16-10-15
Пользователь №: 88 891

|
Есть необходимость оцифровывать несколько сигналов, с разной частотой (2кГц, 256Гц, 16Гц) и разной разрядностью (8-12бит) и скидывать все это дело на карту памяти. Все это усложняется батарейным питанием. Как лучше поступить?
1. Вариант, запускать преобразование по таймеру, с самой большой частотой дискретизации, с максимальной разрядностью, по окончанию преобразования забирать через DMA. По заполнению буфера DMA, выдаст прерывание, после него заполнять другой буфер, а за это время разгребать то что накопилось. Чем нравится решение, тем что, наверное, будет время для сна. Чем не нравится - не гибко, это будет огромный массив, в который будут свалены все данные скопом. Придется вычленять нужные данные, преобразовывать их битность, затем распихивать по мелким массивам, чтобы отсортировать, затем снова правильно раскладывать.
2. Вариант постоянно преобразовывать значения АЦП и сразу складывать их через DMA в массив. Запускать таймер с частотой 2кГц, в прерывании забирать только нужные значения, сразу же преобразовывать и аккуратно складывать. Чем нравится, удобно, займет меньше места в оперативе. Чем не нравится, не понятно что получится с энергопотреблением, думаю что оно вырастет, этого не хотелось бы.
Еще вопрос: как лучше делать с т.з энергопотребления - копить большой буфер и скидывать на карту большим куском, или мелкими порциями
|
|
|
|
|
 |
Ответов
|
Dec 1 2015, 14:45
|

Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474

|
Как понимаю, использовать собираетесь что-то из STM32? Если применить STM32L - то можно запускать ADC по таймеру, заранее выставив биты пониженного потребления. В таком случае - ADC запускается таймером, включается, инициализируется, проводит оцифровку и сбрасывает данные по DMA в участок памяти. На DMA потребуется настроить прерывания по половинному заполнению буфера и окончанию буфера. Просыпаться, соответственно, два раза за буфер. Оцифровывать можно с изначально известной частотой дискретизации. Причём, чем ниже частота выборки, тем больше времени будет контроллер находиться в состоянии сна при одинаковом размере буфера. Опять же, при оцифровке с достаточно большой частотой сэмплирования (более 100kSa/s) выигрыша Вы уже не получите. Хотя, для 16Гц (Sa/s?) можно проводить во сне более 99.5% времени.
Вариант с большми буфером для медленного заполнения (как у вас) будет наилучшим.
|
|
|
|
|
Dec 1 2015, 15:02
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 16-10-15
Пользователь №: 88 891

|
Видимо не очевидно проблему описал. Использовать буду STM32L1, вы как раз описали первый случай, еще раз попытаюсь объяснить чем он мне не нравится, частота дискретизации будет 2кГц, ибо АЦП придется настраивать по максимальной частоте. Получится что все каналы будут оцифровываться с частотой 2кГц и 16бит. У меня 10 каналов. 2000*2*10 = 40кБ за секунду, вместо 5кБ планируемых. Даже если забирать буфер раз в 1/16 сек, это будет 2.5кБ вместо 312байт, которые нужно еще отсортировать и преобразовать. Поэтому я задумался, не проще ли копировать только в нужные моменты в прерывании и преобразовывать на ходу?
Сообщение отредактировал IgorKossak - Dec 1 2015, 22:25
Причина редактирования: бездумное цитирование
|
|
|
|
Сообщений в этой теме
data_stack АЦП и энергопотребление Dec 1 2015, 13:55 Alechek Не знаю как для STM32L, но я бы сравнил потреблени... Dec 2 2015, 06:54 jcxz Цитата(data_stack @ Dec 1 2015, 19:55) Ещ... Dec 2 2015, 10:18 data_stack Была и такая мысля. Почему не понравилась. В STM32... Dec 2 2015, 11:58 AlanDrakes Итак, обобщу снова.
- DMA в L1 достаточно экономны... Dec 3 2015, 06:42 jcxz Цитата(AlanDrakes @ Dec 3 2015, 12:42) TI... Dec 3 2015, 08:14  data_stack Цитата(jcxz @ Dec 3 2015, 09:14) Либо иск... Dec 3 2015, 08:44   jcxz Цитата(data_stack @ Dec 3 2015, 14:44) Ви... Dec 3 2015, 09:07 data_stack Вы не внимательно читали мой первый вопрос Запуск... Dec 3 2015, 10:12 jcxz Цитата(data_stack @ Dec 3 2015, 16:12) Вы... Dec 3 2015, 11:38 data_stack Да именно так, вроде так я и писал. Dec 3 2015, 12:22 Сергей Борщ Есть возможность более редкие измерения делать от ... Dec 3 2015, 13:22 jcxz Если так важно получить минимальное потребление, т... Dec 3 2015, 14:00  AlanDrakes Цитата(jcxz @ Dec 3 2015, 14:14) ТСу врод... Dec 4 2015, 14:13   MiklPolikov Я постоянно занимаюсь вопросами потребления, счита... Dec 5 2015, 03:45    jcxz Цитата(MiklPolikov @ Dec 5 2015, 09:45) Я... Dec 5 2015, 08:29 data_stack Кругозор действительно ограничен, наличие того что... Dec 3 2015, 14:42 data_stack Если кому интересно, то в конкретно моем случае о... Jan 15 2016, 13:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|