anubis 0 18 октября, 2013 Опубликовано 18 октября, 2013 (изменено) · Жалоба Добрый день. Возникли проблемы с работой АЦП на stm32f107vc - форма оцифрованного сигнала довольно сильно искажена - завалены фронты. см картинку: На АЦП подается сигнал с генератора (звуковая карта) далее после оцифровки результат выдается на цап. Входной и выходной сигнал выводятся также на осциллограф. код мк: #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; //запустить процес преобразования } Изменено 18 октября, 2013 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dac 0 18 октября, 2013 Опубликовано 18 октября, 2013 · Жалоба где снимался входной сигнал осциллографом, на выходе источника или на ножке вход ацп стм32? аналогично с выходным. что показывает дамп значений ацп? какая частота сигнала? схема входных/выходных цепей? а то телепаты опять в отпуске :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 октября, 2013 Опубликовано 18 октября, 2013 · Жалоба Думаю, АЦП не при чем. Где-то в аналоговой части получился ФНЧ с частотой среза, слишком большой для такого сигнала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
anubis 0 18 октября, 2013 Опубликовано 18 октября, 2013 (изменено) · Жалоба Входной сигнал снимался на выходе звуковой карты (узел между выходом карты и пином отладочной карты ). Входной пин PA3. Выходной сигнал ЦАП снимался на пине отладочной карты PA5 в данном случае. частота 100Гц-1000Гц Дополнительной обвязки нету, подключен только осциллограф. ps на картинке сигнал инвертированный. Изменено 18 октября, 2013 пользователем anubis Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tolich86 0 18 октября, 2013 Опубликовано 18 октября, 2013 · Жалоба Ткни осциллографом в порт PORT PA.3, посмотри там прямоугольник или уже с завалами Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
anubis 0 18 октября, 2013 Опубликовано 18 октября, 2013 · Жалоба Вот еще скриншот: 1кГц меандр исходный сигнал Ткни осциллографом в порт PORT PA.3, посмотри там прямоугольник или уже с завалами На пине PA3 сигнал такой же Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexdos 0 18 октября, 2013 Опубликовано 18 октября, 2013 (изменено) · Жалоба Для исключения возможности пакости сигнала на выходе DAC, вывидите с него меандр частотой 1КГц и посмотрите что у Вас покажет осциллограф. Изменено 18 октября, 2013 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
anubis 0 18 октября, 2013 Опубликовано 18 октября, 2013 · Жалоба Действительно этот выход ЦАП работает криво, перекинул на другой все стало впорядке. Спасибо за помощь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться