历史上的今天
返回首页

历史上的今天

今天是:2025年12月14日(星期日)

2022年12月14日 | STM32 IIC实验讲解,从入门到放弃。

2022-12-14 来源:zhihu

一、IIC

IIC是什么?

IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、 IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上。这种总线类型是由飞利浦半导体公司(后被NXP收购)在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。多主多从的通讯协议。所以 它是半双工通信方式。 关于通信方式,可以查阅我的另一篇博文:STM32串口实验,从入门到放弃。

优点一:简单性和有效性。

优点二:多主控

IIC串行总线有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。对于并联在一条总线上的每个IC都有唯一的地址(这个在后面有用)。

一般情况下,数据线SDA和时钟线SCL都是处于上拉电阻状态(在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平)。

IIC协议

开始之前,我们先了解一下下面的部分:

①空闲状态
②开始信号
③停止信号
④应答信号
⑤数据有效性
⑥数据的传输

空闲状态

总线的空闲状态规定为:IIC总线的SDA和SCL两条信号线同时为高电平。此时的各个期间的输出及场效应均处于截至状态,即释放总线,由两条信号线各自将上拉电阻把电平拉高。

开始信号和停止信号

开始信号:当SCL线是高电平时,SDA线从高电平向低电平跳变,开始传送数据。(注意:启动信号是一种电平跳变时序信号,而不是一个电平信号。)

停止信号:当SCL线是高电平时, SDA 由低电平向高电平跳变,结束传送数据。(注意:停止信号也是一种电平跳变时序信号,而不是一个电平信号。)

应答信号(ACK)

发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。
对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

数据有效性

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
即:数据在SCL的上升沿到来之前就需准备好。并在在下降沿到来之前必须稳定。

数据传输

在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。

IIC总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(地址通过物理接地或者拉高),主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I2C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。

也就是说,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。

拿24C02举例

A0,A1,A2为器件地址线,WP为写保护引脚,SCL,SDA为二线串行接口,符合I2C总线协议。

写字节的时序:

读字节的时序:

关于延时时间


推荐阅读

史海拾趣

亿晶源(ekinglux)公司的发展小趣事

亿晶源(EKINGLUX)公司成立于2005年,总部位于深圳。创始人凭借对LED半导体行业的深刻理解和敏锐的市场洞察力,决定在这一领域深耕。公司成立之初,面临资金、技术和市场的多重挑战,但团队凭借不懈的努力和坚定的信念,逐步在市场中站稳脚跟。

FILTRAN公司的发展小趣事

面对不断变化的市场环境和客户需求,亿晶源始终保持敏锐的市场洞察力和创新精神。公司将继续加大研发投入,推出更多具有竞争力的新产品;同时,加强与国际知名企业的合作与交流,提升公司的国际竞争力。展望未来,亿晶源将致力于成为全球领先的LED半导体制造商之一。

请注意,以上故事框架仅为示例,具体细节和事实可能需要根据实际情况进行调整和补充。

Concord Semiconductor Corp公司的发展小趣事

Concord Semiconductor Corp深知人才是企业发展的根本。因此,公司高度重视人才培养和引进工作。公司建立了一套完善的人才培养机制,通过内部培训、外部引进等方式,不断提升员工的技能水平和综合素质。同时,公司还积极营造良好的工作氛围和企业文化,吸引更多优秀人才加入。这些人才的加入为公司的持续发展提供了有力保障。

Allied Electronic & Semiconductor Technology Inc公司的发展小趣事

近年来,电子行业正经历着深刻的变革,传统半导体市场逐渐饱和,新兴领域如物联网、人工智能等蓬勃发展。面对这一行业变革,AE&ST公司果断进行转型升级。公司调整战略方向,加大在新兴领域的研发投入,同时优化生产流程,降低成本。通过一系列的改革措施,AE&ST公司成功实现了从传统半导体制造商向新兴技术领域的转型。

Hong Kong X'Tals Ltd公司的发展小趣事
选择合适的电阻和电容,以确保定时精度和电路稳定性。同时,注意元件的温漂和老化对定时时间的影响。
Clever Little Box公司的发展小趣事

Clever Little Box公司成立于1964年,当时正值电子行业的蓬勃发展时期。创始人凭借对音频和电子技术的深厚理解,以及对市场的敏锐洞察,决定成立这家公司,专注于音频和电子组件的分销。创业初期,公司面临着资金短缺、市场竞争激烈等诸多挑战,但创始人凭借坚定的信念和不懈的努力,逐渐在市场中站稳了脚跟。

问答坊 | AI 解惑

关于学电子的教材问题

想学好电子技术,希望各位介绍些好的教材.谢了!…

查看全部问答>

CAB打包dll文件

请问,如果想把dll文件打包到CAB包中,应该如何编写inf文件…

查看全部问答>

"经典的DSP的C程序和汇编程序库/常用例程"——学习资料!!

http://sanhengxing.com/xzindex.asp 还有其他的关于等等单片机的资料,不知道有没有需要的,大家去看看吧! 关于 DSP DSP(digital singnal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件.其工作原理是接收模拟信号,转换为 ...…

查看全部问答>

Xilinx FPGA中如何接收双数据速率(DDR)数据

Xilinx FPGA中如何接收双数据速率(DDR)数据 各位大虾好:     请教大家一个问题:如题所示,在Xilinx FPGA中接收双数据速率(DDR)数据,一般情况下是如何做的?是用IDDR2原语吗?望高手给予指点,谢谢了…

查看全部问答>

引进设备供电、接地配置

现在很多的引进设备或者引进图纸很多输入电源配备。三相电源输入配有黄/绿线接外裸金属柜体以及电机外壳,机柜内控制部分另有隔离的变压器或变换器,次级要求输出有一端接地,接地的双色线不是黄/绿线是其他的双色线。遇到如此配线方式我们该如何的 ...…

查看全部问答>

EE_FPGA基础教程系列 --NO.2-- 建立第一个Quartus工程

[ 本帖最后由 xieqiang 于 2011-5-12 11:26 编辑 ]…

查看全部问答>

还不错的STM32入门教程

还不错的STM32入门教程 希望对新手会有些帮助 专营STM8/32 QQ 940436962 http://y-ec.taobao.com…

查看全部问答>

DS18B20多路温度采集

在用MSP430X15x采集多路DS18B20时是不是要先规定每一路18B20的地址?这个地址是根据什么规定的?看到的程序基本上都是采集一路的,在搜索ROM后还需要哪些改动…

查看全部问答>

msp430f2274的spi口问题

大家好,我现在在学习使用msp430f2274单片机,想两个SPI口同时应用。 但是发现UCA0CLK和UCB0STE复用,UCA0STE和UCB0CLK也复用。 这样情况下不知道是否可以同时应用两个SPI口。 恳请请各位有经验的朋友帮分析一下!谢谢…

查看全部问答>