سلام و خسته نباشید خدمت دوستان و اساتید که بی دریغ راهنمایی میکنند.
من 4 کانال adc رو میخام بخونم که بدون DMA و با سرعت پایین مجزا میخونم ولی وقتی از DMA استفاده میکنم 4 تا عدد خوانده شده فقط کانال یک هست
نمونه برنامه بدون استفاده از DMA
دلیل: ادغام دو پست برای جلوگیری از اسپم
[IMG]D:/HAlp.jpg[/IMG]
دلیل: ادغام دو پست برای جلوگیری از اسپم
چکار کنم 4 تا ADC رو با سرعت بالا بخونم ؟؟ DMA سرعت خوبی داره ولی یک کانال رو بیشتر نمیخونه -دوستان راهنمایی میخام
من 4 کانال adc رو میخام بخونم که بدون DMA و با سرعت پایین مجزا میخونم ولی وقتی از DMA استفاده میکنم 4 تا عدد خوانده شده فقط کانال یک هست
نمونه برنامه بدون استفاده از DMA
uint16_t R,W1,W2,W3,W4;
HAL_ADCEx_InjectedStart(&hadc1);
HAL_ADC_PollForConversion(&hadc1,10);
W1=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_1);
W2=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_2);
W3=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_3);
W4=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_4);
HAL_ADCEx_InjectedStop(&hadc1);
نمونه برنامه با DMA که 4 تا w فقط کانال 1 رو میخونن و مشکل دارم (کانالهای من 1و2و3و4 هستن ) HAL_ADCEx_InjectedStart(&hadc1);
HAL_ADC_PollForConversion(&hadc1,10);
W1=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_1);
W2=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_2);
W3=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_3);
W4=HAL_ADCEx_InjectedGetValue(&hadc1,ADC_INJECTED_ RANK_4);
HAL_ADCEx_InjectedStop(&hadc1);
uint16_t M[4];
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){W1=M[0];W2=M[1];W3=M[2];W4=M[3];}
[IMG]D:/HAlp.jpg[/IMG]
static void MX_DMA_Init(void) {
__HAL_RCC_DMA1_CLK_ENABLE();
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);}
[IMG]D:/HAlp.jpg[/IMG]
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){W1=M[0];W2=M[1];W3=M[2];W4=M[3];}
[IMG]D:/HAlp.jpg[/IMG]
static void MX_DMA_Init(void) {
__HAL_RCC_DMA1_CLK_ENABLE();
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);}
[IMG]D:/HAlp.jpg[/IMG]
دلیل: ادغام دو پست برای جلوگیری از اسپم
[IMG]D:/HAlp.jpg[/IMG]
دلیل: ادغام دو پست برای جلوگیری از اسپم
چکار کنم 4 تا ADC رو با سرعت بالا بخونم ؟؟ DMA سرعت خوبی داره ولی یک کانال رو بیشتر نمیخونه -دوستان راهنمایی میخام
دیدگاه