首页 > 版块 > RISC-V > 帖子正文

RISC-V鸿蒙系统开发板SPI通信模块调试2(项目连载5)

张角 发布于 2021-10-11 14:44
收藏 0 回复 0 浏览 143 原创


上篇文章中,我们提到了使用读取SPI Flash ID这个程序段,来测试SPI的通信是不是成功。

目前程序运行的结果,是无法正确读取Flash 芯片的ID的。那问题出现在哪里呢?如何去分析这个问题,或者说去尝试解决这个问题呢?

在进行波形分析之前,我们首先要做的就是查看一下芯片有没有虚焊,还有选用的SPI Flash芯片是不是我们需要的。

经过仔细比对,确认我们购买的W25Q128芯片,就是睿思芯科公司提供的例程所使用的芯片。那么在芯片的选型上应该没有问题。

那芯片有没有虚焊呢?这里总共涉及到3块芯片,一个是我们的单片机,一个1.8V3.3V的电平转换芯片,另外一个就是SPI Flash芯片。因为单片机引脚之间距离只有0.2mm,芯片重新焊接的难度太大。所以,我这边就重新把电平转换芯片和SPI Flash芯片吹下来,重新焊接了一次。确保电路的焊接是没有问题的。

芯片焊接的重新焊接的过程中,发生了一件非常可怕的事情,电平转化芯片TXB0104的焊盘被整体损坏掉了。如果不是有同事帮忙调试焊接,这块板子有可能就废掉了。

如果是个别焊盘损坏掉,还可以飞线进行操作,现在整排焊盘都掉了,该怎么办呢?

实际调试的过程中,对焊盘的修复,我们使用的办法是把损坏掉的焊盘附近的铜线上过油刮掉,使用裸露的铜线作为新“焊盘”进行焊接。然后,再使用非常细小的铜丝把芯片的引脚和板子上的铜线连接起来。如下所示,这个操作过程比较麻烦,需要有娴熟的焊接功底才行。

图片9.jpg

但是现在有一个重要的事情需要总结,为什么焊接的过程中,自己会把这个电平转换芯片的焊盘一整排全部搞掉?自己确实没有在给焊盘加锡的过程中,使用烙铁头去剐蹭焊接。最后的总结是,在给焊盘加锡的过程中,烙铁头的温度过高,同时由于烙铁头使用的时间太长了之后,氧化严重。上面两个因素导致了烙铁头上的锡非常粘稠,同时温度非常高。那么在加锡的过程中,很容易就会把焊盘带掉。而且因为是加锡的过程,会同时对很多焊盘进行操作,所以一掉就是一整排!!!

这块开发板,在实际焊接芯片引脚的过程中,我们设定的烙铁温度,高达450度,如下图所示。

图片10.jpg

我们为什么会使用到这么高温度的呢?主要是我们这个板子是四层板,TOP层和BOTTOM层之间的两层,进行了大量的敷铜。导致散热非常快。把烙铁头的温度调高,可以增加焊锡的流动性。如果按照平时300-350度左右的温度来焊板子,我们所熟悉的拖锡动作是没有办法实现的,锡一下子就凉掉了。

但是如果有芯片压在焊盘上,使用这么高的温度进行拖锡,并不会造成焊盘的脱落!

在这块,我们调试的经验就是,给电路板的焊盘进行加锡的过程中,一定不能把温度调节得太高,否则会造成一排焊盘脱落的人间悲剧!这种情况下,大概率,这块板子就废掉了。

上面也提到了,电平转换芯片TXB0104SPI Flash重新焊接之后,SPI通信依然没有成功。那说明大概率并不是芯片虚焊的问题。那个单片机的引脚,我们目前只能假设它的焊接是完全成功的(太难焊了,拆下重焊成本太高)。那么接下来,只能是先对波形详细分析了。

首先,我们需要做的就是去查看CLK这个引脚的波形,看看CLK的波形输出是不是合理的。SPI,需要在一定的频率范围内才能正常工作。如果频率太高的话,MOSIMISO这两个接口的波形,可能还没有达到芯片规定的“高”或者“低”,时钟沿就进行了下一次的跳变,这种情况下,很显然单片机和SPI Flash之间是无法进行通信的。

先给大家看一下,我这边第一次抓到的CLK引脚的波形。

图片11.jpg

大家看到这个波形的时候,是不是觉得有点奇怪。在这个波形中,猛一看CLK的频率信号只有60Hz左右。而实际上,我们的CLK的频率至少要是几Mhz呀。那这个频率是怎么回事呢?

后来分析得到结论,上面图中的高脉冲应该是程序的延时之间的间隔,也就是两个测试程序之间的时间间隔,或者是两次发送数据之间的间隔。真正的CLK波形,需要使用单片机的触发功能,去捕获相应的波形。所谓的触发功能,就是可以设定一个比较值,如果输出信号的波形大于了这个值,示波器就会显示出来这个信号的波形。这里有一个信号比较的过程存在。

通过示波器,捕获出来真正的CLK信号之后,它的波形是如下形状的。

图片12.jpg

大家看一下,这个波形的频率高达12Mhz。这个12Mhz是怎么来的呢,我们前面提到了这个单片机的时钟晶振是24Mhz,那么这个SPI的通信速率12Mhz应该是时钟信号24Mhz二分频之后得到的。现在,我们就有一个怀疑,SPI通信的失败是不是由于这么高频的通信速率导致的呢?

还有一个问题,大家有没有发现这个CLK的波形,它的最小值并没有到参考地。同时它的最大幅值,我们使用示波器测量之后,只有2.2V。可是SPI这边的工作电压是3.3V呀,而且我们的电平转换芯片输出的电压也是3.3V。那是不是这个CLK信号,本身就是有问题呀?或者说在这个电压幅值区间,Flash芯片能不能识别CLK信号呢?

我们这片文章,就先分析到这里。下一篇,我们继续SPI通信的调试。


0 0
发表评论 侵权投诉
评论 (0)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表乌云踏雪网立场。

文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。