找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2471|回复: 5
打印 上一主题 下一主题
收起左侧

关于单片机I^2C通信协议程序你的分析

[复制链接]
跳转到指定楼层
楼主
ID:652716 发表于 2019-12-7 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.SCL为高电平时SDA上的数据不变,SDA从高电平变成低电平,或者从高电平变成低电平,是数据变化吗?
2..void I2cStop()
{
//时钟总线为高电平期间,数据总线从高变低产生终止信号
        SCL = 0;
        SDA = 0;
        SCL = 1;
        delay5us();//状态保持5us                            是以为SCL为0所以SDA才能变?省略SCL=0不行吗?
        SDA = 1;
        delay5us();//状态保持5us        
}

3.bit ReadACK()
{
        SCL = 0;//拉低时钟总线,允许从机控制SDA
        SCL = 1;//拉高,读SDA
        delay5us();
        if(SDA)//NOACK                                              SCL为0就允许从机控制SDA,之后又变成高电平就读了SDA?
        {                                                                    能写代码,但是对主从式了解的不够详尽,能不能直观的解释一下?
                SCL = 0;
                return(1);//返回1
        }
        else//ACK
        {
                SCL = 0;
                return(0);//返回0
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:470332 发表于 2019-12-7 19:54 | 只看该作者
你找个IIC时序图,代码对着图看
回复

使用道具 举报

板凳
ID:235200 发表于 2019-12-7 21:28 | 只看该作者
是时序要求,不同的组合时序构成相应操作命令
回复

使用道具 举报

地板
ID:652716 发表于 2019-12-8 19:39 | 只看该作者
moluxiyan 发表于 2019-12-7 19:54
你找个IIC时序图,代码对着图看

我是我问题不只是时序的问题
回复

使用道具 举报

5#
ID:401564 发表于 2019-12-9 09:19 | 只看该作者
IIC时序的要求是严谨的,它要求什么电平你就得什么电平,在电平未知的情况下,最好是先按IIC要求的电平来写入,比如,SCL端口你可能在别的地方也会用到,那么在进入IIC函数时,第一时间就先按照IIC要求把电平转换了再说。
对于SDA线,它是分两个状态来理解的
1:写入数据的时候,SCL和SDA是由单片机来主动执行的
如果SCL是高电平,SDA是不能变化的,因为,IIC的启动和停止就是:在SCL为高电平时,SDA变化来产生的,如果SDA线在这个时候产生变化了,从机会认为是启动或者停止信号,从而产生错误的操作。
2:在读出数据的时候,SCL是由单片机产生的,SDA则是由从机产生的,这个时候,单片机是不操作SDA线的,只读取SDA的状态。在SCL时钟上升沿的时候,从机的SDA线自己产生变化的,在下一个上升沿之前,单片机读取SDA线的状态就可以读取到数据了
3:IIC一定要应答信号,写入完整的一个字节的数据的时候,由从机产生应答信号,以确定数据是否完整写入
读取数据的时候,由单片机来产生应答信号,用来告诉从机下一步还要不要读取数据
打了那么多字,你不理解就当我没说了。
回复

使用道具 举报

6#
ID:652716 发表于 2019-12-13 19:52 | 只看该作者
Y_G_G 发表于 2019-12-9 09:19
IIC时序的要求是严谨的,它要求什么电平你就得什么电平,在电平未知的情况下,最好是先按IIC要求的电平来写 ...

明白,谢谢了,加个好友?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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