pingfr 发表于 2023-8-23 10:13:45

SPI读取出错--STC32G

用STC32G128K的SPI接口读取一个信号处理芯片的数据,可能是该信号处理芯片有点bug,最后一位时间不够,位结束只比脉冲上升沿多20ns,用逻辑分析仪看数据是正确的,但STC32G读出来的最后一位总是判断为高电平,请教大家这是怎么回事?

pingfr 发表于 2023-8-23 10:19:06

MCU时钟是24MHz,SPI配置是2分频或者4分频,CPOL配置是上升沿有效,这最后一位为0时总是错误读取为1,为1时当然也读取为1,MCU靠SCLK的上升沿获取数据,20ns宽度应该也足够了啊

pingfr 发表于 2023-8-23 10:50:00

本帖最后由 pingfr 于 2023-8-23 11:43 编辑

计算了一下,时序是比较紧张,MCU是24M的时钟,换算下来一个周期大约40ns,可能无法对最后一位20ns延迟做出响应,也就是每次读都错过了这个低电平脉冲,不知道SPI改成高速模式能不能解决这个问题

pingfr 发表于 2023-8-23 12:09:42

pingfr 发表于 2023-8-23 10:50
计算了一下,时序是比较紧张,MCU是24M的时钟,换算下来一个周期大约40ns,可能无法对最后一位20ns延迟做出 ...

这样想也不对,因为SCLK是MCU输出的,上升沿是落在低电平上的,为啥MCU采出来是高电平呢,如果是因为SPI输入时钟周期太大导致SCLK上升沿落在了低电平之外,那采出来1没得说,现在看起来还不是这个问题。看来还要用示波器看看这个脉冲的信号质量,是不是脉冲边缘不够陡峭导致MCU采样错误的

pingfr 发表于 2023-8-25 09:54:07

将SPI调整成96M高速模式后问题解决,应该还是时序紧张的问题
页: [1]
查看完整版本: SPI读取出错--STC32G