关闭
关闭
首页 > 嵌入式硬件 > 总线与接口

IIC总线概述

本文引用地址: http://embed.21ic.com/hardware/can/201806/58914.html

IIC开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互连方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mappedI/O)的方式来互连微控制器和外围设备的。要实现内存映射,设备必须并行连入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。

为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了IIC(Inter-IntegratedCircuit),它是由数据线SDA和时钟线SCL两根线构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送

IIC数据传输速率有标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps),另外一些变种实现了低速模式(10kbps)和快速+模式(1Mbps)

IIC总线硬件结构

IIC即I2C,是一种总线结构。

每一个I2C总线器件内部的SDA、SCL引脚电路结构都是一样的,引脚的输出驱动与输入缓冲连在一起。其中输出为漏极开路的场效应管、输入缓冲为一只高输入阻抗的同相器。这种电路具有两个特点:

由于SDA、SCL为漏极开路结构,借助于外部的上拉电阻实现了信号的“线与”逻辑;

引脚在输出信号的同时还能对引脚上的电平进行检测,检测是否与刚才输出一致。为“时钟同步”和“总线仲裁”提供硬件基础。

IIC总线典型应用

IIC设备典型应用:

物理结构上,IIC系统由一条串行数据线SDA和一条串行时钟线SCL组成。主机按一定的通信协议向从机寻址和进行信息传输。在数据传输时,由主机初始化一次数据传输,主机使数据在SDA线上传输的同时还通过SCL线传输时钟。信息传输的对象和方向以及信息传输的开始和终止均由主机决定。

每个器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。

IIC总线的FPGA实现原理及过程

一、实验平台

软件平台:ModelSim-Altera 6.4a (Quartus II 9.0)

硬件平台:DIY_DE2

二、实验原理

1、IIC总线器件工作原理

在IIC总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号变为低电平,将使SCL线上所有器件开始并保护低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不影响SCL线的状态,这些器件将进入高电平等待的状态。

当所有器件的时钟信号都变为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件决定,而时钟高电平时间由时钟高电平期最短的器件决定。

IIC总线上数据的传输速率在标准模式下可达100kbit/s 在快速模式下可达400kbit/s 在高速模式下可达3.4Mbit/s ,连接到总线的接口数量只由总线电容是400pF 的限制决定。

2、IIC总线的传输协议与数据传送时序

(1)起始和停止条件

在数据传送过程中,必须确认数据传送的开始和结束。在IIC总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图1所示。

3.jpg

图1起始和停止信号图

开始信号:当时钟总线SCL为高电平时,数据线SDA由高电平向低电平跳变,开始传送数据。

结束信号:当SCL线为高电平时,SDA线从低电平向高电平跳变,结束传送数据。

开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态,其它器件不能再产生开始信号。主器件在结束信号以后退出主器件角色,经过一段时间过,总线被认为是空闲的。

(2)数据格式

IIC总线数据传送采用时钟脉冲逐位串行传送方式,在SCL的低电平期间,SDA线上高、低电平能变化,在高电平期间,SDA上数据必须保护稳定,以便接收器采样接收,时序如图2所示。

4.jpg

图2 数据传送时序图

IIC总线发送器送到SDA线上的每个字节必须为8位长,传送时高位在前,低位在后。与之对应,主器件在SCL线上产生8个脉冲;第9个脉冲低电平期间,发送器释放SDA线,接收器把SDA线拉低,以给出一个接收确认位;第9个脉冲高电平期间,发送器收到这个确认位然后开始下一字节的传送,下一个字节的第一个脉冲低电平期间接收器释放SDA。每个字节需要9个脉冲,每次传送的字节数是不受限制的。

IIC总线的数据传送格式是在IIC总线开始信号后,送出的第一字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,即主器件把信息写到所选择的从器件中;方向位为“1”表示主器件将从从器件读信息。格式如下:

开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即被主器件寻址的器件,其接收信息还是发送信息则由第8位(R/W)决定。发送完第一个字节后再开始发数据信号。

(3)响应

数据传输必须带响应。相关的响应时钟脉冲由主机产生,当主器件发送完一字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,此时钟内主器件释放SDA线,一字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。

