我板上有SPANSION FL016KIF(第12页的引脚排列),我想转储数据。我尝试为此使用BusPirate v3。

我想在线进行此操作。我没有连接WP#和HOLD#。



这是我用来设置命令的脚本(我也尝试过其他变体):

HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
9. DIO
x. exit(without change) 
(1)>5

Set speed:
 1. 30KHz
 2. 125KHz
 3. 250KHz
 4. 1MHz

(1)>3
Clock polarity:
 1. Idle low *default
 2. Idle high

(1)>1
Output clock edge:
 1. Idle to active
 2. Active to idle *default

(2)>2
Input sample phase:
 1. Middle *default
 2. End

(1)>1
CS:
 1. CS
 2. /CS *default

(2)>2
Select output type:
 1. Open drain (H=Hi-Z, L=GND)
 2. Normal (H=3.3V, L=GND)

(1)>2
Ready
SPI>W
Power supplies ON


这是我尝试执行的指令,它应该获取一些设备信息:

SPI>[ 0x9f r:4]
/CS ENABLED
WRITE: 0x9F
READ: 0x00 0x00 0x00 0x00
/CS DISABLED
SPI>


很不幸,我只得到零READ: 0x00 0x00 0x00 0x00。如何找出SPI的正确设置?还有其他陷阱吗?

#1 楼

电路板上电了吗?显然,芯片需要电源才能读出。当它还在板上时,这样做的问题是其他逻辑可能试图同时访问您的芯片。

我所能推荐的就是将它从电路板上卸下,并使用编程器为芯片供电(我不知道海盗车是否能够做到这一点)。过去,我已经通过SPI读取了少数芯片(使用数据编程器),而在板上时却从未工作过。作为一名非电子专家,我希望板上有一些东西可以让芯片的某些引脚在您希望交替的同时为0或1。这可能是由于电路中某处的上拉/下拉电阻之类的原因。
了解这是一种边缘封装的芯片,使用基本型的芯片应该不难去除焊接技巧。尤其要看一下您已经能够将导线焊接在上面。如果您从未删除过某些内容,那么我能说的是:加热1个边缘上的引脚,并在芯片下方推动一些镊子,以在1侧提起芯片。然后在另一侧重复。这些软件包非常灵活,不会折断您的脚。只是不要夸大举动;)

评论


在SPI> W->电源打开的情况下,我可以从BusPirate激活电源。我从3.3V的BusPirate连接了VCC和GND到芯片。单板本身已经下电。

– Samuirai
13年7月28日在13:51

#2 楼

首先,我建议确保将HOLD#引脚拉高。如果不是,则该芯片处于“已暂停”状态,您将无法读取它。我遇到的问题是,芯片从PCB上供电的电源轨可能也在为其他组件供电。这带来了两个潜在的问题:1)您的电源可能无法提供足够的电流来为电源轨上的所有部件供电,因此您没有为SPI闪存芯片提供足够的功率,2)即使您可以提供足够的电流电源,电路的其他部分也可能试图与SPI芯片通信,这显然会引起问题。我的解决方案是小心地拆下电源引脚(引脚8)并将其向上弯曲,以使其不接触焊盘。这样,您就只能为闪存芯片而不是电路的其余部分供电。仍然有问题,您应该将整个芯片拆焊。正如@justsome所提到的,这实际上并不困难,尤其是对于这些IC封装。

#3 楼

Flashrom项目对SPI芯片的ISP(系统内编程)提出了一些建议。例如:


芯片组的某些部分通常
通电(通过Flash芯片的Vcc引脚提供的电压)。在这种情况下,请断开Vcc与编程器的连接,并使用正常的PSU为其供电,然后尝试正常供电,并
使其处于复位状态(例如,使用跳线代替复位按钮
)。


尝试该页面上给出的提示。

评论


该单板未连接任何电源。

– Samuirai
13年7月28日在21:41

然后,如提示中所述,您可能应该为其供电。

–伊戈尔·斯科钦斯基♦
13年7月28日在22:21

好吧,这是当电路板部分供电时的一种选择。但是好吧,我会尝试的。

– Samuirai
13年7月29日在7:31