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

 
 
> Настройка АЦП stm32
anubis
сообщение Oct 18 2013, 10:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-01-06
Пользователь №: 13 178



Добрый день.
Возникли проблемы с работой АЦП на stm32f107vc - форма оцифрованного сигнала довольно сильно искажена - завалены фронты. см картинку:


На АЦП подается сигнал с генератора (звуковая карта) далее после оцифровки результат выдается на цап.
Входной и выходной сигнал выводятся также на осциллограф.



код мк:
CODE
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"

int main(void)
{
/* Включаем порт А */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* Включаем ЦАП */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);

AdcInit(); //выполнить инициализацию АЦП /


/* Настраиваем ногу PA4 и PA4 ЦАПа */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_4 | GPIO_Pin_5);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);



/* Включить DAC2 */
DAC->CR |= DAC_CR_BOFF2;
DAC->CR |= DAC_CR_EN2;


while(1)
{
short adc_val = ADC1->DR;

DAC->DHR12R2=(adc_val-2048);
}
}


void AdcInit(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Разрешить тактирование порта PORT A
//Конфигурирование PORT PA.3 - аналоговый вход
GPIOA->CRL &= ~GPIO_CRL_MODE3; //Очистить биты MODE
GPIOA->CRL &= ~GPIO_CRL_CNF3; //Очистить биты CNF

RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; //подаем тактирование АЦП
RCC->CFGR &= ~RCC_CFGR_ADCPRE; //входной делитель
ADC1->CR1 = 0; //
ADC1->SQR1 = 0; //
ADC1->CR2 |= ADC_CR2_CAL; //запуск калибровки
while (!(ADC1->CR2 & ADC_CR2_CAL)){}; //ждем окончания калибровки
ADC1->CR2 = ADC_CR2_EXTSEL; //выбрать источником запуска разряд SWSTART
ADC1->CR2 |= ADC_CR2_EXTTRIG; //разр. внешний запуск регулярного канала
ADC1->CR2 |= ADC_CR2_CONT; //режим непрерывного преобразования

/* Задаем длительность выборки */
ADC1->SMPR2 |= (ADC_SMPR2_SMP4_2 | ADC_SMPR2_SMP4_1 | ADC_SMPR2_SMP4_0);

ADC1->SQR3 = 3; //загрузить номер канала
ADC1->CR2 |= ADC_CR2_ADON; //включить АЦП
ADC1->CR2 |= ADC_CR2_SWSTART; //запустить процес преобразования
}


Сообщение отредактировал IgorKossak - Oct 18 2013, 12:58
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
dac
сообщение Oct 18 2013, 10:58
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



где снимался входной сигнал осциллографом, на выходе источника или на ножке вход ацп стм32? аналогично с выходным.
что показывает дамп значений ацп?
какая частота сигнала?
схема входных/выходных цепей?

а то телепаты опять в отпуске sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 18 2013, 11:05
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Думаю, АЦП не при чем. Где-то в аналоговой части получился ФНЧ с частотой среза, слишком большой для такого сигнала.
Go to the top of the page
 
+Quote Post
anubis
сообщение Oct 18 2013, 11:32
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-01-06
Пользователь №: 13 178



Входной сигнал снимался на выходе звуковой карты (узел между выходом карты и пином отладочной карты ).
Входной пин PA3.
Выходной сигнал ЦАП снимался на пине отладочной карты PA5 в данном случае.
частота 100Гц-1000Гц
Дополнительной обвязки нету, подключен только осциллограф.
ps на картинке сигнал инвертированный.

Сообщение отредактировал anubis - Oct 18 2013, 11:36
Go to the top of the page
 
+Quote Post
Толич
сообщение Oct 18 2013, 11:38
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 23-12-07
Пользователь №: 33 582



Ткни осциллографом в порт PORT PA.3, посмотри там прямоугольник или уже с завалами
Go to the top of the page
 
+Quote Post
anubis
сообщение Oct 18 2013, 11:42
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-01-06
Пользователь №: 13 178



Вот еще скриншот:
1кГц меандр исходный сигнал


Цитата(Толич @ Oct 18 2013, 15:38) *
Ткни осциллографом в порт PORT PA.3, посмотри там прямоугольник или уже с завалами

На пине PA3 сигнал такой же
Go to the top of the page
 
+Quote Post
alexdos
сообщение Oct 18 2013, 12:34
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856



Для исключения возможности пакости сигнала на выходе DAC, вывидите с него меандр частотой 1КГц и посмотрите что у Вас покажет осциллограф.

Сообщение отредактировал IgorKossak - Oct 18 2013, 12:59
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
anubis
сообщение Oct 18 2013, 13:17
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-01-06
Пользователь №: 13 178



Действительно этот выход ЦАП работает криво, перекинул на другой все стало впорядке.
Спасибо за помощь
Go to the top of the page
 
+Quote Post

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

 


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


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