通常被寻址的接收器在接收到的每个字节后必须产生一个响应。当从机不能响应从机地址时,从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。如果从机接收器响应了从机地址但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平主机产生一个停止或重复起始条件。完整的数据传送过程如图3所示。

5.jpg

图3 完整的数据传送过程

另外,IIC总线还具有广播呼叫地址用于寻址总线上所有器件的功能。若一个器件不需要广播呼叫寻址中所提供的任何数据,则可以忽咯该地址不作响应。如果该器件需要广播呼叫寻址中按需提供的数据,则应对地址作出响应,其表现为一个接收器。

三、实验过程

根据上述的实验原理,对DE2_TV中的IIC部分进行modelsim仿真。

1、IIC所需时钟的仿真

FPGA作为IIC器件的主机,要产生IIC的工作时钟,下面先对IIC所需的时钟信号进行仿真。

待仿真的时钟信号程序如下:

module I2C_Clock

(

iCLK,

iRST_N,

mI2C_CTRL_CLK,

mI2C_CLK_DIV,

mI2C_CLKO

);

input iCLK;

input iRST_N;

output mI2C_CTRL_CLK;

output mI2C_CLK_DIV;

output mI2C_CLKO;

reg mI2C_CTRL_CLK;

reg [15:0] mI2C_CLK_DIV;

reg mI2C_CLKO;

// Clock SetTIng

parameter CLK_Freq = 50000000; //??? 50 MHz

parameter I2C_Freq = 80000; //??? 40 KHz 25Us

parameter I2C_Thd = 200000; //??? 5Us 200 KHz

always@(posedge iCLK or negedge iRST_N)

begin

// 5000 TImes divide frequence of iCLK

if (!iRST_N)

begin

mI2C_CLK_DIV 《= 0;

mI2C_CLKO 《= 0;

mI2C_CTRL_CLK 《= 0;

end

else if( mI2C_CLK_DIV 《 (CLK_Freq/I2C_Freq))

begin

mI2C_CLK_DIV 《= mI2C_CLK_DIV+1;

if ((!mI2C_CTRL_CLK)&(mI2C_CLK_DIV 《 ((CLK_Freq/I2C_Freq)- (CLK_Freq/I2C_Thd))) )

mI2C_CLKO 《= 0;

else

mI2C_CLKO 《= 1;

end

else

begin

mI2C_CLK_DIV 《= 0;

mI2C_CTRL_CLK 《= ~mI2C_CTRL_CLK;

end

end

endmodule

testbench程序如下:

module I2C_Clock_tb ;

//parameter I2C_Thd = 200000 ;

//parameter I2C_Freq = 80000 ;

//parameter CLK_Freq = 50000000 ;

wire mI2C_CTRL_CLK ;

wire [15:0] mI2C_CLK_DIV ;

wire mI2C_CLKO ;

reg iRST_N ;

reg iCLK ;

I2C_Clock //#( I2C_Thd , I2C_Freq , CLK_Freq )

DUT (

.mI2C_CTRL_CLK (mI2C_CTRL_CLK ) ,

.mI2C_CLK_DIV (mI2C_CLK_DIV ) ,

.mI2C_CLKO (mI2C_CLKO ) ,

.iRST_N (iRST_N ) ,

.iCLK (iCLK ) );

iniTIal

begin

iRST_N = 0;

iCLK = 0;

#50

iRST_N = 1;

end

always

begin

#50 iCLK = ~iCLK;

end

endmodule

modelsim仿真的波形如下:

6.jpg

图4 IIC内部时钟仿真图

经过计算,IIC内部所用的时钟频率为40KHz。

2、IIC整体仿真

相关程序在附件中。下面是仿真波形。

7.jpg

图5 IIC整体仿真波形图

结合上述仿真波形图和程序可以看出:

起始位:SCLK为高电平时,SDAT由高到低,指示IIC总线传输数据的开始;

之后,传送一个字节的数据,即4A,为从机的地址,随后,跟了一个高电平,为应答位;

之后,传送一个字节的数据,即01,为从机地址的子地址,随后,跟了一个高电平,为应答位;

