Jump to content

sucess

Members
  • Content Count

    17
  • Joined

  • Last visited

Community Reputation

0 Обычный

About sucess

  • Rank
    Новенький

Информация

  • Город
    москва

Электроника

  • Стаж в электронике
    1-2 года

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. подскажите пожалуйста как определить период затухающего сигнала в матлаб (не использовать преобразование Фурье)
  2. подскажите пожалуйста методы измерения параметров звуковых сигналов ( частота, громкость, время затухания, тембр ...)
  3. подскажите пожалуйста методы измерения параметров звуковых сигналов ( частота, громкость, время затухания, тембр ...)
  4. Помогите,какие алгоритмы измерения частоты, высоты звуковых синусоидальных сигналов с помощью микроконтроллера?
  5. sucess

    АЦ STM32

    у меная ацп 12-битный, почему на полученном графике 16 -битный. помогите !!!!
  6. Реализовать циклическое измерение напряжения на входе АЦП(ADC1_IN1 соответствует PA1) , цифровой код напряжения записывать в буфер, используя ДМА. Затем передать данные из буфера на ПК по юарт. Кто занет подскажите где в программе не правильно. #include "stm32f10x.h" #include "string.h" const unsigned int N=10; char rx_buf[10], rx_length=0; uint16_t adc_res; uint8_t rx_data; uint8_t tx_data; uint16_t adc_temp[10]={0}; uint8_t i; char RxBuffer[255]=""; char TxBuffer[255]=""; void AdcInit(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Разрешить тактирование порта PORTA GPIOA->CRL &= ~GPIO_CRL_MODE1; //Очистить биты MODE GPIOA->CRL &= ~GPIO_CRL_CNF1; //Очистить биты CNF RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; //подаем тактирование АЦП RCC->CFGR &= ~RCC_CFGR_ADCPRE; //входной делитель ADC1->CR1 = 0; // ADC1->CR1 |= ADC_CR1_EOCIE; //enable interruption of eoc 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->SQR3 = 1; //загрузить номер канала ADC1->CR2 |= ADC_CR2_ADON; //включить АЦП ADC1->CR2 |= ADC_CR2_SWSTART; //запустить процес преобразования NVIC_SetPriority(ADC1_IRQn, 2); NVIC_EnableIRQ(ADC1_IRQn); __enable_irq(); } void int_tim3(void) { RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;//Включаем тактирование TIM3 TIM3->PSC = 0x18; TIM3->ARR = 0x64; TIM6->DIER |= TIM_DIER_UIE; TIM3->CR1 |= TIM_CR1_CEN; } void init_dma_adc (void) { RCC->AHBENR |= RCC_AHBENR_DMA1EN; DMA1_Channel1->CPAR |= (uint32_t)&ADC1->DR; DMA1_Channel1->CMAR |= (uint32_t)&adc_temp[0]; DMA1_Channel1->CNDTR = 10; DMA1_Channel1->CCR = 0; DMA1_Channel1->CCR |= DMA_CCR1_DIR; DMA1_Channel1->CCR |= DMA_CCR1_MINC; DMA1_Channel1->CCR |= DMA_CCR1_CIRC; ADC1->CR2 |= ADC_CR2_DMA; DMA1_Channel1->CCR |= DMA_CCR1_EN; } void init_uart(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; RCC->APB2ENR |= RCC_APB2ENR_USART1EN; GPIOA->CRH &=~(GPIO_CRH_MODE9|GPIO_CRH_CNF9); GPIOA->CRH |= (GPIO_CRH_MODE9_1|GPIO_CRH_CNF9_1); USART1->BRR = 0x0D0;//0x9C4; // 9600Бит/с USART1->CR1 |= USART_CR1_TE; // Включение передатчика USART1 USART1->CR1 |= USART_CR1_RE; // Включение приемника USART1 USART1->CR1 |= USART_CR1_RXNEIE; USART1->CR1 |= USART_CR1_UE; NVIC_EnableIRQ(USART1_IRQn); } void USART1_Send(char chr) { while (!(USART1->SR& USART_SR_TC)); USART1->DR = chr; } int main(void) { init_uart(); AdcInit(); int_tim3(); init_dma_adc(); while(1) { } } void ADC1_IRQHandler(void) { DMA1_Channel1->CCR &=~ DMA_CCR1_EN; for (i=0; i != N;i++){ adc_res=adc_temp; USART1_Send((adc_res) & 0xFF); USART1_Send((adc_res >> 8) & 0x0F); } DMA1_Channel1->CNDTR = 10; DMA1_Channel1->CCR |= DMA_CCR1_EN; }
  7. первая строчка передается 8 младших битов, вторая 4 старших
  8. у меня нет Осциллографа, как частоту определить. на 100Гц, 200Гц, 300Гц такие получил
  9. синусоид 440Гц с телефона. С постоянным напряжением проверил, все правильно.
  10. Всё проверил, все правильно и получил как на картине. Знаете как фильтровать с помощью цифрового фильтров
  11. C5 убрал, результат не изменился. На ДМА не смог разобраться.
  12. если выход схемы не на АЦП подает, а прямо на компютер получили синусоид на программе Audacity. C5- разделительный конденсатор Комп нормально получил, не знаю почему отладчик не правильно показал.
×
×
  • Create New...