搜索
bottom↓
回复: 24

SPI 总线通信不正常,接示波器就好了,真神奇啥原因呢

[复制链接]

出0入85汤圆

发表于 2022-12-18 14:01:47 | 显示全部楼层 |阅读模式
半路出家的新手,搞了个一主多从的SPI通信电路板,  之前一版没有发现问题,这一版改了布线之后,部分的SPI从机通信不正常,校验和不对。从数据来看存在移位,估计是传输过程中丢了位。
于是,接上原子哥的示波器,看看 CLK 的波形是不是哪不对。  神奇的现象出现了,接上示波器,传输就正常了,试了很久都可以,松开探针就立马持续报错。
并且试了三种情况:

1. 不接示波器,手拿导线触碰 CLK 也正常了。  
2.  CLK 焊上飞线用的漆包线, 连着一卷漆包线,也正常了。 剪断漆包线,就不行。
3.  CLK 飞线接到一个100K电阻,下拉到地, 也正常了。

对模电不懂,这会是啥原因呢,布线上下层存在锐角?





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出280入168汤圆

发表于 2022-12-18 14:04:45 | 显示全部楼层
PCB  上地线没接或接触不良 ...

出330入1925汤圆

发表于 2022-12-18 14:10:32 | 显示全部楼层
时钟上下沿没弄反吧

出0入442汤圆

发表于 2022-12-18 14:24:13 来自手机 | 显示全部楼层
本帖最后由 wye11083 于 2022-12-18 14:26 编辑

10mhz的spi,串扰很大的。我用6根电线拧一起,走2mhz就跪了。

板子clk没有分割,看不同有没有对clk全面包地,没有串电阻减少反射。试试在clk分支后面每路串个22?33?的小电阻看看,不行给其它信号也在分支处每路串个电阻(不用管主从,这里就是吸反射),因为反射信号可能造成假clk触发。你串个示波器相当于增加了10pf左右的电容,吸收了一部分反射(或者可能影响了反射系数)。

这种干扰其实是最难定位的,我遇到过很多次各种各样的。甚至在一套设备里面,因为极强的噪声干扰(emi做的太烂),i2c最后用了1k强上拉+10nf电容,降频到10khz同时使用push-pull驱动,才勉强能正常工作。

出0入85汤圆

 楼主| 发表于 2022-12-18 15:03:38 来自手机 | 显示全部楼层
wye11083 发表于 2022-12-18 14:24
10mhz的spi,串扰很大的。我用6根电线拧一起,走2mhz就跪了。

板子clk没有分割,看不同有没有对clk全面包 ...

(引用自4楼)

感觉应该就是你说的反射导致的。
第一次遇到,涨见识了

出100入0汤圆

发表于 2022-12-18 15:38:01 来自手机 | 显示全部楼层
调2.4G无线模块时也出现了类似问题,手摸或者示波器挂上去测量(我记得是测DATA引脚 而不是CLK引脚)时通讯就正常,拿开就不行。
这个问题暂时还没解决,但是后来把无线发送功率调低结果SPI通讯就好了,无线收发也都正常,只是降低功率牺牲了无线距离
打算研究一下这个bug,改板重新测试

出0入16汤圆

发表于 2022-12-18 15:50:43 | 显示全部楼层
我早前调试一款国产芯片时的偶然发现,使能CLK端口的内部上拉电阻或外挂上拉电阻就好了。楼主可以试下看看是否可行

出0入85汤圆

 楼主| 发表于 2022-12-18 16:24:05 | 显示全部楼层
Elex 发表于 2022-12-18 15:50
我早前调试一款国产芯片时的偶然发现,使能CLK端口的内部上拉电阻或外挂上拉电阻就好了。楼主可以试下看看 ...
(引用自7楼)

对,我本也打算这么干,但是芯片是GD32F103,我看GD手册上写着SPI的输入端口需要设置为浮空输入,另外有16个从,全部上拉的话, (40/16)K的上拉电阻,估计扛不住。

于是就打算飞线试试, 上拉没找到合适的地方,试了一下下拉电阻,问题解决了。   百度了一下楼上说的反射问题, 感觉能对上,估计就是这个问题了。

而且很神奇的是,下拉一个从机,附近的从机也正常了。远一点的不行, 间隔着几个从机下拉CLK,就都可以了。


出0入16汤圆

发表于 2022-12-18 16:29:18 | 显示全部楼层
zdg102 发表于 2022-12-18 16:24
对,我本也打算这么干,但是芯片是GD32F103,我看GD手册上写着SPI的输入端口需要设置为浮空输入,另外有1 ...
(引用自8楼)


芯片手册和例程都是端口不要上下拉的,但不知是bug还是怎么回事,有时实际需要上拉才好,不然一些容易数据出错。所以不必完全按手册上来,用软件设置端口上下拉是可以的话,不用外接电阻。从机可以不上下拉

出0入0汤圆

