Wordsworth 发表于 2025-5-3 07:20

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

主机发得快一点就响应不过来,是不是中断进不去还是别的啥问题?

Clyde011 发表于 2025-5-3 07:24

建议加个状态位判断数据准备好没。

公羊子丹 发表于 2025-5-3 07:25

从机要提前准备好数据,不然主机读到是旧的。

周半梅 发表于 2025-5-3 07:26

是不是用中断响应太慢了?

帛灿灿 发表于 2025-5-3 07:26

SPI从机加DMA好很多。

童雨竹 发表于 2025-5-3 07:27

我用定时器预载缓冲区解决过。

万图 发表于 2025-5-3 07:28

有没有考虑降低SPI时钟?

Wordsworth 发表于 2025-5-3 07:29

主机是不是不给预备时间?

Bblythe 发表于 2025-5-3 07:30

SPI模式对齐了吗?

Pulitzer 发表于 2025-5-3 07:30

看看CPOL/CPHA是不是一样?

Uriah 发表于 2025-5-3 07:32

有些平台必须手动拉CS低才行。

一秒落纱 发表于 2025-5-14 19:50

PI时钟速率与CPU处理能力不匹配:STM32F0的SPI从机需在每个时钟周期内完成数据读取、处理和发送。若主机时钟速率(SPI_BRR)超过从机CPU处理能力(如72MHz主频下SPI时钟>18MHz),会导致数据丢失。

暖了夏天蓝了海 发表于 2025-5-14 21:00

仅在中断中完成数据读取/写入寄存器操作,复杂逻辑移至主循环或任务中处理

淡漠安然 发表于 2025-5-14 23:00

在NVIC_InitTypeDef中配置SPI中断为最高抢占优先级(如优先级组2下抢占优先级设为0),确保其他中断不抢占SPI中断。

江河千里 发表于 2025-5-15 01:06

降低SPI时钟速率:通过SPI_InitTypeDef调整SPI时钟分频系数,确保从机有足够时间处理数据

别乱了阵脚 发表于 2025-5-15 01:11

中断服务函数耗时过长,SPI中断服务函数中存在复杂逻辑(如数据校验、存储操作),占用CPU时间过长

远山寻你 发表于 2025-5-15 05:39

SPI从机需正确配置时钟极性(CPOL)、相位(CPHA)、数据位宽(8/16位)等参数,否则可能导致时序错乱。

夜阑风雨 发表于 2025-5-15 07:13

主机NSS信号(片选)需保持足够时间(至少覆盖数据传输周期),若NSS过早释放,从机可能未完成数据接收

冰春彩落下 发表于 2025-5-15 09:21

STM32F0的SPI从机通过NSS(片选)下降沿触发中断,并在每个时钟边沿(根据时钟极性/相位)接收或发送数据。若主机发送速率过高,从机可能因中断优先级被抢占:其他高优先级中断(如USART、TIM)频繁触发,导致SPI中断被延迟

三生万物 发表于 2025-5-15 09:32

若采用纯中断方式处理SPI数据,CPU需在每个字节传输时进入中断,效率低下
页: [1]
查看完整版本: SPI做从机数据老是来不及应答?