• 资料介绍
  • 在线预览
  • 相关推荐
申请入驻 产业图谱

LAT1470 SPI传输长度超过1024时出现异常的问题分析

2025/03/06
525
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1470 SPI传输长度超过1024时出现异常的问题分析

830.25 KB

1、背景

某客户在使用 STM32U595QII6Q 开发产品时发现,使用该芯片的 SPI3 与对方通信时,如果发送的数据超过 1024 字节时,SPI3 作为主设备,使用 HAL 库的 SPI 相关发送函数,发送完成回调函数不会执行。

2、问题复盘

鉴于没有 STM32U595QII6Q 对应的开发板,于是使用 NUCLEO-U575ZI-Q 复现问题。

2.1. 复盘

2.1.1. 运行例程

客户在项目里还涉及了 LPDMA 外设,于是选择了 en.stm32cubeu5-v1-6-0STM32Cube_FW_U5_V1.6.0ProjectsNUCLEO-U575ZIQExamplesSPISPI_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。测试结果与上面的类似。

3、分析

检查正常时(数据长度为 512),SPI3 状态寄存器的值。

4、建议

对于 stm32u5 系列 mcu,如果 SPI3 都有此长度限制,建议将驱动代码修改如下:

if ((hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) &&

(hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCULAR))

{

MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL);

}

else

{

If( SPI3 == hspi->Instance && Size >= 1023)

{

status = HAL_ERROR;

}

else

{

MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size);

}

}

5、小结

客户在使用 stm32u575/u585/u595 系列 mcu SPI3 时,请注意传输数据长度,不能超过1024。

在线预览

相关推荐

意法半导体拥有49,000名半导体技术的创造者和创新者,掌握半导体供应链和先进的制造设备。作为一 家半导体垂直整合制造商(IDM),意法半导体与二十多万家客户、成千上万名合作伙伴一起研发产品和 解决方案,共同构建生态系统,帮助他们更好地应对各种挑战和新机遇,满足世界对可持续发展的更高需 求。意法半导体的技术让人们的出行更智能,让电源和能源管理更高效,让云连接的自主化设备应用更广 泛。我们正按计划在所有直接和间接排放(包括范围1和范围2)、产品运输、商务旅行以及员工通勤排 放(重点关注的范围3)方面实现碳中和,并在2027年底前实现100%使用可再生电力的目标。 详情请浏 览意法半导体公司网站:www.st.com.cn