IIC总线与A/D、D/A转换

IIC总线

IIC总线用来连接整体电路,集成IIC总线的可以挂接到IIC总线上,它作为一种多向控制总线,在一个总线上可以挂接多个芯片,每一个芯片都可以作为实时数据传输的控制源,从而简化了信号传输总线接口。

1、结构图如下:

其中有两根信号线,分别为双向的数据线SDA和时钟线SCL。器件的SDA和SCL与器件相应的SDA和SCL线相连接,SDA和SCL都利用了“线与”的关系起到相应的控制作用。在通信的过程中一个总线上一个时间点上只能有一个作为主控器,其他模块中一个作为被控器,实现之间相互的通信,其实好比一个人在对着一群人说话,但是由于主控器的命令是针对被控器一个的,为了能够唯一的指向被控器我们便规定每个模块都有自己唯一的一个地址与之对应,就如同每个人都有自己的一个唯一名字一样。主控器喊着某个模块,,该模块就接受主控器的信号。

2、IIC总线的状态

(1)总线空闲:

总线空闲状态是指:SCL = SDA = 1。当SCL和SDA都处于高电平的时候总线处于空闲,总线上没有进行信息传输。

(2)启动信号:

IIC总线的起始和终止信号的时序如下图所示:

在IIC总线通信的过程中要先发起一个起始信号,相当于发出一个通知:我要传输信号了。发出过程为:1、SDA置高电平。2、SCL置高电平。3、SDA置低电平,产生一个负跳变。起始信号发出成功。

(3)终止信号:

与启动信号类似,在发送完信号后要相应的终止IIC总线。对照上边时序图可知发出过程如下:1、SDA置低电平。2、SCL置高电平。3、SDA置高电平,从而产生一个正跳变。终止信号发出成功。

(4)总线封锁;

连接在IIC总线上的任何一个器件将SCL拉低就可以使总线处于封锁状态,在总线封锁状态下,总线不能进行通信。

(5)数据位传送:

既然IIC总线的作用是方便通信,便少不了数据的传送。如下是IIC总线的数据传送的时序图:

从时序中我们可以看出在SDA传送的每一个数据的过程中都有一个SCL时钟脉冲与之对应;在数据传送过程中SCL为高电平期间不允许SDA电平发生变化,因为这是被控器正在读取相应数据,否则会读取错误的数据。在SCL时钟线变为低电平后SDA数据线数据可以发生变化。

(6)应答信号:

为了保证通信的准确性,在主控器给被控器发送数据成功后被控器要相应的返回一个应答信号,以通知主控器数据传送成功与否。好比我给一个人说一句话后要求对法给我一个回复一样。有数据传送的时序图中可知在第九个脉冲时主控器要读取数据线数据,该数据就是被控器发出的应答位,低电平表示应答,高电平表示非应答信号。

A/D、D/A转换之——PCF8591

上边已经说了关于IIC总线的知识,PCF8591就是IIC总线的接口,下边就结合IIC总线相关知识对PCF8591进行说明。

PCF8591是一个A/D、D/A转换的芯片。

1、管脚定义及接线图:

引脚中AIN0~AIN3作为模拟输入(A/D转换);AOUT作为模拟输出(D/A转换);A0~A2为设备的地址(上边讲到的唯一地址);SCL和SDA为IIC总线的接口。

芯片在于单片机进行通信的过程中要发送相应的地址字节和控制字节。

2、地址字节如下:

其中A2、A1、A0是上边所提到的器件地址;R/W读写控制位。

3、控制字节如下:

其中D2、D1、D0用来控制四种模式的选择。D3、D4位用来控制输入的方式,不同的方式都有自己相应的特点。

4、通信协议及时序:

下图为PCF8591在于单片机通信过程中对应的时序。

有理想在的地方,地狱就是天堂

IIC总线与A/D、D/A转换

相关文章:

你感兴趣的文章:

标签云: