找回密码
 立即注册
查看: 264|回复: 4

SPI读取出错--STC32G

[复制链接]

该用户从未签到

4

主题

12

回帖

63

积分

注册会员

积分
63
发表于 2023-8-23 10:13:45 | 显示全部楼层 |阅读模式
用STC32G128K的SPI接口读取一个信号处理芯片的数据,可能是该信号处理芯片有点bug,最后一位时间不够,位结束只比脉冲上升沿多20ns,用逻辑分析仪看数据是正确的,但STC32G读出来的最后一位总是判断为高电平,请教大家这是怎么回事?

SCLK大约6.25MHz

SCLK大约6.25MHz

这是最后读错的位,逻辑分析仪能读出是0x02,但MCU读出的是0x03,虽然最后一位时间宽度不是那么充足,但也 ...

这是最后读错的位,逻辑分析仪能读出是0x02,但MCU读出的是0x03,虽然最后一位时间宽度不是那么充足,但也 ...
回复 送花

使用道具 举报

该用户从未签到

4

主题

12

回帖

63

积分

注册会员

积分
63
 楼主| 发表于 2023-8-23 10:19:06 | 显示全部楼层
MCU时钟是24MHz,SPI配置是2分频或者4分频,CPOL配置是上升沿有效,这最后一位为0时总是错误读取为1,为1时当然也读取为1,MCU靠SCLK的上升沿获取数据,20ns宽度应该也足够了啊
回复 支持 反对 送花

使用道具 举报

该用户从未签到

4

主题

12

回帖

63

积分

注册会员

积分
63
 楼主| 发表于 2023-8-23 10:50:00 | 显示全部楼层
本帖最后由 pingfr 于 2023-8-23 11:43 编辑

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

使用道具 举报

该用户从未签到

4

主题

12

回帖

63

积分

注册会员

积分
63
 楼主| 发表于 2023-8-23 12:09:42 | 显示全部楼层
pingfr 发表于 2023-8-23 10:50
计算了一下,时序是比较紧张,MCU是24M的时钟,换算下来一个周期大约40ns,可能无法对最后一位20ns延迟做出 ...

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

使用道具 举报

该用户从未签到

4

主题

12

回帖

63

积分

注册会员

积分
63
 楼主| 发表于 2023-8-25 09:54:07 | 显示全部楼层
将SPI调整成96M高速模式后问题解决,应该还是时序紧张的问题
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-18 07:18 , Processed in 0.060140 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表