|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 meng110928 于 2017-8-8 12:52 编辑
G; A- b- \7 m7 Z: E6 i& X/ R. `, C1 n$ v
楼主大前年画了一个PCB,出现怪异情况。
) o) @& @7 [2 \, Z! y% m" @) u1:程序全放在TF卡上,隔夜有10%开机困难,多次摁开机键才正常开机;放一两年后充满电90%以上不开机;
. s. V M4 P2 q4 e7 w! M3 i2:电路是 PMOS软开机电路+ARM9内核主控+SDRAM+SD卡+SPI外围+ADC按键 等;
, M* @% }" _8 ]7 O' Z0 a6 ~3:SD卡单独LDO供电,上电先于主控,纹波可控,当时怀疑此处问题,加胆电容无改善,排除此处问题;
/ m% L8 K* P7 B0 o0 `8 n* r5 f6 T4:走线长度5cm内,等长,过冲振铃不超过0.5V,TF卡串22R电阻+上拉电阻直通主控,;) g5 X4 v! K" c# t% \ i' e) p5 p _1 x
5:时序正常,时钟20Mhz,TF端测量,读取时data较CLK延时5ns-9ns,卡的一致性较差,但是符合SD2.0协议14ns以内,信号维持时间符合SD2.0协议;
+ i6 K b8 X8 x6:板子是锂电池供电,开机键电路比较经典常用了,摁开机键拉低PMOS,然后3.7V锂电接入各LDO供电,主控用AAT3524复位,开机电路如下图,
' T5 E4 L, d+ N+ W9 h7:出错时,主控串口有打印信息,如最下;
- ?" g) G1 G9 @- B. i% r9 V8:用逻辑分析仪抓了开机时的SD数据,查看软件及抓包见附件。 查看软件 链接:http://pan.baidu.com/s/1jIJwMFG 密码:8awp9:下面两个链接,为关联贴。1 X ]9 u) U; w' A
10:设备类似一个儿童学习机,加一个SPI boot,开机再无任何问题。所以其他部分问题应该可以排除,问题就在SD2.0这里。
( A) }8 ]# l3 G' x11:曾经将设备通过USB连接电脑,反复从设备TF卡里拷贝内容到电脑,重复上百次,哈希值未出现变异,无错误出现。
1 u; a C, {4 G% @8 Q12:以上供参考,这问题悬疑几年了,最近空闲特意测试跟进,顺便发出来看有没有灵机一动的大师,把此问题破解。
# d, H8 H. j: o N' f: [: ~13:主控原厂当年不太配合,负责人目前没换,所以这问题不打算再找原厂。" u* Y4 P# o/ L5 d+ E
$ b, J9 T% K+ E3 K: d# r- y7 P
https://www.eda365.com/thread-150215-1-1.html
" O$ D/ ` j2 b1 c L& yhttps://www.eda365.com/thread-117688-1-1.html
5 I* F% C7 W7 \8 t
- o# v; H% W- x' V. C
抓包数据.rar
(4.14 MB, 下载次数: 0)
* G6 N3 s% m; h( r' j# z" u. U" M; t% @, P2 i# f/ }; Q( `+ J
% v! {8 j0 A/ G) y
# y) f- o' r0 L$ j V& w
/ P8 x! J& ^+ P e; r. ~$ |load bios 0x30500000...: J+ m7 O. r( w# t! U' {2 s
read sector:128 fail, try to backup sector:1986) M, @* O$ A" p9 e/ @7 ]% D# V
R F
% T( [. q1 d7 S: yread backup sector:1986 fail
* `3 Y1 \1 v8 w% x k$ iing6 i) o% J. D6 r `6 Y$ g: K
0 D! u7 H6 S0 ]" U* h6 p3 }......................................................................................分隔线..........................................................................................................................
5 t- s5 _8 _- _
- I: m* R a: Y4 J
5 ~. G" V/ x9 |' o5 b& O- J问题应当已经定位,是主控的操作不符合SD2.0协议: Y% y+ k$ O( i
( ^/ H8 ]8 U( P" ]! K7 d对比NG采样数据和OK采样数据发现,在NG机启动过程中,Host 下达 cmd18, 但并未使用 cmd12 去中止, 却又下达另一个 cmd18, [color=inherit !important]造成当前异常, 可能造成 SD 出现无法预期之错误;2 w7 Z8 G9 m9 A) W/ }/ n* g
7 B( m: L7 S! P6 s
' j9 O% T( s7 j, h
- SD2.0协议第18页
) Y* y9 l: W+ h1 O# Y. k: a {+ B( y$ m" @4 r
- [color=inherit !important]READ_MULTIPLE_BLOCK(CMD18) 代表读取多个连续的块。块会连续的传输, 直到
# }3 T9 `" |2 d" K - [color=inherit !important]STOP_TRANSMISSON(CMD12)命令发出。因为连续数据传输,停止命令会有些执行延迟。数据
- [color=inherit !important]传输会在停止命令的结束位发送之后停止。
- CMD12 STOP_TRANSMISSION Mandatory /* 停止多块传输操作 */
- CMD17 READ_SINGLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取单个块 */
- CMD18 READ_MULTIPLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取多个块,直到收到CMD12为止 *3 V7 v4 o$ E3 y5 \9 l: J' u8 I
! A C% I1 Y7 o1 k% S& m6 e
1 W3 @& `7 g3 K; a0 G. A0 M) N
* \+ \$ r# c1 M, b5 I ?: s
P$ a% v( B/ b/ C! D: N% n& J8 `) t7 `
下图抓取的NG采样数据,02紫色为CMD,03红色为CLK,其他data。深色部分为第一个CMD18命令(568ms),右侧为第二第三。第一个CMD18后,TF数据(兰色)吐出,但未使用 cmd12 去中止, 却又下达另一个 cmd18,致使TF异常,所以第二第三CMD18后,TF再无数据吐出,data为直线
# V4 [! T8 S: ?8 L. d
3 p3 a1 i$ e# @2 R
' M8 w1 w% b# _# q6 ?& w! c下图抓取的OK采样数据,02紫色为CMD,03红色为CLK,其他为数据。对应时间轴,495ms出现CMD18开始连续读取数据,TF吐出数据(兰色);517ms CMD12>命令CMD18,读正常;539ms CMD12>命令CMD18 读正常...... 最后正常开机。 H# y0 g% t* I
: G) U( t3 f( [7 f/ ?
& \& I; I) r+ q0 M4 d" u
3 T" }: y0 L# t; K k. j/ e* }6 Z* h: Y& x
2 _% o1 G. b0 m! E
1 O3 x' v# Z% ?) V' C7 I |
|