ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
775254
vasily777 (20.08.2017 07:31 - 07:34, просмотров: 2620) MBedder
STM8L051 ADC ( 1 канал PB1) + DMA, не получается запустить. Или может кто рабочим поделится? uint16_t result; uint16_t recv_array[32]; GPIO_Init(GPIOB, GPIO_Pin_1, GPIO_Mode_In_FL_No_IT);//ain17 RI->ASCR1=RI_ASCR1_AS5; RI->IOSR3=RI_IOSR2_CH5E; // Adjust system clock prescaler CLK->CKDIVR = 0; // no system clock prescaler (16 MHz) // Configure DMA CLK->PCKENR2 |= CLK_PCKENR2_DMA1; //Тактирование DMA1_Channel0->CPARH = (ADC1_BASE+4)>>8; //Адрес регистра АЦП (старший байт) DMA1_Channel0->CPARL = (uint8_t)(ADC1_BASE+4); //Младший DMA1_Channel0->CM0ARH = (uint8_t)((uint16_t)(recv_array)>>8); //Адрес буфера DMA1_Channel0->CM0ARL = (uint8_t)(recv_array); DMA1_Channel0->CNBTR = sizeof(recv_array)/2;//-1; //Размер буфера (in WORDS) DMA1_Channel0->CSPR = DMA_CSPR_16BM | DMA_CSPR_PL; //Режим работы с 16и битными числами. | HighPriority DMA1_Channel0->CCR = DMA_CCR_CE | DMA_CCR_TCIE | DMA_CCR_IDM | DMA_CCR_ARM; //Включаем канал и разрешаем прерывание | increment | AutoReload SYSCFG->RMPCR1 = 0x0C; DMA1->GCSR |= DMA_GCSR_GE; //Включаем DMA // Coinfigure ADC CLK->PCKENR2 |= CLK_PCKENR2_ADC1; //Тактирование ADC1->CR1 |= ADC_CR1_ADON | ADC_CR1_CONT;// | ADC_CR1_OVERIE;//| ADC_CR1_EOCIE; //Пинаем АЦП, чтобы он проснулся + Continious ADC1->CR2 |= ADC_CR2_PRESC | (uint8_t)0x07; // 02; // low speed | 16 cycles per samle period ADC1->CR3 |= (uint8_t)0x07<<5; // 16 cycles per samle period ADC1->TRIGR[0] = 0x00; ADC1->TRIGR[2] = 0x02; ADC1->TRIGR[3] = 0x00; ADC1->SQR[0] = 0x00; ADC1->SQR[1] = 0x00; ADC1->SQR[2] = 0x02; //Measure ext channel 17 ADC1->SQR[3] |= 0x00; // Enable interrupts asm("RIM"); ADC1->CR1 |= ADC_CR1_START; //Поехали! // Adjust system clock prescaler После запуска значения в буфере 4092-4095. Хотя на ноге PB1 0,2-0,8В. Питание 3,3В