Перейти к содержанию
    

Настройка АЦП stm32

Добрый день.

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

23d5f7b666a27d7604bf64091fa37ea5.jpeg

 

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

Входной и выходной сигнал выводятся также на осциллограф.

 

 

 

код мк:

#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
[codebox] для длинного кода, [code] - для короткого!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

что показывает дамп значений ацп?

какая частота сигнала?

схема входных/выходных цепей?

 

а то телепаты опять в отпуске :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю, АЦП не при чем. Где-то в аналоговой части получился ФНЧ с частотой среза, слишком большой для такого сигнала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Входной сигнал снимался на выходе звуковой карты (узел между выходом карты и пином отладочной карты ).

Входной пин PA3.

Выходной сигнал ЦАП снимался на пине отладочной карты PA5 в данном случае.

частота 100Гц-1000Гц

Дополнительной обвязки нету, подключен только осциллограф.

ps на картинке сигнал инвертированный.

Изменено пользователем anubis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ткни осциллографом в порт PORT PA.3, посмотри там прямоугольник или уже с завалами

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот еще скриншот:

1кГц меандр исходный сигнал

40f554d420507f0d2fcd3b9cd3191979.jpeg

 

Ткни осциллографом в порт PORT PA.3, посмотри там прямоугольник или уже с завалами

На пине PA3 сигнал такой же

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем IgorKossak
бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Действительно этот выход ЦАП работает криво, перекинул на другой все стало впорядке.

Спасибо за помощь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...