MCU_IIC学习笔记_51单片机的学习笔记

/*****************************************************************************************************************************************

*Author:JYW

*Time:2019_02_15

*Describe:学而记之进而习之

*****************************************************/

IIC程序代码可以参照:https://mp.csdn.net/postedit/87394368

IIC总线是高性能串行总线,IIC总线只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL;

这两条线上可以接很多很多的外围设备,凡是可以IIC通信的都可以在这个上面,它根据总线仲裁,就是主机想要和哪一个设备

(也就是从机)通信,主机先发送一个地址码过去,这条线上的所有的设备(从机)就会检测是否和自己的地址相符,如果相符

就会和主机建立通信关系,建立之后就会只有这个唯一的芯片和主机进行通信,这就是总线仲裁

IIC总线通过上拉电阻接正电源,当总线空闲时,两根线均为高电平,连到总线上的任一器件输出的低电平都会使信号变低,即各器件的SDA及SCL都是线''"关系;

凡是IIC总线的设备必须要接上拉电阻(阻值大约是10k);

每个接到IIC总线上的器件都有唯一的地址,主机与其它器件间的数据传送可以是由主机发送数据到其他器件,这时主机即为发送器,由总线上接收数据的器件则为接收器。

在多主机系统中,可能同时有几个主机企图启动总线传送数据,为了避免混乱,IIC总线要通过总线仲裁,以决定由哪个主机控制总线。

在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其他接口器件为从机的单主机情况;

 

 

IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

起始信号和终止信号:

SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。

起始信号完了之后才能传输数据,当发送完终止信号之后就是告诉设备我要传输的数据已经传输完毕;

当下一次要进行传输数据的时候还要重新发送起始信号;就是说当有一个起始信号之后,就可以一直发送数据,但是当不想发送数据时,要发送一个终止信号。

起始和终止信号都是由主机发送的,在起始信号产生后,总线就处于被占用的状态,在终止信号产生后,总线就处于空闲状态;

    连接到IIC总线上的器件,若具有IIC总线的硬件接口,则很容易检测到起始和终止信号;

           接收器件收到一个完整的数据字节后,有可能需要完成一些其他工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态,直到接收器件准备好接收下一个字节时,再释放SCL线使之成为高电平,从而使数据传送可以继续进行;。

 

 

起始程序:

void start()
{
    sda = 1;
    delay();
    scl = 1;
    delay();
    sda = 0;
    delay();
}//开始信号

终止程序:

void stop()
{
    sda = 0;
    delay();
    scl = 1;
    delay();
    sda = 1;
    delay();
}//停止

此时lesson9_00:22:31;;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值