OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2911|回复: 2

I2C读一个字节求助

[复制链接]

15

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-23
在线时间
0 小时
发表于 2015-5-6 20:45:27 | 显示全部楼层 |阅读模式
5金钱
“SDA一般只有在SCL位低电平的时候才能变化,一般在写入/读出数据时只能在SCL为低时SDA发生变化。”那为什么例程中读数据时SCL是高电平呢?
u8 IIC_Read_Byte(unsigned char ack)

unsigned char i,receive=0;
SDA_IN(); //SDA设置为输入
for(i=0;i<8;i++ )
{
IIC_SCL=0;
delay_us(2);
IIC_SCL=1;
receive<<=1;
if(READ_SDA)receive++;
delay_us(1);
}
if (!ack)
IIC_NAck();//发送nACK
else
IIC_Ack(); //发送ACK
return receive;

最佳答案

查看完整内容[请看2#楼]

正是因为低电平的时候,SDA会变化,所以,读数肯定是在SDA不变化的时候,也就是高电平的时候。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-6 20:45:28 | 显示全部楼层
正是因为低电平的时候,SDA会变化,所以,读数肯定是在SDA不变化的时候,也就是高电平的时候。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2015-4-13
在线时间
1 小时
发表于 2015-7-13 21:19:00 | 显示全部楼层
一哈都理解咯,感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 06:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表