[ZLG-ARM] 请教xcxxyc

[复制链接]
1860|0
 楼主| sanxiajian 发表于 2007-5-24 10:41 | 显示全部楼层 |阅读模式
I2c, ST, TE, se, ui
&nbsp;&nbsp;&nbsp;你好,你曾经贴出一篇名为&quot;I2C的问题&quot;的帖子,内容如下:<br />&nbsp;&nbsp;void&nbsp;Send_N_byte(uint8&nbsp;Sla,uint8&nbsp;Subaddr,uint8&nbsp;Data)<br />{<br />&nbsp;&nbsp;&nbsp;uint8&nbsp;ii=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=(1&lt&lt3);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONSET&nbsp;=&nbsp;(1&lt&lt5);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0DAT&nbsp;=&nbsp;Sla&0xfe;&nbsp;&nbsp;&nbsp;//&nbsp;和屏蔽部分对照,改成这样,第2步读到的状态位正常--18,使用屏蔽部分,第2步读到的状态位为&nbsp;20,不是18<br />//&nbsp;&nbsp;while&nbsp;(&nbsp;&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x08)&nbsp;&&&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!&nbsp;&nbsp;=x10)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&&&nbsp;(ii++&lt0xff)&nbsp;&nbsp;);<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temptemp&nbsp;=&nbsp;I2C0STAT;<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0DAT&nbsp;=&nbsp;0x34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=&nbsp;1&lt&lt3;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;while&nbsp;(&nbsp;&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x18)&nbsp;&&&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x20)&nbsp;);//&nbsp;&&&nbsp;(ii++&lt0xffff)&nbsp;&nbsp;);<br />//&nbsp;temptemp&nbsp;=&nbsp;I2C0STAT;<br />//&nbsp;&nbsp;if((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x18)<br />//&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0DAT&nbsp;=&nbsp;Subaddr;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=&nbsp;1&lt&lt3;<br />//&nbsp;&nbsp;&nbsp;}<br />//&nbsp;&nbsp;&nbsp;else<br />//&nbsp;&nbsp;&nbsp;{<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=0x28;<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONSET=1&lt&lt4;<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;;<br />//&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;<br />//&nbsp;&nbsp;ii=0;&nbsp;&nbsp;<br />&nbsp;&nbsp;while&nbsp;(&nbsp;&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x28)&nbsp;&&&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x30)&nbsp;&nbsp;&&&nbsp;(ii++&lt0xff)&nbsp;&nbsp;);<br />&nbsp;&nbsp;temptemp&nbsp;=&nbsp;I2C0STAT;&nbsp;&nbsp;&nbsp;//该句测试用&nbsp;状态变为08H,不懂为什么,求助<br />&nbsp;&nbsp;if(((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x28))<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;I2C0DAT&nbsp;=&nbsp;Data;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=&nbsp;1&lt&lt3;<br />&nbsp;&nbsp;&nbsp;&nbsp;ii=0;&nbsp;<br />&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=0x28;<br />&nbsp;&nbsp;&nbsp;I2C0CONSET=1&lt&lt4;<br />&nbsp;&nbsp;&nbsp;return&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;while&nbsp;(&nbsp;&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x28)&nbsp;&nbsp;&&&nbsp;((I2C0STAT&nbsp;&&nbsp;0xf8)!=0x30)&nbsp;&&&nbsp;(ii++&lt0xffff)&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;temptemp&nbsp;=&nbsp;I2C0STAT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=0x28;&nbsp;&nbsp;&nbsp;//&nbsp;清零&nbsp;SI&nbsp;和&nbsp;STA&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONSET=1&lt&lt4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1&lt&lt3&nbsp;he&nbsp;1&lt&lt5&nbsp;<br />&nbsp;&nbsp;temptemp&nbsp;=&nbsp;I2C0STAT;&nbsp;&nbsp;<br />}&nbsp;&nbsp;<br />你说你读到的状态码是20不是18,我和你也遇到了同样的问题,请问你是怎么解决的?<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部