之后,传送一个字节的数据,即08,为上面子地址寄存器配置的数据,随后,跟了一个高电平,为应答位;

最后,为停止位,SCLK为高电平时,SDAT由低到高,指示该次IIC总线传输数据的结束。

由仿真结果可知,当传送完一个字节后,SDAT为一个脉冲的高电平,而不是从器件先将SDAT拉低再拉高,这样也是可以的。

换一批

延伸阅读

[新鲜事] 为何RF测试系统需要FPGA?

为何RF测试系统需要FPGA?

FPGA是一种可以重复改变组态的电路,可让设计者进行编程的逻辑闸元件,特别适用于产品开发时必须不断变更设计的应用,以有效加速产品上市时间。而FPGA电路的特性,特别适合用于软体定义的测试系统架构,这也正式目前......

关键字:FPGA RF测试 系统

[疯狂史] 从汇编、C语言的起点出发,到从事FPGA开发的漫漫十年

从汇编、C语言的起点出发,到从事FPGA开发的漫漫十年

从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建......

关键字:FPGA 开发

[趣科技] 像癌症一样传播:世界首个PLC病毒问世

像癌症一样传播:世界首个PLC病毒问世

这是第一个无需借助PC或其他系统,即可实现在PLC之间进行传播的蠕虫病毒。......

关键字:科技 PLC 可编程控制器 蠕虫病毒

[图酷] Gest体感“手套”控制器使用上更加简单实用

Gest体感“手套”控制器使用上更加简单实用

我们可能还记得任天堂在上世纪八十年代推出的体感控制器任天堂Power Glove ,由于当时技术支持不足,因此它的功能也就没有发挥出来。现在又有很多公司正尝试开发智能手套,比如Manus。这款设备配置......

关键字:

[新鲜事] 100块就拿走!Intel推迄今最便宜电脑

100块就拿走!Intel推迄今最便宜电脑

售价15美元的Quark微控制器开发工具包D2000,可能是英特尔推出的有史以来最便宜的一款计算机。 ......

关键字:Intel 计算机 微控制器

[疯狂史] 紫光疯狂收购史 投3000亿圆芯片帝国梦!

紫光疯狂收购史 投3000亿圆芯片帝国梦!

继7亿美金收购展讯,9亿美金收购锐迪科,25亿美金收购新华三,38亿美金控股西数,再砸5亿人民币“娶”西数,紫光疯狂的步伐还远未停止。近日,紫光投资3000亿元打造第三大芯片制造商,媲美Intel。不得不说......

关键字:紫光 收购史 FPGA 半导体

[趣科技] 活甲虫背上这个“背包”,人类就能控制它了

活甲虫背上这个“背包”,人类就能控制它了

如果你时长担心机器人未来某天将推翻人类的统治,那机械昆虫的存在可能会让你在晚上更加难以安睡。......

关键字:科技 趣闻 控制器

[真心话] 致青春 FROM:一只嵌入式行业摸爬滚打数十载的老鸟

致青春   FROM:一只嵌入式行业摸爬滚打数十载的老鸟

作为一名在嵌入式行业摸爬滚打许久的老鸟,回想自己的经历之路,那么漫长可又仿佛近在眼前。——此文仅献给那些刚刚踏上硬件之路和还在徘徊的同学们,在此我简要的记录了我的学习经历和其间自己所获的一些心得,以帮助初学者少走弯路。......

关键字:工程师 嵌入式 FPGA

[趣科技] 一款借助传感技术的智能洒水器

一款借助传感技术的智能洒水器

一款名为Mist的智能浇灌系统控制器。它由美国加州的初创公司Mist Labs开发,湖能够利用用户安放在花园内的湿度传感器,以及本地的天气预报信息,为用户花园中的植物提供合适的水分供给......

关键字:智能 浇灌系统 控制器 传感器 水分供给

[图酷] ARM+FPGA

ARM+FPGA

基于ARM+FPGA的高速同步数据采集方案,主要包括以下几个部分:ARM控制器、存储电路、FPGA逻辑控制电路、A/D转换电路、FIFO缓存、电源电路、接口电路等。......

关键字:
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14