完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
__HAL_RCC_DMA1_CLK_ENABLE();
__HAL_RCC_DMAMUX1_CLK_ENABLE(); /*##-3- Configure the DMA ##################################################*/ /* Configure the DMA handler for Transmission process (DMA的发送通道)*/ hdma_tx.Instance = DMA1_Channel5; //DMA1_Channel3 hdma_tx.Init.Request = DMA_REQUEST_GENERATOR0; // DMA_REQUEST_SPI2_TX hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; //内存到外设 hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_tx.Init.MemInc = DMA_MINC_ENABLE; //DMA_MINC_ENABLE DMA_MINC_DISABLE hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; //DMA_PDATAALIGN_WORD DMA_PDATAALIGN_BYTE hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; // DMA_MDATAALIGN_BYTE DMA_MDATAALIGN_WORD hdma_tx.Init.Mode = DMA_CIRCULAR; //由 DMA_NORMAL 改为循环发送 DMA_CIRCULAR hdma_tx.Init.Priority = DMA_PRIORITY_HIGH; HAL_DMA_Init( hdma_tx); /* Associate the initialized DMA handle to the the SPI handle */ __HAL_LINKDMA( ads1298_hspi, hdmatx, hdma_tx); /* Register Error Callback */ HAL_DMA_RegisterCallback( hdma_tx, HAL_DMA_XFER_ERROR_CB_ID, HAL_TransferError); /* NVIC configuration for DMA transfer complete interrupt*/ HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 3, 0); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); /*##-3- Configure and enable the DMAMUX Request generator ####################(配置和使能DMAMUX请求生成器)*/ dmamux_ReqGenParams.SignalID = HAL_DMAMUX1_REQUEST_GEN_EXTI8; /* External request signal is EXTI0 signal HAL_DMAMUX1_REQ_GEN_EXTI8*/ dmamux_ReqGenParams.Polarity = HAL_DMAMUX_REQUEST_GEN_FALLING; /* External request signal edge is Rising */ dmamux_ReqGenParams.RequestNumber = 27; /* 1 requests on each edge of the external request signal 27*/ HAL_DMAEx_ConfigMuxRequestGenerator(ads1298_hspi.hdmatx, dmamux_ReqGenParams); /* NVIC configuration for DMAMUX request generator overrun errors*/ HAL_NVIC_SetPriority(DMAMUX1_OVR_IRQn, 4, 0); HAL_NVIC_EnableIRQ(DMAMUX1_OVR_IRQn); HAL_DMAEx_EnableMuxRequestGenerator (ads1298_hspi.hdmatx); HAL_SPI_Transmit_DMA( ads1298_hspi, adTxBuffer, 27); 代码如上,要配置的功能是DMAMUX检测到PF8的下降沿,就通过通过DMA1的DMA1_Channel5向SPI2->DR发送27个0xAA,实测发现: dmamux_ReqGenParams.RequestNumber在的 值[1,5]范围内时,每次中断触发时,DMA1_Channel5能够发送[1,5]个数,但在[6,32]范围内时,发送的个数就不够了,严重丢数。查了下库的寄存器配置,没有问题。现在不知道是自己调用的不对,还是其他问题?各位大神路过的帮看看!谢谢 |
|
相关推荐
1个回答
|
|
你要传送的 adTxBuffer 跟 dmamux_ReqGenParams 不是一致的吧。
换言之,你的adTxBuffer 是否被其他的程序更该? 再者,你用的是SPI的 DMA 传送。检查 SPI 设置。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1851 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1647 浏览 1 评论
1122 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
746 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1704 浏览 2 评论
1959浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
768浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
597浏览 3评论
618浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
578浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-5 10:08 , Processed in 0.796661 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号