IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯。

IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线接口,无需用户自己模拟,只需配置相关寄存器即可使用,但是,为了更好地理解IIC总线协议,可以自行按照IIC时序图进行模拟,加深理解。

IIC总线有两条串行线,其一是时钟线SCK,其二是数据线SDA。

在寻常的应用之中,单片机常常作为主机,外围器件作为从机使用。

每一个从机器件都拥有唯一的一个地址,这个地址在芯片手册上会有详细的介绍,一般还需要自行配置芯片管脚上的高低电平,来实现确定从机地址的目的。

硬件设计上,SCK线和SDA线通过典型的4.7K电阻进行上拉,保证两条线空闲时保持高电平状态。

SDA上的数据在SCK高电平期间必须稳定,SDA上的数据在SCK期间才可以被更改。

IIC总线的时序分析:

起始信号:在SCK高电平期间,SDA一个下降沿,即构成了IIC的起始信号。

终止信号:在SCK高电平期间,SDA一个上升沿,即构成了IIC的终止信号。

程序上的模拟如下所示:

1->IIC起始信号模拟程序:

 void IIC_start(void)
{
SCK=;
SDA=;
IIC_delay();
SDA=;
IIC_delay();
SCK=;
IIC_delay();
}

2->IIC终止信号模拟程序:

 void IIC_end(void)
{
SCK=;
SDA=;
IIC_delay();
SCK=;
IIC_delay();
SDA=;
IIC_delay();
}

IIC发送数据:
在IIC一次发送8位数据,数据发送时,总是高位在前,分8次传送出去。

IIC发送数据模拟程序:

 void IIC_write(unsigned char dat)
{
unsigned char temp;
for(temp=0x80;temp!=;temp>>=)
{
if(temp&dat==)
{
SDA=;
}
else
{
SDA=;
}
IIC_delay();
SCK=;
IIC_delay();
SCK=;
}
}

IIC接收应答模拟程序:

 bit Get_IIC_ack(void)
{
bit ack;
SDA=; //释放数据线,准备接收应答
SCK=;
if(SDA==)
{
ack=;//无应答信号
}
else
{
ack=;//有应答信号
}
SCK=;
IIC_delay();
return ack;
}

IIC读取数据模拟程序:

 unsigned char IIC_Read(void)
{
unsigned char temp;
unsigned char dat;
SDA=; //释放总线准备接收
for(temp=0x80;temp!=;temp>>=)
{
IIC_delay();
SCK=;
if(SDA==)
{
dat|=temp;
}
else
{
dat&=~temp;
}
SCK=;
}
return dat;
}

IIC非应答信号模拟程序:

void IIC_No_ack(void)
{
SDA=;
SCK=;
IIC_delay();
SCK=;
IIC_delay();
}

IIC应答信号模拟程序:

void IIC_ack(void)
{
SDA=;
SCK=;
IIC_delay();
SCK=;
IIC_delay();
}

模拟IIC协议时序的更多相关文章

  1. 模拟SPI协议时序

    SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制. 在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE). 所以,在以 ...

  2. IIC协议建模——读写EEPROM

    案例采用明德扬设计思想完成.IIC协议是非常常用的接口协议,在电子类岗位招聘要求中经常出现它的身影.关于IIC协议这里只做简要介绍,详细信息请自行百度或查阅相关Datasheet,网上资料非常多.该篇 ...

  3. IIC协议解释(转)

    IIC协议解释 推荐资源: http://m.elecfans.com/article/574049.html       and       https://blog.csdn.net/firefl ...

  4. IIC协议解释

    IIC协议解释 (1)概述 I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量 ...

  5. IIC协议解析

    (1)概述 I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距 ...

  6. stm32软件模拟IIC读取PX4FLOW光流传感器数据

    这段时间在做全国光电设计大赛,用到了px4的px4flow光流传感器,用软件模拟iic读取数据不定期会导致px4flow死机,查了资料和光流的源码,发现这个光流用了stm32的硬件iic,所以对软件模 ...

  7. FPGA基础设计(四):IIC协议

    很多数字传感器.数字控制的芯片(DDS.串行ADC.串行DAC)都是通过IIC总线来和控制器通信的.不过IIC协议仍然是一种慢速的通信方式,标准IIC速率为100kbit/s,快速模式速率为400kb ...

  8. 用I/O口模拟IIC总线协议遇到的一些问题

    最近做的一个项目,是基于IIC总线通信的传感器系统.由于另外一个传感器使用的是类IIC协议,而不是标准IIC,所以MCU不能与其通信,最后没有办法,只有通过I/O口模拟的方式实现IIC的总线通信.具体 ...

  9. 【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)(转载)

     版权声明:本文为博主原创文章,允许转载,但希望标注转载来源. https://blog.csdn.net/qq_38410730/article/details/80312357 IIC的基本介绍 ...

随机推荐

  1. 移动平台下的Socket几个问题

    在页游时代,使用Flash ActionScript 3.0进行开发,as3提供比较简单和健全的socket API.到了手游时代,基于tcp的socket编程遇到了一些棘手的问题.通常情况下手游都要 ...

  2. Spring Security(19)——对Acl的支持

    目录 1.1           准备工作 1.2           表功能介绍 1.2.1     表acl_sid 1.2.2     表acl_class 1.2.3     表acl_obj ...

  3. C# 语言规范_版本5.0 (第17章 特性)

    1. 特性 C# 语言的一个重要特征是使程序员能够为程序中定义的实体指定声明性信息.例如,类中方法的可访问性是通过使用 method-modifiers(public.protected.intern ...

  4. UNIX基础--磁盘组织

    磁盘组织 FreeBSD 查找文件的最小单位是文件名. 而文件名区分大小写,不凭文件扩展名去识别这个文件是 程序. 文档, 或是其他格式的数据. 在文件系统里目录和文件的作用是存储数据. 每一个文件系 ...

  5. 输入身份证号码自动读取生日与性别(delphi)

    一.格式介绍: [15位号码格式] 1.第l一6位数为行政区划代码; 2.第7-12位数为出生日期代码; 3.第13---15位数为分配顺序代码; (1).行政区划代码,是指公民第一次申领居民身份证时 ...

  6. LeetCode 328. Odd Even Linked List C#

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  7. Python--变量作用域

    变量作用域: 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量. 全局变量所有作用域都可读,局部变量只能在本函数可读 函数在读取变量时,优先读取函数本身自有的局部变量,再去读全局 ...

  8. es6--(三)set和map数据结构

    1.Set和WeakSet Set与数组相似,但是Set结构的成员必须是唯一的. WeakSet与对象类型,但是WeakSet结构的成员只能是对象 Set结构的实例属性和方法 属性: Set.prot ...

  9. 关于System.currentTimeMillis()

    一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s)1秒=1,000,000,000 纳秒(ns ...

  10. Webstrom 连接svn报错怎么解决

    Subversion: (Accessing URL:  https://192.168.1.249:8443/svn/H5/seif ) Received fatal alert: handshak ...