|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 meng110928 于 2017-8-8 12:52 编辑
, {$ R/ \: Y* ]* d6 D
: S* F% A4 r' ^% {3 P9 y* V楼主大前年画了一个PCB,出现怪异情况。5 s) C: k, v4 L% n% F# [; l/ p" m0 g
1:程序全放在TF卡上,隔夜有10%开机困难,多次摁开机键才正常开机;放一两年后充满电90%以上不开机;1 }' X" i0 Y0 y# i
2:电路是 PMOS软开机电路+ARM9内核主控+SDRAM+SD卡+SPI外围+ADC按键 等;* F3 U4 d: g* t% Y! J7 W% k' ?
3:SD卡单独LDO供电,上电先于主控,纹波可控,当时怀疑此处问题,加胆电容无改善,排除此处问题;2 X) {9 L) v P9 D$ o: E7 o
4:走线长度5cm内,等长,过冲振铃不超过0.5V,TF卡串22R电阻+上拉电阻直通主控,;
4 n2 L( j" T$ _$ J/ I( Q+ g$ g5:时序正常,时钟20Mhz,TF端测量,读取时data较CLK延时5ns-9ns,卡的一致性较差,但是符合SD2.0协议14ns以内,信号维持时间符合SD2.0协议;
$ u, c( w7 m( d7 ?# z6:板子是锂电池供电,开机键电路比较经典常用了,摁开机键拉低PMOS,然后3.7V锂电接入各LDO供电,主控用AAT3524复位,开机电路如下图,
; ]' N$ |: P, }5 _. w5 @& r2 Y7:出错时,主控串口有打印信息,如最下;; l% q! m+ Y n p# F
8:用逻辑分析仪抓了开机时的SD数据,查看软件及抓包见附件。 查看软件 链接:http://pan.baidu.com/s/1jIJwMFG 密码:8awp9:下面两个链接,为关联贴。
) j2 e( l$ s E10:设备类似一个儿童学习机,加一个SPI boot,开机再无任何问题。所以其他部分问题应该可以排除,问题就在SD2.0这里。2 M# o7 v- I% Z* r" m
11:曾经将设备通过USB连接电脑,反复从设备TF卡里拷贝内容到电脑,重复上百次,哈希值未出现变异,无错误出现。
* [4 [$ D9 R8 t1 u12:以上供参考,这问题悬疑几年了,最近空闲特意测试跟进,顺便发出来看有没有灵机一动的大师,把此问题破解。
7 c% A$ ~2 d. C0 Q6 U2 C13:主控原厂当年不太配合,负责人目前没换,所以这问题不打算再找原厂。' G* W; d4 `9 q: x$ B6 w. ]; N6 y
# u: C$ U2 d; b: o" Q, Q# L# fhttps://www.eda365.com/thread-150215-1-1.html
* }5 \" ?6 r z" q- T7 \" Z6 Whttps://www.eda365.com/thread-117688-1-1.html
+ S; [% n0 X. o% ~, q$ Q# D. |6 A. N
抓包数据.rar
(4.14 MB, 下载次数: 0)
. g6 B$ C3 [, K% b
: y& a* b: d0 p1 n( e2 u6 v0 e/ m6 O' y5 [; c+ }2 P
0 T% t! z2 r8 S d. E9 l
0 }. G: j W5 m3 w
load bios 0x30500000...
( i& }$ a& r; X* h7 \" W! j1 ?read sector:128 fail, try to backup sector:1986( e1 x" X% x7 B E3 L9 n3 \
R F9 L( N: ?8 }' ~1 j/ J0 m4 ^- C
read backup sector:1986 fail! _. X8 `: J! ]9 N' e, ?3 E
ing v+ I: n6 g( [) p: }. P5 |2 C
: E. j% Y; W+ j, u( ?9 F; j......................................................................................分隔线.........................................................................................................................., E0 l3 d' }( s
0 |4 B' m8 \+ k& `' B
, J, L. W. d! Z/ a; W, ]% g+ |问题应当已经定位,是主控的操作不符合SD2.0协议% J: z& @8 s" x3 R9 Z: y, U
6 i- S+ `: T& a) j对比NG采样数据和OK采样数据发现,在NG机启动过程中,Host 下达 cmd18, 但并未使用 cmd12 去中止, 却又下达另一个 cmd18, [color=inherit !important]造成当前异常, 可能造成 SD 出现无法预期之错误;# ~4 c8 `& `6 M3 U
Y9 `; C2 V2 n' C# n \7 D1 c9 e
- SD2.0协议第18页
5 B$ f0 Z, S j/ Z, w, N& T
/ o; h+ ]; y9 m - [color=inherit !important]READ_MULTIPLE_BLOCK(CMD18) 代表读取多个连续的块。块会连续的传输, 直到
! s) s9 [: l; Q9 c( N; z - [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为止 *
6 k0 [/ D3 s Q; H, x, T3 f% O
: f* N! u0 ^5 N. O W/ ?4 p$ Y b1 s, M
* J5 t+ y3 u5 `# L$ }, p& }' T* B% \% }
) i T: U i4 y+ w9 k% B' S下图抓取的NG采样数据,02紫色为CMD,03红色为CLK,其他data。深色部分为第一个CMD18命令(568ms),右侧为第二第三。第一个CMD18后,TF数据(兰色)吐出,但未使用 cmd12 去中止, 却又下达另一个 cmd18,致使TF异常,所以第二第三CMD18后,TF再无数据吐出,data为直线. k+ c* V0 n. n l+ a p* w
1 G, z0 B4 |8 x' q1 Z" r
3 U# H: J8 V4 I k+ w
下图抓取的OK采样数据,02紫色为CMD,03红色为CLK,其他为数据。对应时间轴,495ms出现CMD18开始连续读取数据,TF吐出数据(兰色);517ms CMD12>命令CMD18,读正常;539ms CMD12>命令CMD18 读正常...... 最后正常开机。
2 ]4 w# a4 l' ~% l
6 F! ]. ?* Q7 d1 F* j9 `5 I
2 ~/ ]% H. I \9 q% t
; I. T3 Q& ?) V
, o& _. s$ ]7 Q' {
' r4 O7 m/ M n# Z$ F7 m& u' Y0 z7 ]2 |6 d m& c$ M3 M8 I
|
|