|
发表于 2009-12-23 17:46:31
|
显示全部楼层
先说我不是大牛喔
: k3 w+ Q& d2 V3 ~% x; A6 i/ t3 A. L
没错,读clockgen是用block r/w
. O. N3 o0 q- i; a) i) M) O* I1 B% c6 s
流程和byte,word r/w类似5 d/ x9 \6 d6 h: Q" d7 u
' ?2 [, I, T" @; z! @. R* N
1) check host_status reg(smbusbase+0x0)的busy bit(bit0)=0,否则clear status(写0xfe进去)
9 O4 n' L6 O, r( J2)按部就班,写clkgen的slave address和protocol和cmd到相应的寄存器并且开始读写(smbusbase+0x2 bit6)7 r$ v0 g: S, F" E2 K7 m9 D
3)等待smbusbase+0x0 bit7,bit2=1并且check smbase+0x0 bit4位看有没有错误(=0就OK)* m( p! H) K( K* o
4)在host data0 reg可以拿到block count,然后依次在smbase+0x07就可以拿到clkgen data啦
: {2 P, T) B% R
" e; L; J6 [5 k: F& p写也类似4 [" X& q- ]/ L! E
4 Y, ?3 s: Q+ z C
小弟这里也写了一个类似的工具hwiotest
hwiotest.rar
(566.7 KB, 下载次数: 818)
|
|