/**
* @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
*/
提醒你两点供参考:
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)