打印
[STM32F0]

SPI做从机数据老是来不及应答?

[复制链接]
586|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wordsworth|  楼主 | 2025-5-3 07:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主机发得快一点就响应不过来,是不是中断进不去还是别的啥问题?

使用特权

评论回复
沙发
Clyde011| | 2025-5-3 07:24 | 只看该作者
建议加个状态位判断数据准备好没。

使用特权

评论回复
板凳
公羊子丹| | 2025-5-3 07:25 | 只看该作者
从机要提前准备好数据,不然主机读到是旧的。

使用特权

评论回复
地板
周半梅| | 2025-5-3 07:26 | 只看该作者
是不是用中断响应太慢了?

使用特权

评论回复
5
帛灿灿| | 2025-5-3 07:26 | 只看该作者
SPI从机加DMA好很多。

使用特权

评论回复
6
童雨竹| | 2025-5-3 07:27 | 只看该作者
我用定时器预载缓冲区解决过。

使用特权

评论回复
7
万图| | 2025-5-3 07:28 | 只看该作者
有没有考虑降低SPI时钟?

使用特权

评论回复
8
Wordsworth|  楼主 | 2025-5-3 07:29 | 只看该作者
主机是不是不给预备时间?

使用特权

评论回复
9
Bblythe| | 2025-5-3 07:30 | 只看该作者
SPI模式对齐了吗?

使用特权

评论回复
10
Pulitzer| | 2025-5-3 07:30 | 只看该作者
看看CPOL/CPHA是不是一样?

使用特权

评论回复
11
Uriah| | 2025-5-3 07:32 | 只看该作者
有些平台必须手动拉CS低才行。

使用特权

评论回复
12
一秒落纱| | 2025-5-14 19:50 | 只看该作者
PI时钟速率与CPU处理能力不匹配:STM32F0的SPI从机需在每个时钟周期内完成数据读取、处理和发送。若主机时钟速率(SPI_BRR)超过从机CPU处理能力(如72MHz主频下SPI时钟>18MHz),会导致数据丢失。

使用特权

评论回复
13
暖了夏天蓝了海| | 2025-5-14 21:00 | 只看该作者
仅在中断中完成数据读取/写入寄存器操作,复杂逻辑移至主循环或任务中处理

使用特权

评论回复
14
淡漠安然| | 2025-5-14 23:00 | 只看该作者
NVIC_InitTypeDef中配置SPI中断为最高抢占优先级(如优先级组2下抢占优先级设为0),确保其他中断不抢占SPI中断。

使用特权

评论回复
15
江河千里| | 2025-5-15 01:06 | 只看该作者
降低SPI时钟速率:通过SPI_InitTypeDef调整SPI时钟分频系数,确保从机有足够时间处理数据

使用特权

评论回复
16
别乱了阵脚| | 2025-5-15 01:11 | 只看该作者
中断服务函数耗时过长,SPI中断服务函数中存在复杂逻辑(如数据校验、存储操作),占用CPU时间过长

使用特权

评论回复
17
远山寻你| | 2025-5-15 05:39 | 只看该作者
SPI从机需正确配置时钟极性(CPOL)、相位(CPHA)、数据位宽(8/16位)等参数,否则可能导致时序错乱。

使用特权

评论回复
18
夜阑风雨| | 2025-5-15 07:13 | 只看该作者
主机NSS信号(片选)需保持足够时间(至少覆盖数据传输周期),若NSS过早释放,从机可能未完成数据接收

使用特权

评论回复
19
冰春彩落下| | 2025-5-15 09:21 | 只看该作者
STM32F0SPI从机通过NSS(片选)下降沿触发中断,并在每个时钟边沿(根据时钟极性/相位)接收或发送数据。若主机发送速率过高,从机可能因中断优先级被抢占:其他高优先级中断(如USARTTIM)频繁触发,导致SPI中断被延迟

使用特权

评论回复
20
三生万物| | 2025-5-15 09:32 | 只看该作者
若采用纯中断方式处理SPI数据,CPU需在每个字节传输时进入中断,效率低下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

4806

帖子

1

粉丝