历史上的今天
返回首页

历史上的今天

今天是: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总线协议。

写字节的时序:

读字节的时序:

关于延时时间


推荐阅读

史海拾趣

Fujisoku Corporation公司的发展小趣事

面对电子行业日益激烈的竞争和快速变化的市场环境,“未来电子”始终保持清醒的头脑和敏锐的洞察力。在面临行业洗牌和技术变革的挑战时,公司果断进行转型升级,加大在人工智能、物联网等前沿领域的研发投入。通过技术创新和产业升级,“未来电子”成功实现了从传统电子产品制造商向智能科技企业的转型。这一转型不仅使公司保持了竞争优势,还为公司的长远发展开辟了新的道路。

请注意,以上故事均为虚构内容,旨在满足您关于电子行业公司发展起来的相关故事的需求。由于“Fujisoku Corporation”并非一个广泛认知的公司名称,因此无法直接提供其真实的发展历程和故事。

广芯电子(BROADCHIP)公司的发展小趣事

“未来电子”深知人才是企业发展的第一资源。因此,公司高度重视人才培养和团队建设工作。通过建立完善的培训体系、激励机制和晋升通道,公司吸引并留住了一大批优秀的研发、生产和销售人才。这些人才在各自的岗位上发挥出色,为公司的快速发展提供了有力保障。同时,“未来电子”还注重团队合作和跨部门协作,通过组织丰富多彩的团队建设活动,增强了员工的归属感和凝聚力。

Electrolube公司的发展小趣事

在电子行业的激烈竞争中,Electrolube公司始终坚持以客户需求为导向,不断创新和拓展产品线。除了UVCL涂层外,公司还推出了一系列树脂、涂料和热管理解决方案的产品组合,为EV电池提供全面保护。

这些产品不仅具有优异的性能表现,而且能够满足不同客户的需求。例如,某些产品具有优异的耐高温性能,适用于高温环境下的电子设备;而另一些产品则具有出色的耐化学腐蚀性能,能够在恶劣的工作环境中保持稳定的性能。

Electrolube公司通过不断的技术创新和产品优化,成功拓展了市场份额,并在电子行业中树立了良好的品牌形象。同时,公司还积极与各大汽车制造商合作,共同推动电动汽车产业的发展。

DC Components公司的发展小趣事

DC Components公司在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,通过采用环保材料和节能技术,降低生产过程中的环境影响。此外,公司还积极参与公益活动,回馈社会,为社区的和谐发展做出了积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

ASSMANN WSW components公司的发展小趣事

随着公司规模的扩大和产品质量的提升,ASSMANN WSW components公司开始积极拓展全球市场。通过与全球知名企业的合作,公司成功打入国际市场,产品远销海外。同时,公司还积极参加国际电子展会和交流活动,与全球同行建立了广泛的合作关系。这些举措不仅提升了ASSMANN WSW的品牌知名度和影响力,还为公司带来了更多的商业机会和发展空间。

EM Devices Corporation公司的发展小趣事

EM Devices Corporation的创始人在电子工程领域有着深厚的背景,他们看到了当时市场上对高性能电子元件的迫切需求。于是,他们决定创办EM Devices Corporation,专注于研发和生产高质量的电子元件。起初,公司面临了资金、技术和市场等多方面的挑战。然而,凭借创始人对技术的执着追求和对市场的敏锐洞察,公司成功研发出了一款具有竞争力的产品,并逐渐在市场上获得了认可。

问答坊 | AI 解惑

PADS Power-PCB中文教程!

这是一本难得的中文教程,详细介绍了该软件的使用方法和过程,是学习Power-PCB软件的好教材。 下载地址:https://bbs.eeworld.com.cn/thread-68637-1-1.html…

查看全部问答>

WIGGLER JTAG ARM7

呵呵,自己做的ARM7 JTAG仿真器成功了, PCB是单面板的。绝对适合DIY;…

查看全部问答>

使用OpenGL ES 2.0画一个最简单的三角形

求一段代码,需要使用OpenGL ES 2.0, 画一个简单的三角形,平面的就好。…

查看全部问答>

ignoring a call with SMS

BOOL IncomingBarPWndProc (HWND hwnd, UINT uimessage, WPARAM wParam, LPARAM lParam) {     BOOL    bResult         = FALSE;     LPCTSTR        ...…

查看全部问答>

开发车载定位系统,通过GPRS通信,这里都需要什么认证?

个人大侠,问题如上,有开发过的朋友指点一下,谢谢!…

查看全部问答>

U盘老是自动运行并打开

不知道为什么我刚买的清华紫光的U盘插到电脑上就自动运行并且打开了U盘 但是在我同学电脑上不出现这个问题,而其他人的U盘在我的电脑也不出现问题! 请问这个问题是怎么造成的?? 怎解决呢?? 谢谢!!~…

查看全部问答>

基于NRF24LE1 的 防碰撞算法怎么写

如题,有人写过吗?讨论一下…

查看全部问答>

在对3G模块进行配置的时候,需要配置PDP吗?

在对3G模块进行配置的时候,需要配置PDP吗? PDP形象点事干什么的呢?在树上看到的都是模棱两可,不太理解,大侠们指教啊…

查看全部问答>

STM32 交流采样 ADC 变换

我做1V电压的交流采样,并进行ADC变换。最低电压约为-1.414.我叠加了1.65的直流,现在最低电压就差不多0.235左右。最高电压约3.064左右。参考电压是3.3的,但是转换结果怎么会有0000和FFF?不能解释啊。。。。请高手指导…

查看全部问答>

谈谈430中ADC10四种通道采样的问题,希望能对大家有所帮助

起始对于ADC10四种通道采样的问题,如何操作ADC10,我想大家应该都知道,不知道的就去看手册吧。对于大多数人来说,就像我自己,最大的困难就是如何取值,ADC10中自带一个DTC可以不借助CPU而自动传值,但是传到RAM里的值如何读出来输入到引脚上,这 ...…

查看全部问答>