打印
[其它应用]

BMS--SH367309实例IIC协议应用

[复制链接]
711|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
什么是IIC
IIC (Inter-Integrated Circuit), 通常发音为: I-squared-C,是多主、多从、分组交换、单工的串行总线,通常用于处理器或微控制器与低速外围器件的短距离通信连接。这个通信协议是由(NXP半导体的前生)飞利浦公司发明,并在2006年开始,I2C协议的实施不要许可费,但仍要收取I2C从机分配地址的费用。

使用特权

评论回复
沙发
狗啃模拟|  楼主 | 2023-8-28 23:14 | 只看该作者
IIC的特性
仅用两线连接;
不像RS232那样有着严格的波特率要求,而是由主设备(mater)产生时钟信号;
设备之间的主/从关系简单,每个设备都有软件给予的唯一地址;
IIC是一个真正的多主总线,提供仲裁和冲突检测的功能。

使用特权

评论回复
板凳
狗啃模拟|  楼主 | 2023-8-28 23:14 | 只看该作者
物理(电气)特性
只要求两条总线线路,一条是串行数据线SDA,一条是串行时钟线SCL,(IIC是半双工,而不是全双工)。

使用特权

评论回复
地板
狗啃模拟|  楼主 | 2023-8-28 23:15 | 只看该作者
每个连接到总线的器件都可以通过唯一的地址和其它器件通信,主机/从机角色和地址可配置,主机可以作为主机发送器和主机接收器。

使用特权

评论回复
5
狗啃模拟|  楼主 | 2023-8-28 23:15 | 只看该作者
IIC是真正的多主机总线,(而这个SPI在每次通信前都需要把主机定死,而IIC可以在通讯过程中,改变主机),如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏。

使用特权

评论回复
6
狗啃模拟|  楼主 | 2023-8-28 23:15 | 只看该作者
传输速率在标准模式下可以达到100kb/s,快速模式下可以达到400kb/s。

使用特权

评论回复
7
狗啃模拟|  楼主 | 2023-8-28 23:15 | 只看该作者
连接到总线的IC数量只是受到总线的最大负载电容400pf限制。

使用特权

评论回复
8
狗啃模拟|  楼主 | 2023-8-28 23:15 | 只看该作者
I2C通信设备之间只通过普通导线进行连接,比特流信号采用TTL/CMOS标准下的高/低电平来表示1/0信号,这一方式使得传输距离很短(本来设计目的就是用于短距离通信),直接连接的传输距离短达40cm。

使用特权

评论回复
9
狗啃模拟|  楼主 | 2023-8-28 23:15 | 只看该作者

使用特权

评论回复
10
狗啃模拟|  楼主 | 2023-8-28 23:15 | 只看该作者
IIC总线通信协议
       如下图所示,为IIC的通讯总线的协议数据格式。

使用特权

评论回复
11
狗啃模拟|  楼主 | 2023-8-28 23:16 | 只看该作者

使用特权

评论回复
12
狗啃模拟|  楼主 | 2023-8-28 23:16 | 只看该作者
开始和结束条件
I2C总线在待机状态时,SDA和SCL都处于高电平(两根线一般情况均接上拉电阻)。

使用特权

评论回复
13
狗啃模拟|  楼主 | 2023-8-28 23:16 | 只看该作者
当开始工作时,开始信号由主设备(master)发起,SDA先由高电平转为低电平,此时的SCL是高电平。此后,SDA和SCL便配合传输开始工作。

使用特权

评论回复
14
狗啃模拟|  楼主 | 2023-8-28 23:16 | 只看该作者
当停止工作时,在SCL处于高电平下,SDA由低电平转为高电平。

使用特权

评论回复
15
狗啃模拟|  楼主 | 2023-8-28 23:16 | 只看该作者
一位信号数据传递模式
IIC协议通过数据线SDA在SCL的配合下实现信息的有效传送。每条线均可产生5V/0V或3.3V/0V的高低电平(也可以是其它方式,常用TTL和CMOS的电平模式),如图所示,每当时钟线SCL产生高电平时,SDA所产生的电平信号为当前时钟周期下传输的有效信号;而当SCL为低电平时,SDA可改变,以产生下一周期的传输信号。

使用特权

评论回复
16
狗啃模拟|  楼主 | 2023-8-28 23:16 | 只看该作者

使用特权

评论回复
17
狗啃模拟|  楼主 | 2023-8-28 23:16 | 只看该作者
IIC数据含义解析
     IIC协议里面数据主要包括两部分:addr数据+data数据。

使用特权

评论回复
18
狗啃模拟|  楼主 | 2023-8-28 23:17 | 只看该作者
数据模式:

                   [ 开始 +(7位地址+1位读写+1位ACK)+(8位数据+1位ACK/NACK)*n+停止 ]

使用特权

评论回复
19
狗啃模拟|  楼主 | 2023-8-28 23:17 | 只看该作者
注意:

     1、在传输过程中,每传输8位后,要通过一个ACK位进行相互确认。在读和写数据的过程中,ACK的来源是不一样的。

使用特权

评论回复
20
狗啃模拟|  楼主 | 2023-8-28 23:17 | 只看该作者
2、写数据的时候是从设备会返回一个ACK值(低电平)以响应已获得数据。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

690

帖子

0

粉丝