|
|
发表于 2009-12-23 17:46:31
|
显示全部楼层
先说我不是大牛喔
: o4 V* x) d+ \* C( z. k8 X q/ Q# r. O" l$ M' t/ z
没错,读clockgen是用block r/w
5 Z" C, ~3 l) L+ H. k. V! w; p% q$ i" J. V/ _! z
流程和byte,word r/w类似
+ q0 }* Z) b7 q: H; K% j. [" a- l! O
1) check host_status reg(smbusbase+0x0)的busy bit(bit0)=0,否则clear status(写0xfe进去)
2 e) R4 p% x5 x* b" ^2)按部就班,写clkgen的slave address和protocol和cmd到相应的寄存器并且开始读写(smbusbase+0x2 bit6)
( I( l. Q7 e2 [0 }0 i, p) H; Z3)等待smbusbase+0x0 bit7,bit2=1并且check smbase+0x0 bit4位看有没有错误(=0就OK)" C- }% x7 f/ ]8 G; q
4)在host data0 reg可以拿到block count,然后依次在smbase+0x07就可以拿到clkgen data啦1 A% j! f; y4 z; t' a7 Z# N5 y
, t6 D/ B7 L) l4 o- b N6 k写也类似
4 B4 C7 t5 t* V1 |6 s' v! \9 t+ m. U* n1 |0 ~4 ?+ v
小弟这里也写了一个类似的工具hwiotest
hwiotest.rar
(566.7 KB, 下载次数: 1347)
|
|