I2C通信

一、I2C总线

1.I2C 总线

是由 PHILIPS 公司开发的两线式串行通信总线,一条串行数据线 SDA 和一条串行时钟线SCL,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。

2.I2C总线协议

在这里插入图片描述
① SDA和SCL都保持高电平表示“空闲”状态;

② 当SCL为高电平,SDA由高电平变为低电平时,产生“启动”条件;

③ 当SCL为高电平,SDA由低电平变为高电平时,产生“停止”条件;

④ 在通信过程中,SCL为低电平时允许SDA改变电平传送数据,SCL为高电平时读取数据;


3.I2C通信

(1)硬件连接

在这里插入图片描述
① SDA和SCL两条总线都被上拉电阻拉到 VCC,所有 I2C 设备都挂载在总线上,各设备的地位对等,都可作为主机或从机;

② 每个设备都可以把总线接到地拉低,却不许把总线电平直连 VCC而置高;

③ 把总线电平拉低称为占用总线,总线电平为高等待被拉低则称为总线被释放;

(2)I2C协议帧格式

在这里插入图片描述
① I2C总线数据传输为字节格式,发送到SDA上的每个字节必须为8位,先传输最高位(MSB),每个字节后都要跟一应答信号(ACK,从机发出);

② “启动”信号后的第一个字节,高七位表示从机地址,第八位决定信号的传输方向,如果是‘0’表示主机向从机写数据,如果是‘1’表示主机由从机读数据;

③ 主机发出第一帧地址和读写位后,地址符合的从机拉低总线,产生 ACK 应答信号。主机开始收或发(视 R/W)下一帧,直到产生停止位。这期间,其他从机不接收数据,仅判断停止位是否出现,等待下一次比对地址通信的机会。

(3)补充规定

① 从机往主机发送信息,主机突发情况需要和其他从机通信:
主机可以直接重新给起始信号,称为 Repeated Start。Repeated Start 后,主机发出新的地址,重新选择从机通信。
在这里插入图片描述
② 多个设备同时争夺总线控制权(仲裁)
与小地址通信优先:谁打算与地址小的从机通信,谁占总线。一个大地址和一个小地址同时“输出”到数据总线上,数据总线表现出来的只能是小地址。
在这里插入图片描述



二、I2C应用之DAC实验

1. 基本介绍

MSP430F5529通过I2C通信方式给DAC芯片DAC7571写入数字量,该芯片输出该数字量对应的模拟量。

2. 实验原理

(1)DAC

数模转换模块:是将数字量转换为模拟电量(电流或电压),使输出的模拟电量与输入的数字量成正比。D/A转换器基本由四个部分构成:基准电压源、权电阻网络、模拟开关、运算放大器。数字量以串行或并行方式输入,存储于数字寄存器中,数字寄存器输出的各位数码分别控制对应位的模拟电子开关,使数码为 1 的位在位权网络上产生与其权值成正比的电压值,再由求和电路将各种权值相加,即得到数字量对应的模拟量。

(2)DAC7571

在这里插入图片描述
在这里插入图片描述

1)输入:

① 供电电压Vdd:2.7~5.5V;

② 通信方式:I2C,且规定只能接收数据;

③ 逻辑电平:
在这里插入图片描述
在这里插入图片描述

2)输出:

① 建立时间(Settling Time):10 µs to ±0.003%FS;

② 输出电压: 轨对轨输出,0~Vdd;

③ 精度:12位数模转换器;

3)其他性能:

① 单通道,低功耗:在Vdd=5V时,输出功耗小于0.7mW;

② “Power On Reset”:电源复位电路,保证DAC输出功率为0直到有效数据写入,可用于在电源启动过程了解DAC的输出状态;

③ “Power Down Control Logic”:通过第二个字节的控制字(改变PD0,PD1)修改工作模式。
在这里插入图片描述

4)数据传输格式

在这里插入图片描述
当电源关闭模式被激活时,所有线性电路都被关闭。 当断电时,DAC寄存器的内容不受影响。 退出断电所需的时间通常是 2.5µ(VDD=5V)和5µs(VDD=3V)。优点在于断电模式下,设备的输出阻抗是已知的。

5)数据传输模式

Standard Mode (100 kbit/s), Fast Mode (400 kbit/s) and High-Speed Mode (3.4 Mbit/s).
在这里插入图片描述
在这里插入图片描述



三、I2C应用之温度压力传感器实验

1. 基本介绍

使用一个已经集成好的传感器模块,对传感器感知的温度、压力等进行读取显示。本实验难度在于对I2C的理解和代码的编写。

2.实验原理

在这里插入图片描述
补充
① 数据传输流程:主机向传感器芯片通过I2C向从机发送写信号,写入从从机读取数据的寄存器地址,主机向传感器芯片发送读信号,主机从从机读数据;

② 数据读写的时候,只能按16位进行,传输时,先传低8位,再传高8位,传送8位过程中先传最高位(MSB)

③ 芯片提供标准和CRC检测两种模式,但CRC略显复杂,没有试验;

3. 实验内容

(1)试验现象

压力传感器不施加压力
在这里插入图片描述

压力传感器用手施加压力
在这里插入图片描述

(2)试验小结:

① I2C用GPIO模拟时钟的时候注意要上拉电阻,阻值和时钟频率有关,一般采用外部硬件上拉;并且注意时钟频率不要过高,具体看芯片和协议;

② 测试方法:用示波器单次触发捕捉波形,同时信号前后用软件延时长一些把不同次的信号隔开便于观察;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值