STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
STM32U5系列上电时序
STM32H7A3RGT6 ADC 8位采样速度只能达到3.5MSPS达不到数据手册上的7MSPS ?
DMAMUX 使用内部外设Request Event(不使用TIM12和LPTIM)
STM32U585进入shutdown模式后偶发无法被唤醒引脚唤醒
CUBEMX配置G474串口DMA传输,为什么接收正常发送不了?
STM32N6跳线flash烧录座出现写入错误,该如何解决。
简单聊聊STM32的SPI外设
STM32N6 SPI无信号问题
DMA传输完成后,串口与DMA一直处于忙状态
微信公众号
手机版
提醒你两点供参考:
1、有无可能内存使用冲突方面的问题;或者堆栈溢出覆盖等方面问题;
2、DMA配置方面,尤其那个传输长度设置是否有问题。不知你现在的SPI传输选择的数据宽度
是多少位的,如果是16位或32位,对于STM32U5或STM32H5系列,使用GPDMA时,最终的传输
长度是你设置的总数据个数 再 乘以 数据宽度所对应的字节数。 打个比方:
假设你现在使用的SPI数据宽度为16位,即对应2个字节。另外假设你希望一轮DMA传输的数据个数为8096,
则最终对应到U5或H5系列的DMA传输的长度就是 8096*2。 注意这个值最终不能超过65535。
看看是不是发送数据有长度限制?好像一次最多是65536字节
这是代码,考虑过延时,但是无论延时多久都是图片的一部分
初步的解决方案是这样的,利用回调函数一半一半发,但是总觉得不妥
可以检查一下参数,尤其是长度是否正确
/**
* @brief Transmit an amount of data in non-blocking mode with DMA.
* @param hspi : pointer to a SPI_HandleTypeDef structure that contains
* the configuration information for SPI module.
* @param pData: pointer to data buffer
* @param Size : amount of data to be sent
* @retval HAL status
*/
HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size)