TA的每日心情 | 开心 2019-11-19 16:20 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 meng110928 于 2017-8-8 12:52 编辑
- Q* E+ N& i9 g7 i7 }, e. }3 ]4 D
3 S" g7 O) F( [0 T, D' }楼主大前年画了一个PCB,出现怪异情况。' f+ O o3 t Y; s' ]% k g$ e
1:程序全放在TF卡上,隔夜有10%开机困难,多次摁开机键才正常开机;放一两年后充满电90%以上不开机;
( f5 w g; K3 |2:电路是 PMOS软开机电路+ARM9内核主控+SDRAM+SD卡+SPI外围+ADC按键 等;0 m: u% M" h) k+ i
3:SD卡单独LDO供电,上电先于主控,纹波可控,当时怀疑此处问题,加胆电容无改善,排除此处问题;
7 ~. x( r- ?( x! ~; q2 ]4:走线长度5cm内,等长,过冲振铃不超过0.5V,TF卡串22R电阻+上拉电阻直通主控,;# f! b' e7 a# W. c" \
5:时序正常,时钟20Mhz,TF端测量,读取时data较CLK延时5ns-9ns,卡的一致性较差,但是符合SD2.0协议14ns以内,信号维持时间符合SD2.0协议;" }# L' O5 O# t/ H3 o7 V& N
6:板子是锂电池供电,开机键电路比较经典常用了,摁开机键拉低PMOS,然后3.7V锂电接入各LDO供电,主控用AAT3524复位,开机电路如下图,, B: e7 M' O/ R' z
7:出错时,主控串口有打印信息,如最下;% n$ [$ k6 _. Y: ^4 I( f# m
8:用逻辑分析仪抓了开机时的SD数据,查看软件及抓包见附件。 查看软件 链接:http://pan.baidu.com/s/1jIJwMFG 密码:8awp9:下面两个链接,为关联贴。
" ? h2 ^9 `0 ^: v# Q) @10:设备类似一个儿童学习机,加一个SPI boot,开机再无任何问题。所以其他部分问题应该可以排除,问题就在SD2.0这里。; G; Z7 _, A' a( C8 T
11:曾经将设备通过USB连接电脑,反复从设备TF卡里拷贝内容到电脑,重复上百次,哈希值未出现变异,无错误出现。
, r _" T# b& z* p! `12:以上供参考,这问题悬疑几年了,最近空闲特意测试跟进,顺便发出来看有没有灵机一动的大师,把此问题破解。9 |: g( U) [, L1 ]% g# u8 L
13:主控原厂当年不太配合,负责人目前没换,所以这问题不打算再找原厂。
* Z8 |/ ^$ y) X+ B4 Q' ]
+ m, U4 H- X% |( qhttps://www.eda365.com/thread-150215-1-1.html
8 F3 @# k( _% S8 ghttps://www.eda365.com/thread-117688-1-1.html6 b( A8 T9 b4 {+ [
) K6 X, g* N) { w Z
抓包数据.rar
(4.14 MB, 下载次数: 0)
6 y% E( c* F; K, e: D& n- w! y9 {; I
) G" r0 H7 |5 @# j0 a( i' A1 }. J8 E( Z; y, ?, ], L
4 f3 g- _$ d: q, @$ s4 w; Z# G. u, i
load bios 0x30500000...- c0 O& R! I) j& _; N
read sector:128 fail, try to backup sector:1986' `, I3 Y* O9 } g: P
R F
4 b2 a3 o% N* t. N I8 `read backup sector:1986 fail
" P# R+ ?( |9 Sing% y: O/ X. m ^# c6 a
( k; I! r: |2 {) f5 E3 d
......................................................................................分隔线..........................................................................................................................9 q5 v: e2 P0 b$ N" A0 t0 C8 d6 M
3 C: W6 L) h. U0 X# M; o) z9 ]
9 h1 `/ V7 t2 e8 E/ |2 }+ @
问题应当已经定位,是主控的操作不符合SD2.0协议
( B: T' |3 H# r/ k9 ^) V) w) P, k* Z) C9 g& n( Q) [) E* o
对比NG采样数据和OK采样数据发现,在NG机启动过程中,Host 下达 cmd18, 但并未使用 cmd12 去中止, 却又下达另一个 cmd18, [color=inherit !important]造成当前异常, 可能造成 SD 出现无法预期之错误;
4 u5 u2 V/ x" _
1 M. ?! ?$ j( C, n$ K- ?
5 N' r# c: |) I+ h- SD2.0协议第18页
2 k7 t( \+ T# k8 @; a$ e7 S6 s3 X/ A: y0 r* i" k3 `
- [color=inherit !important]READ_MULTIPLE_BLOCK(CMD18) 代表读取多个连续的块。块会连续的传输, 直到
8 {0 j$ a( ]7 ~3 J0 \! Y5 A% j. n - [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 f, L8 n+ E" S. M! ]
/ t3 G% B9 A3 c9 t: d- @
, i7 y7 |2 E1 o' P
! r8 y% j0 z9 e7 k+ b) H) [9 p8 o, T' j
* b: [8 K7 G! o9 J* @
下图抓取的NG采样数据,02紫色为CMD,03红色为CLK,其他data。深色部分为第一个CMD18命令(568ms),右侧为第二第三。第一个CMD18后,TF数据(兰色)吐出,但未使用 cmd12 去中止, 却又下达另一个 cmd18,致使TF异常,所以第二第三CMD18后,TF再无数据吐出,data为直线/ [3 P5 j' u9 k, Y/ Q% ~
+ X' j% c' d2 P
W/ Z/ @' t1 S5 @8 W- X下图抓取的OK采样数据,02紫色为CMD,03红色为CLK,其他为数据。对应时间轴,495ms出现CMD18开始连续读取数据,TF吐出数据(兰色);517ms CMD12>命令CMD18,读正常;539ms CMD12>命令CMD18 读正常...... 最后正常开机。
3 E6 H$ Z m1 O! A' M
5 A9 R1 |7 E3 o/ j8 ~( D
) P8 @3 [/ W ~8 x# y- ]6 W# O% b/ u+ P
! O& [# }, E$ B5 B2 d" d& q, ~
1 r( Y, }+ S0 N5 r! i [* [0 O2 x- j( Z2 h' d2 b" u3 c
+ u) x& G8 ]8 W$ ~" V, ~; q- \7 W# j
0 I J! `0 i$ u8 Z* {
补充内容 (2019-8-2 15:34):
1 P6 W, E2 J& {; A我估计是卡放置久了之后,存储的电子流失,修正数据需要一定恢复时间,这个时间内会对主控报fail,导致程序不连续开机失败。 |
|