Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.sci.electronics > #193089
| From | Michael S <michaely@bigfoot.de> |
|---|---|
| Newsgroups | de.sci.electronics |
| Subject | STM32 Hal-Driver ADC-DMA Interrupt |
| Date | 2015-09-29 10:07 +0200 |
| Message-ID | <d6uv5vF54qaU1@mid.individual.net> (permalink) |
Hi,
ich habe hier ein STM32-Projekt, bei dem ein Timer zyklisch eine
ADC-Sequenz auslöst. Die Ergebnisse der 4 Kanäle sollen per DMA ins RAM
geschrieben werden. Ich arbeite außerdem mit CubeMX.
Im DMA-Interrupt sollen die Daten dann weiter verarbeitet werden.
Der DMA-Interrupt sieht derzeit so aus:
void DMA2_Stream0_IRQHandler(void)
{
/* USER CODE BEGIN DMA2_Stream0_IRQn 0 */
HAL_GPIO_WritePin(DBG5_GPIO_PORT, DBG5_GPIO_PIN, 1);
HAL_ADC_Stop_DMA(&hadc1);
__HAL_DMA_CLEAR_FLAG(&hdma_adc1,
__HAL_DMA_GET_TC_FLAG_INDEX(&hdma_adc1));
RegulatorTask(GROUP_CD);
/* USER CODE END DMA2_Stream0_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_adc1);
/* USER CODE BEGIN DMA2_Stream0_IRQn 1 */
// Starte neue Messung
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADC1_DMA_Data, 4);
//deaktiviere Half Transfer Interrupt
//(Treiber aktiviert den grundsätzlich)
__HAL_DMA_DISABLE_IT(&hdma_adc1, DMA_IT_HT);
//lösche das Half Transfer Interrupt-Flag
__HAL_DMA_CLEAR_FLAG(&hdma_adc1,
__HAL_DMA_GET_HT_FLAG_INDEX(&hdma_adc1));
HAL_GPIO_WritePin(DBG5_GPIO_PORT, DBG5_GPIO_PIN, 0);
/* USER CODE END DMA2_Stream0_IRQn 1 */
}
Nun habe ich das Problem, dass immer ein Half-Transfer und ein
Transfer-Complete Interrupt ausgelöst wird. Den Half-Transfer-Interrupt
benötige ich nicht und könnte ihn deshalb deaktivieren.
Leider sieht der HAL-Treiber das nicht vor. In der Funktion
HAL_DMA_Start_IT() werden grundsätzlich alle 5 DMA-Interrupts aktiviert.
Diese Funktion wird wiederum vom oben verwendeten HAL_ADC_Start_DMA()
aufgerufen.
Muss ich nun am Treiber vorbeiprogrammieren, um das zu ändern?
Ich könnte den Treiber ändern, jedoch führt jede Änderung im CubeMX
dazu, dass der Treiber wieder auf den Originalstand gebracht wird.
--
Michael
Back to de.sci.electronics | Previous | Next | Find similar | Unroll thread
STM32 Hal-Driver ADC-DMA Interrupt Michael S <michaely@bigfoot.de> - 2015-09-29 10:07 +0200
csiph-web