LAT1470
Local Application Tips
LAT1470 Rev 1.0 Jan. 2025
SPI 传输长度超过 1024 时出现异常的问题分
关键字:stm32u5 SPI
1. 背景
某客户在使用 STM32U595QII6Q 开发产品时发现,使用该芯片的 SPI3 与对方通信时,
如果发送的数据超过 1024 字节时,SPI3 作为主设备,使用 HAL 库的 SPI 相关发送函数,发
送完成回调函数不会执行。
2. 问题复盘
鉴于没有 STM32U595QII6Q 对应的开发板,于是使用 NUCLEO-U575ZI-Q 复现问题。
2.1. 复盘
2.1.1. 运行例程
客户在项目里还涉及了 LPDMA 外设,于是选择 en.stm32cubeu5-v1-6-
0\STM32Cube_FW_U5_V1.6.0\Projects\NUCLEO-U575ZI-
Q\Examples\SPI\SPI_FullDuplex_ComDMA_LowPower_Master
运行发现结果正常。
2.1.2. 修改数据长度
首先将长度修改为(512<<0),数据内容填充为 0xa5,测试发现一切正常。然后将长度修改
(512<<1),发现的 HAL_SPI_TxRxCpltCallback 未被执行。注意,此时 SPI3 工作
duplex mode
2.1.3. 最小化系统
利用 stm32cubeMX 配置了一个工程,SPI3 工作在 half-duplex mode。测试结果与
上面的类似。
LAT1470
LAT1470 - Rev 1.0 page 2/7
3. 分析
检查正常时(数据长度 512),SPI3 状态寄存器的值,如图所示:
此时 CR2 寄存器值 TSIZE 0x200
检查正常时(数据长度 1024 时),SPI3 状态寄存器的值,如图所示
此时 CR2 寄存器值 TSIZE 0x0000
检查 RM0456 rev 5.0 SPI 章节,