|
在while中一直使用HAL_SPI_TransmitReceive_DMA发送接收数据,循环几次后就会一直为HAL_BUSY状态,查看SPI状态结构体可看到State始终为HAL_SPI_STATE_BUSY_TX_RX状态。
通过查看HAL库,可以找到State在HAL_SPI_IRQHandler中可被设置为READY状态。但实际使用时,会有中断函数不触发的情况出现,因此State始终为HAL_SPI_STATE_BUSY_TX_RX状态,导致HAL_SPI_TransmitReceive_DMA无法正常运行,我不知道是不是哪里设置不对还是其他问题导致的。 这是STM32Cube的中断设置
|
STM32H5入门级DEMO板,NUCLEO-H503RB(Flash 128K,LQFP64封装)-ST中文论坛首帖
STM32H523CEU6的Pin41和Pin42能否作为USART6使用?
STM32H5 I3C CCC通信广播地址 SCL 波形脉宽问题
stm32H503CBT6 ADC在某次上电后波动变大了一些。
STM32H503RB I3C通信中,IBI payload data,主机最多能接收几个字节?如果超过4 bytes,主机该如何接收?
STM32H503RB I3C通信中,主机如何通过SETAASA CCC方式使从机进入i3c模式?
硬件加速PKA模块支不支持输入国密SM2签名算法的参数?
STM32H563ZI OTA源码
STM32H533的IIC的问题
我想使用 STM32H5系列 进行 硬件I3C 读取
微信公众号
手机版
我这边测试,当时钟频率高的时候,如果IO 速度设置过低会导致 SPI的完成中断没触发。
且波形已经变形了,应该超出了范围。
可以试着检查一下IO 速度或降低一下时钟频率试试。
时钟频率我已经拉到3.9MBits左右了 在主频250Mhz下做了64分频 依然会出现
看一下时钟波形是否正常。
我这边验证时,发现输出波形不正常,就无法触发完成中断。
可以将clock继续降低到几百k,验证一下。
查看波形是正常的 此为中断不触发前最后一个发送的sclk
这是整个的,20s前时刻上电启动,25s后左右由于中断不触发,标志位不置位,停止发波
最好找个示波器看一下具体波形的样子。
我又深度测试了一下,发现一个明显的对比,我在mxcube初始化了lpuart1,uart4,uart5三个串口,但是我没有使用它们,只是初始化,如果我将三个串口的初始化屏蔽掉,中断触发就是正常的,我打开任意一个串口,都会出现中断不触发,而且初始化越多串口,出现屏蔽不触发的时候越早
附件是我测试的代码,当然SPI1是悬空的,可以在你的板上试试看。
TEST SPIDMA ready signal.7z
2025-7-1 14:53 上传
点击文件名下载附件
下载积分: ST金币 -17.96 MB, 下载次数: 4, 下载积分: ST金币 -1
多谢,不过方便帮我导出一个Keil的工程吗,我没有EWARM,我打开IOC发现咱们的IOC版本不一致,我想用你的IOC版本生成的工程来测试
可以用HAL_SPI_Transmit+HAL_SPI_Receive重写写一下收发逻辑试试
没用 我测试了只用HAL_SPI_Transmit_DMA/IT 一样不触发中断
Core.zip
2025-7-3 10:44 上传
点击文件名下载附件
下载积分: ST金币 -17.7 MB, 下载次数: 4, 下载积分: ST金币 -1