[ZLG-ARM] LPC2131 I2C问题请教~

[复制链接]
2140|1
 楼主| leeding 发表于 2008-3-14 14:59 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(I2C0STAT&nbsp;&&nbsp;0xF8)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;根据状态码进行相应的处理&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;0x08:&nbsp;&nbsp;&nbsp;&nbsp;//已发送起始条件.主发送和主接收都有&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--------------------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;装入从地址+读/写位(写SLA+W或者SLA+R)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(I2C_suba_en&nbsp;==&nbsp;1)/*&nbsp;SLA+R&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;//指定子地址读&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0DAT&nbsp;=&nbsp;I2C_sla&nbsp;&&nbsp;0xFE;&nbsp;&nbsp;&nbsp;&nbsp;//先写入地址&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;SLA+W&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0DAT&nbsp;=&nbsp;I2C_sla;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;否则直接发送从机地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;清零SI位&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0CONCLR&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;3)|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;SI&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;5);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;STA&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />以上程序是EASYARM2131板配套的I2C程序的中断服务部分,其中<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(I2C_suba_en&nbsp;==&nbsp;1)/*&nbsp;SLA+R&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;//指定子地址读&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C0DAT&nbsp;=&nbsp;I2C_sla&nbsp;&&nbsp;0xFE;&nbsp;&nbsp;&nbsp;&nbsp;//先写入地址&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />的意思是发送&nbsp;从地址+读,I2C0DAT的最低位应为1才是呀,为什么是I2C_sla&0xFE呢,这样最低位不是0吗?不明白,请指点!<br />
zlgarm 发表于 2008-3-14 15:53 | 显示全部楼层

I2C

leeding&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;1、根据I2C协议要对从机寻址(写从机地址)I2CDAT寄存器最低位(R/W)为0<br />&nbsp;&nbsp;&nbsp;&nbsp;2、如果是读从机数据,I2CDAT寄存器最低位(R/W)为1<br />&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;On&nbsp;zlgarm_lijintao
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

24

帖子

0

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