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

 
 
> АЦП и энергопотребление
data_stack
сообщение Dec 1 2015, 13:55
Сообщение #1


Участник
*

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



Есть необходимость оцифровывать несколько сигналов, с разной частотой (2кГц, 256Гц, 16Гц) и разной разрядностью (8-12бит) и скидывать все это дело на карту памяти. Все это усложняется батарейным питанием. Как лучше поступить?

1. Вариант, запускать преобразование по таймеру, с самой большой частотой дискретизации, с максимальной разрядностью, по окончанию преобразования забирать через DMA. По заполнению буфера DMA, выдаст прерывание, после него заполнять другой буфер, а за это время разгребать то что накопилось. Чем нравится решение, тем что, наверное, будет время для сна. Чем не нравится - не гибко, это будет огромный массив, в который будут свалены все данные скопом. Придется вычленять нужные данные, преобразовывать их битность, затем распихивать по мелким массивам, чтобы отсортировать, затем снова правильно раскладывать.

2. Вариант постоянно преобразовывать значения АЦП и сразу складывать их через DMA в массив. Запускать таймер с частотой 2кГц, в прерывании забирать только нужные значения, сразу же преобразовывать и аккуратно складывать. Чем нравится, удобно, займет меньше места в оперативе. Чем не нравится, не понятно что получится с энергопотреблением, думаю что оно вырастет, этого не хотелось бы.

Еще вопрос: как лучше делать с т.з энергопотребления - копить большой буфер и скидывать на карту большим куском, или мелкими порциями
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Dec 3 2015, 13:22
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Есть возможность более редкие измерения делать от отдельного таймера как injected, но выгребать их придется в прерывании АЦП (DMA забирать их не умеет).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 3 2015, 14:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Если так важно получить минимальное потребление, то может имеет смысл расширить кругозор и рассмотреть разные семейства от разных поизводителей, а не зацикливаться на STM32?
У многих МК есть очень интересные решения для снижения потребления для работы с остановленным ядром.
Например в LPC4370, который сейчас изучаю, интересно реализован АЦП, можно задать произвольную диаграмму работы АЦП вообще без участия ядра до полного заполнения большого буфера. И даже точно выдержать требуемые Вам частоты, а не примерно. Хотя этот МК вряд-ли Вам подойдёт, но есть множество других.
Go to the top of the page
 
+Quote Post
AlanDrakes
сообщение Dec 4 2015, 14:13
Сообщение #4


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

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



Цитата(jcxz @ Dec 3 2015, 14:14) *
ТСу вроде как требуется оцифровывать три разных канала, каждый со своей частотой сэмплирования, причём частоты некратны друг другу (и не про какие допустимые погрешности частоты сэмплирования ТС не писал - а значит принимаем что нужно точно 2кГц, 256Гц и 16Гц).

Пардон, мне показалось, что это были режимы.
В таком случае, я бы выбрал сэмплирование на 2048Sa/s и прореживал данные перед записью в буфер карты.

Цитата(jcxz @ Dec 3 2015, 14:14) *
А эти цифры вообще с потолка...

Эти "цифры" вычислены из Datasheet'а - STM32L1xx Datasheet.
Кстати, я неправ в размере буфера. Общий объём памяти кристалла - 16кБ.


Цитата(data_stack @ Dec 3 2015, 14:44) *
Судя по даташиту L1 рвет топовые MSP по токопотреблению.

Виноват, не уточнил, если это даст выигрыш по току, то подогнать частоты можно. поэтому наверно логично взять 2048, 256 и 16Гц. Думаю, пока остановлюсь на 1 варианте и как было сказано выше, буду чаще их обрабатывать и скидывать.


У STM32L152 есть 2 АЦП.
И много таймеров.
Частота 256 кратна 16-ти (16 раз), а вот 2000 - нет.
Так что, можно заставить оцифровывать один АЦП и один канал DMA низкочастотные выборки (256Sa/s) в одну область памяти, а более скоростные (2000Sa/s) - в другую по другому каналу.
Время между выборками столь большое, что можно запускать не боясь перехлёста каналов DMA.
Соответственно, использовать два таймера.

Цитата(jcxz @ Dec 3 2015, 20:00) *
Если так важно получить минимальное потребление, то может имеет смысл расширить кругозор и рассмотреть разные семейства от разных поизводителей, а не зацикливаться на STM32?

Поддерживаю. Хотя, у меня аналогичная ситуация и ТС - что есть, с тем и работаем.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- data_stack   АЦП и энергопотребление   Dec 1 2015, 13:55
- - AlanDrakes   Как понимаю, использовать собираетесь что-то из ST...   Dec 1 2015, 14:45
|- - data_stack   Видимо не очевидно проблему описал. Использовать б...   Dec 1 2015, 15:02
|- - Сергей Борщ   Цитата(data_stack @ Dec 1 2015, 18:02) не...   Dec 1 2015, 16:39
- - 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
|- - 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


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

 


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


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