|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 meng110928 于 2017-8-8 12:52 编辑 % N3 ?' U( `4 S) L \7 ^+ @* q
9 W8 N; w+ a. Q& {9 C b楼主大前年画了一个PCB,出现怪异情况。3 K0 W n; L# a. j
1:程序全放在TF卡上,隔夜有10%开机困难,多次摁开机键才正常开机;放一两年后充满电90%以上不开机;" Q% w, `+ m. K0 z& w
2:电路是 PMOS软开机电路+ARM9内核主控+SDRAM+SD卡+SPI外围+ADC按键 等;' H) N$ |5 C" Q; k7 h& u
3:SD卡单独LDO供电,上电先于主控,纹波可控,当时怀疑此处问题,加胆电容无改善,排除此处问题;! @1 |/ o/ y# H! r% z1 B" z
4:走线长度5cm内,等长,过冲振铃不超过0.5V,TF卡串22R电阻+上拉电阻直通主控,;6 O* x! o4 O& T( i
5:时序正常,时钟20Mhz,TF端测量,读取时data较CLK延时5ns-9ns,卡的一致性较差,但是符合SD2.0协议14ns以内,信号维持时间符合SD2.0协议;
) K3 i; o1 C( j- \ X, L6:板子是锂电池供电,开机键电路比较经典常用了,摁开机键拉低PMOS,然后3.7V锂电接入各LDO供电,主控用AAT3524复位,开机电路如下图,
' \- \7 }; I- \" x% _1 J7:出错时,主控串口有打印信息,如最下;
" ^9 n n* W. T" a; a8:用逻辑分析仪抓了开机时的SD数据,查看软件及抓包见附件。 查看软件 链接:http://pan.baidu.com/s/1jIJwMFG 密码:8awp9:下面两个链接,为关联贴。2 i- }$ c( h$ R6 m
10:设备类似一个儿童学习机,加一个SPI boot,开机再无任何问题。所以其他部分问题应该可以排除,问题就在SD2.0这里。8 f! D) `5 a, t0 z2 v
11:曾经将设备通过USB连接电脑,反复从设备TF卡里拷贝内容到电脑,重复上百次,哈希值未出现变异,无错误出现。
( N2 h. }6 E) u12:以上供参考,这问题悬疑几年了,最近空闲特意测试跟进,顺便发出来看有没有灵机一动的大师,把此问题破解。/ T. E/ o/ V- G; Z
13:主控原厂当年不太配合,负责人目前没换,所以这问题不打算再找原厂。
( c8 r- m) D& Q/ Y& D! K
/ `! `- A, E! _, A( [. ?4 zhttps://www.eda365.com/thread-150215-1-1.html, F ~ h9 `. I! U/ F+ y" s
https://www.eda365.com/thread-117688-1-1.html
$ ^# u) J( {! O! J& V
4 q1 N4 B" |; f, Y4 J( n* j
抓包数据.rar
(4.14 MB, 下载次数: 0)
) b5 t: [1 M) D+ ]$ C
* [# Z6 Y0 c9 S) j, o2 [9 m+ f, l7 B
: n+ i( i/ _" E' {" [; A2 S% U4 J
load bios 0x30500000...
6 @3 m' P. J, b+ O4 O& hread sector:128 fail, try to backup sector:1986
) g% X, H+ _( i- YR F* @ B* C7 e7 ~& e4 i
read backup sector:1986 fail% x/ Z6 d" f' B% A6 {, \4 D7 m
ing1 |) ^: A( [$ Z- O O
! d0 t" B% J7 e& f1 h* h- V- Z......................................................................................分隔线..........................................................................................................................
7 P1 i1 Y! h B9 N
' x) Q9 E/ U, h+ i o1 b! K% O; H3 |' h
问题应当已经定位,是主控的操作不符合SD2.0协议
% b7 T( n6 z% Z. W m) D! c& P# z" W& o) T+ d; ]- y
对比NG采样数据和OK采样数据发现,在NG机启动过程中,Host 下达 cmd18, 但并未使用 cmd12 去中止, 却又下达另一个 cmd18, [color=inherit !important]造成当前异常, 可能造成 SD 出现无法预期之错误;9 ^; v/ v* s K" t$ b
1 _# X6 Z+ _: p; e3 Q4 _8 a6 z/ N' A' q' V8 I! Z2 c$ q6 a* k
- SD2.0协议第18页
8 s+ K" P; ~& w; ~
7 _4 c6 z5 G: ?. |: C# l0 [! V7 N - [color=inherit !important]READ_MULTIPLE_BLOCK(CMD18) 代表读取多个连续的块。块会连续的传输, 直到
8 |5 B( X+ P% [" @; } - [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为止 *
4 f4 I: X: l5 s! |0 e! c( d1 K4 B
' Z- j1 l/ ?: Y3 x! E0 C6 d6 @/ p4 R8 ^0 b7 ^! [5 z7 x
* C2 r+ [: n4 r9 K m/ M
: P4 ^. A8 g$ A9 N
) I" O' H9 [- P下图抓取的NG采样数据,02紫色为CMD,03红色为CLK,其他data。深色部分为第一个CMD18命令(568ms),右侧为第二第三。第一个CMD18后,TF数据(兰色)吐出,但未使用 cmd12 去中止, 却又下达另一个 cmd18,致使TF异常,所以第二第三CMD18后,TF再无数据吐出,data为直线
w# ^! P6 F# \. b8 {# Y4 E
+ I" _# k) g6 ]* t
( ?& q+ T1 M9 F- E% D# B3 k: v. p下图抓取的OK采样数据,02紫色为CMD,03红色为CLK,其他为数据。对应时间轴,495ms出现CMD18开始连续读取数据,TF吐出数据(兰色);517ms CMD12>命令CMD18,读正常;539ms CMD12>命令CMD18 读正常...... 最后正常开机。: o, z) H8 c$ e9 d) F! j. [5 p
# C' ^4 M* a Q4 |1 P" S
4 O2 h: b: U- \4 w3 X8 _- |8 n5 R7 R) f( r
$ w+ P, G: R4 e+ _! z) G
: }) f& k8 X+ X' v5 H8 e0 _% G: n: A: @5 c5 `
|
|