|
stm32u575 gpdma burst length配置为8 定时器update触发fmc操作外部adc芯片ads8588不成功,根本不触发,burst length配置为1能触发但是单次触发 跪求大神指点,感激涕零!我需要burst功能一次timeupdate 触发8次dma操作搬运8路adc数据到内存,谢谢! 配置及其代码如下: __HAL_RCC_TIM3_CLK_ENABLE(); /* TIM3 DMA Init */ /* GPDMA1_REQUEST_TIM3_UP Init */ handle_GPDMA1_Channel13.Instance = GPDMA1_Channel13; handle_GPDMA1_Channel13.Init.Request = GPDMA1_REQUEST_TIM3_UP; handle_GPDMA1_Channel13.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST; handle_GPDMA1_Channel13.Init.Direction = DMA_PERIPH_TO_MEMORY; handle_GPDMA1_Channel13.Init.SrcInc = DMA_SINC_FIXED; handle_GPDMA1_Channel13.Init.DestInc = DMA_DINC_INCREMENTED; handle_GPDMA1_Channel13.Init.SrcDataWidth = DMA_SRC_DATAWIDTH_HALFWORD; handle_GPDMA1_Channel13.Init.DestDataWidth = DMA_DEST_DATAWIDTH_HALFWORD; handle_GPDMA1_Channel13.Init.Priority = DMA_LOW_PRIORITY_HIGH_WEIGHT; handle_GPDMA1_Channel13.Init.SrcBurstLength = 8; handle_GPDMA1_Channel13.Init.DestBurstLength = 8; handle_GPDMA1_Channel13.Init.TransferAllocatedPort = DMA_SRC_ALLOCATED_PORT0|DMA_DEST_ALLOCATED_PORT0; handle_GPDMA1_Channel13.Init.TransferEventMode = DMA_TCEM_BLOCK_TRANSFER; handle_GPDMA1_Channel13.Init.Mode = DMA_NORMAL; if (HAL_DMA_Init(&handle_GPDMA1_Channel13) != HAL_OK) { Error_Handler(); } __HAL_LINKDMA(htim_base, hdma[TIM_DMA_ID_UPDATE], handle_GPDMA1_Channel13); if (HAL_DMA_ConfigChannelAttributes(&handle_GPDMA1_Channel13, DMA_CHANNEL_NPRIV) != HAL_OK) { Error_Handler(); } /* TIM3 interrupt Init */ HAL_NVIC_SetPriority(TIM3_IRQn, 3, 0); HAL_NVIC_EnableIRQ(TIM3_IRQn); void start_ads8588s_convert222(void) { //1、开启pwm convert 开始转换 __HAL_RCC_GPDMA1_CLK_ENABLE(); //HAL_TIM_Base_MspDeInit(&htim3); tim3_reinit(); pwm_OutPut(); //PWM输出映射到io HAL_TIM_Base_Start_IT(&htim3); if (HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4) != HAL_OK) { Error_Handler(); } HAL_Delay(2); //2、使能DMA传输 __HAL_DMA_ENABLE_IT(&handle_GPDMA1_Channel13, DMA_IT_TC); __HAL_DMA_DISABLE_IT(&handle_GPDMA1_Channel13,DMA_IT_HT); /* 使能定时器中断 */ __HAL_TIM_ENABLE_DMA(&htim3, TIM_DMA_UPDATE); __HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE); //3、开始采集数据 操作FMC总线 HAL_DMA_Start_IT(&handle_GPDMA1_Channel13, (u32)Bank1_BASE1, (u32)g_adcBuf, ADC_BUFSIZE); } 上图的SrcBurstLength改为1 DestBurstLenth改为1 能单次触发 一但改为其他不行 谢谢 |
stm32u5g9j-dk1, 设置zten1,之后关闭变砖
STM32u575 USART 用GPDMA接收,DMA中断,usart 中断正常来,ROR数据正确,接收缓冲却不变
STM32u575 USART 用GPDMA接收,DMA中断,usart 中断正常来,ROR数据正确,接收缓冲却不变
请教STM32F103的DMA空闲接收问题
stm32h7 定时器输出比较模式+dma,生成脉冲异常
STM32U575低功耗问题
STM32CubeMX配置STM32F103C8T6 RTC分频器问题
STM32H725VGT3内存不足问题
STM32G473,PA3导致定时器定时误差过大
STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
微信公众号
手机版
如果是FMC接口的话,那么源地址应该是多个的吧,不应该是 “DMA_SINC_FIXED”