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

 
 
 
Reply to this topicStart new topic
> STM32F4xx не очень ясно АЦП
msn
сообщение Jun 8 2012, 23:22
Сообщение #1


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

Группа: Свой
Сообщений: 126
Регистрация: 1-01-06
Из: Украина, Киев
Пользователь №: 12 759



Прошу помочь разобраться.
Начинаю разбираться с STM32F407VG (до этого долго работал с Silabs 8051 и AVR).
Задача следующая (8-ми канальный самописец):
- есть 8 каналов, одновременно может быть включено 1 или 2 или … все 8
- необходимо считывать данные непрерывно с каждого включенного канала с частотой от 1 КГц до Max возможной (например 7.2 МГц)
- данные писать в ОЗУ и по мере возможностей передавать в ПК по Ethernet

Не могу понять что означает в datasheet “Additional functions”: ADC123_INn и ADC12_INn.
Например PA0 ADC123_IN0 это означает что вывод PA0 можно использовать как канал 0 для АЦП1, АЦП2 и АЦП3 или только для одного из АЦП. Или если используется независимый режим то ADC123_IN0 можно использовать только для одного АЦП, а если используется мульти режим то ADC123_IN0 можно использовать для всех АЦП?

В datasheet написано: However, an ADC cannot start a conversion if the complementary ADC is still sampling its input (only one ADC can sample the input signal at a given time), т.е. только УВХ одного АЦП одновременно может быть подключено к PA0?

Как я понял PA0 просто конфигурируется как аналоговый вход без подтяжек, после чего его номер прописываеться в ADC_SQR. PA0 как то привязывается к определенному АЦП?
Если прописать PA0 сразу в ADC1_SQR, ADC2_SQR и ADC3_SQR и запустить все 3 АЦП в независимом режиме, но что бы их моменты УВХ были разнесены по времени, так правильно?

Каналы ADC12_INn не могу использоваться для АПЦ3?

И еще не совсем ясно что такое external trigger?
Есть биты “Configuring the trigger polarity”
Trigger detection disabled - это означает что АЦП можно запустить только программно SWSTART?
Detection rising / falling edges - это только для trigger запуска от EXTI или еще как-то от таймеров по обоим фронтам?

Спасибо!

P.S.
Как-то странно STM аналоговый каналы сделала, если включаешь Ethernet или USB HS половины аналоговых каналов нет.
Go to the top of the page
 
+Quote Post
MBR
сообщение Jun 9 2012, 05:48
Сообщение #2


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

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Я работал с F1/F2, но суть общая, скорее всего, похожа.

Для вашей задачи вам достаточно использовать только ADC1.

Пины жестко привязаны к каналам ацп - PA0 = channel 1 и т.д. Сам PA0 использовать не рекомендую - в ерратах на какие-то процессоры он проходил, как зашумленный. Исправили ли баг - фиг знает.

Дальше есть 2 решения задачи - быстрое и правильное.

Правильное решение.

Настраиваете DMA, настраиваете последовательность из 8 каналов, настраиваете время сэмплирования каждого канала, запускаете. Данные автоматически складываются в память.

Быстрое решение.

Настраиваете только один канал и сэмплирование этого канала. По прерыванию завершения семплирования (в совсем быстром случае можно опрашивать поллингом) складываете данные из регистра в память. И так по всем 8 каналам.

А еще скачайте примеры от stm - там все реализовано.
Go to the top of the page
 
+Quote Post
msn
сообщение Jun 9 2012, 07:05
Сообщение #3


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

Группа: Свой
Сообщений: 126
Регистрация: 1-01-06
Из: Украина, Киев
Пользователь №: 12 759



Спасибо за совет.

Цитата(MBR @ Jun 9 2012, 08:48) *
Для вашей задачи вам достаточно использовать только ADC1.

Но тогда максимальная частота дискретизации 2.4 МГц.

Цитата(MBR @ Jun 9 2012, 08:48) *
Пины жестко привязаны к каналам ацп - PA0 = channel 1 и т.д.

Тут не совсем ясно.
У каждого АЦП есть свой аналоговый мультиплексор.
Получается что на Mux1 и Mux2 заведены одни 16 каналов, а на Mux3 - 8 каналов которые есть на Mux1/2 и 8 каналов с порта PF?
Код
PF3  ADC3_IN9
PF4  ADC3_IN14
PF5  ADC3_IN15
PF6  ADC3_IN4
PF7  ADC3_IN5
PF8  ADC3_IN6
PF9  ADC3_IN7
PF10 ADC3_IN8
PC0  ADC123_IN10
PC1  ADC123_IN11
PC2  ADC123_IN12
PC3  ADC123_IN13
PA0  ADC123_IN0
PA1  ADC123_IN1
PA2  ADC123_IN2
PA3  ADC123_IN3
PA4  ADC12_IN4
PA5  ADC12_IN5
PA6  ADC12_IN6
PA7  ADC12_IN7
PB0  ADC12_IN8
PB1  ADC12_IN9
PC4  ADC12_IN14
PC5  ADC12_IN15



Цитата(MBR @ Jun 9 2012, 08:48) *
Сам PA0 использовать не рекомендую - в ерратах на какие-то процессоры он проходил, как зашумленный. Исправили ли баг - фиг знает.

На F4xx вроде ни чего такого не написано.

Цитата(MBR @ Jun 9 2012, 08:48) *
Настраиваете DMA, настраиваете последовательность из 8 каналов, настраиваете время сэмплирования каждого канала, запускаете. Данные автоматически складываются в память.

Спасибо, как делать в общем я знаю.
Не понятные некоторые нюансы, о которых спрашивал выше.

Цитата(MBR @ Jun 9 2012, 08:48) *
А еще скачайте примеры от stm - там все реализовано.

Примеры скачал и смотрел, не на все вопросы нашел ответы.
Go to the top of the page
 
+Quote Post
MK2
сообщение Jun 9 2012, 12:08
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



Цитата(msn @ Jun 9 2012, 02:22) *
Каналы ADC12_INn не могу использоваться для АПЦ3?

нет не можете
Цитата(msn @ Jun 9 2012, 02:22) *
И еще не совсем ясно что такое ?
Есть биты “Configuring the trigger polarity”
Trigger detection disabled - это означает что АЦП можно запустить только программно SWSTART?
Detection rising / falling edges - это только для trigger запуска от EXTI или еще как-то от таймеров по обоим фронтам?

external trigger внешний запуск от фронта на ножке
так же еще ацп может запускать преобразование от таймеров
Go to the top of the page
 
+Quote Post
msn
сообщение Jun 11 2012, 21:03
Сообщение #5


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

Группа: Свой
Сообщений: 126
Регистрация: 1-01-06
Из: Украина, Киев
Пользователь №: 12 759



Цитата(MK2 @ Jun 9 2012, 15:08) *
external trigger внешний запуск от фронта на ножке
так же еще ацп может запускать преобразование от таймеров

Спасибо.
Для того что бы например запускать АЦП от T1 нужно установить:
ADC_CR2->EXTEN = 00b (Trigger detection disabled)
ADC_CR2->EXTSEL = 0000b (Timer 1 CC1 event)
Так?
Go to the top of the page
 
+Quote Post
MK2
сообщение Jun 16 2012, 08:02
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 30-10-10
Пользователь №: 60 535



по мимо АЦП надо еще соответственно настроить и таймер
в будний день приведу исходник
Go to the top of the page
 
+Quote Post

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

 


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


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