- 論壇徽章:
- 0
|
linux-2.6下的IIC驅(qū)動(dòng),目的讀取ZLG7290內(nèi)的鍵值,ZLG7290的地址為0X70,鍵值寄存器的地址為0X01。每次按一次鍵從該寄存器內(nèi)讀取一次鍵值,都是數(shù)字鍵。代碼如下:
R_IICCON = ioremap(0x54000000,4);
R_IICSTAT = ioremap(0x54000004,4);
R_IICADD = ioremap(0x54000008,4);
R_IICDS = ioremap(0x5400000c ,4);
char data; int i;
iowrite8(0xd0,R_IICSTAT);
iowrite8(0x70,R_IICDS);
for(i=0;i<10;i++);
iowrite8(0Xf0,R_IICSTAT);
barrier();
udelay(1000); //主發(fā)送模式下送出ZLG7290芯片地址且為寫
iowrite8(0x01,R_IICDS) ;
for(i=0;i<10;i++);
iowrite8(0xe3,R_IICCON);
barrier();
udelay(1000); //主發(fā)送模式下送出芯片寄存器地址
iowrite8(0x90,R_IICSTAT);
iowrite8(0x71,R_IICDS) ; //主接受模式下送出芯片地址且為讀
iowrite8(0xb0,R_IICSTAT);
barrier();
udelay(10000);
iowrite8(0xe3,R_IICCON);
barrier();
udelay(10000);
data=ioread8(R_IICDS); //主接受模式下讀取鍵值
return data;
可是沒次讀出的值都是0x71,0x7f,0xff.這些值,分析肯定不對 。但就是不知道那里有問題,感覺這個(gè)程序好象一點(diǎn)問題沒有,都是按著網(wǎng)上人間寫的內(nèi)容寫的。
不知道出錯(cuò)在那里,幫幫忙指點(diǎn)一下。 |
|