发表于 2022-12-18 22:02:44 | 显示全部楼层
片选时钟和数据都接上示波器,放一起看看吧,SPI时序模式是不是没配对

出10入12汤圆

发表于 2022-12-19 01:08:37 | 显示全部楼层
你并联一个几pF的电容也会好

出0入4汤圆

发表于 2022-12-19 08:03:03 | 显示全部楼层
是不是从机太多,SPI数据线上的电容不一致,导致上升下降沿不一致?你降低速率或者加缓冲器

出0入115汤圆

发表于 2022-12-19 08:46:54 | 显示全部楼层
zdg102 发表于 2022-12-18 15:03
感觉应该就是你说的反射导致的。
第一次遇到,涨见识了
(引用自5楼)

2Mhz 能反射个毛 检查下代码 电路的话检查下干扰什么的

出0入135汤圆

发表于 2022-12-19 08:51:16 来自手机 | 显示全部楼层
按我经验,50mhz以下的单端信号,只要拉通了问题就不大,什么spi刷屏,sdio读取,nor flash通信,都不需要什么等长包地之内的。差分或者高速的不在此列

出0入85汤圆

 楼主| 发表于 2022-12-19 08:52:06 | 显示全部楼层
Xujuango 发表于 2022-12-19 08:03
是不是从机太多,SPI数据线上的电容不一致,导致上升下降沿不一致?你降低速率或者加缓冲器 ...
(引用自12楼)

降低速率试过,不行,只是一定程度上降低了概率

出0入85汤圆

 楼主| 发表于 2022-12-19 08:53:46 | 显示全部楼层
yelong98 发表于 2022-12-19 08:51
按我经验,50mhz以下的单端信号,只要拉通了问题就不大,什么spi刷屏,sdio读取,nor flash通信,都不需要 ...
(引用自14楼)

我本来也是这么想的, 也就 10.5M ,  但确实想不到其他原因了。

出0入91汤圆

发表于 2022-12-19 09:04:56 | 显示全部楼层
本帖最后由 ackyee 于 2022-12-19 09:06 编辑

除了电路上调整,也可以试试 硬件SPI的 位偏移功能   挺好用

STM32和 ZYNQ好像都带这个功能,就是 控制第一个bit 时钟是高还是低的  太久之前用过不是很清楚了,但是确实应该有用

出0入85汤圆

 楼主| 发表于 2022-12-19 09:11:34 | 显示全部楼层
ackyee 发表于 2022-12-19 09:04
除了电路上调整,也可以试试 硬件SPI的 位偏移功能   挺好用

STM32和 ZYNQ好像都带这个功能,就是 控制第 ...
(引用自17楼)

这我知道,应该解决不了随机出现数据错误。

出0入91汤圆

发表于 2022-12-19 09:27:17 | 显示全部楼层
zdg102 发表于 2022-12-19 09:11
这我知道,应该解决不了随机出现数据错误。
(引用自18楼)

这个还真的能解决,   我有两个相同的板子 一个 接了CS 一个没接CS 没接CS的强制拉地的


结果 一个 加偏移不工作,  一个不加偏移不工作

出0入0汤圆

发表于 2022-12-23 17:41:45 | 显示全部楼层
再主机侧加上拉电阻。这样试试。

出1000入0汤圆

发表于 2022-12-23 18:11:25 来自手机 | 显示全部楼层
加示波器探头,等效于并10皮电容对地。

出0入4汤圆

发表于 2022-12-23 18:18:15 | 显示全部楼层
100k电阻并102或103电容接地

出0入0汤圆

发表于 2022-12-23 18:19:47 | 显示全部楼层
ackyee 发表于 2022-12-19 09:27
这个还真的能解决,   我有两个相同的板子 一个 接了CS 一个没接CS 没接CS的强制拉地的


(引用自19楼)

这是在胡闹吗?

出0入91汤圆

发表于 2022-12-23 22:11:59 | 显示全部楼层
本帖最后由 ackyee 于 2022-12-23 22:14 编辑
tuy0326 发表于 2022-12-23 18:19
这是在胡闹吗?
(引用自23楼)


不胡闹呀,  我用的SPI 屏幕  屏幕厂家推荐的demo设计就是CS接地的(中景园的屏幕,现在那款CS接地的屏幕还在卖 出货量很大)

只要 CLK信号不被干扰 就不会有任何问题,  之前做EMC CLK被干扰了 导致所有数据都偏移了, 后来对地接了个电容加了强上拉, 任凭快速脉冲群怎么打都不会有任何问题

出0入0汤圆

发表于 2022-12-27 23:38:29 来自手机 | 显示全部楼层
这个问题就是信号反射,在高速传输时大概率出现,温度变化时也会出现,解决办法是spi的clk和数据线上串一个10-100的电阻,对地加一个22-100p的电容。很早有产品遇到过,当时低温箱内,准备焊一根线出来测spi波形,打死都测不出来,去掉线立即复现。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-15 22:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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