STM32(9):I2C总线原理及应用编程

本文介绍了STM32中I2C总线的基本原理,包括空闲状态、起始和停止信号的定义,以及数据传输的规则。通过分析波形图,解释了数据有效性的条件,并探讨了如何编写代码实现数据的发送和接收。强调在嵌入式编程中理解硬件原理的重要性,以及位操作的常见应用。
摘要由CSDN通过智能技术生成

直接上实战。
I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。
它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。

IIC是半双工通信方式。

IIC就是一种通信方式。
IIC是MCU里面存在,然后与之通信的器件也存在的。
在这里插入图片描述SDA是数据线,
SCL则是时钟线之类的。

这里直接讲IIC的几种状态。

1.空闲状态
I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

2.起始信号
起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。

代码如下

void Iic_Start(void)
{
   
	//模式输出
	Iic_Mode(GPIO_Mode_OUT);
	
	SCL		 = 1;
	SDA_OUT  = 1;
	delay_us(5);
	
	SDA_OUT = 0;
	delay_us(5);
	
	//SDA与SCL为低钳住总线
	SCL		= 0;

}

这里有个疑惑就是为什么最后SDA也要变成低电平。这里就要说到看图来编程了,嵌入式这一块不仅仅是看文字说明就行了的,还需要看一下波形图。
在这里插入图片描述
看图就会发现,最后SDA会在SCL变低电平之后也变成低电平。

3.停止信号
停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。
有了上面的经验,这次是要想看波形图的。
在这里插入图片描述

void Iic_Stop(void)
{
   
	//模式输出
	Iic_Mode(GPIO_Mode_OUT
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值