首页 > 其他分享 >stm32 - IIC

stm32 - IIC

时间:2024-07-18 19:18:59浏览次数:9  
标签:SCL 引脚 主机 总线 stm32 SDA IIC

目录

STM32-IIC

1. 基本概念

半双工同步通信的串行通信接口


2. 引脚说明

SDA

SCK/SCL


IIC 总线只需要两根引脚就可以实现通信,一根是数据线(SDA Serial Data),
另一根是时钟线(SCL Serial Clock)

在空闲状态下所有器件的时钟线(SCL)和数据线(SDA)都被总线的上拉电阻拉高,这样就可以把SDA引脚和SCL引脚设置为开漏模式即可,好处是防止短路。

思考:如果IIC总线上挂载了多个外围器件,如何与某一个器件进行单独通信?
器件地址

3. 传输方向

1. 在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。


2. 如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送。


3. 如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。

4. 通信过程


image

1. 空闲状态

image

点击查看代码
//3.空闲状态下SDA和SCL都为高电平
	IIC_SCL_WRITE(1);
	IIC_SDA_WRITE(1);

指的是不传输任何数据的时候就被称为空闲状态,IIC总线规定SDA数据线和SCL时钟线在不传输数据的时候都应该设置高电平,表示空闲。

2. 开始信号

image

点击查看代码
//IIC总线开始信号
void IIC_StartSignal(void)
{
	//1.设置SDA引脚为输出模式
	IIC_SDAOutputMode();
	
	//2.确保SDA和SCL为高电平
	IIC_SCL_WRITE(1);
	IIC_SDA_WRITE(1);
	Delay_us(5);            //提高程序可靠性
    
	//3.把SDA引脚拉低
	IIC_SDA_WRITE(0);
	Delay_us(5);   // IIC总线的通信速率为100KHZ  1000000us = 100000HZ  10us = 1HZ 
	
	//4.把SCL引脚拉低,表示准备通信
	IIC_SCL_WRITE(0);
}

开始信号由主机发出,表示打算和所有的从器件进行通信,IIC总线规定在SCL时钟线保持高电平期间,把SDA数据线拉低,表示开始信号。

3. 数据发送


在主机发送开始信号后,就可以发送数据或者地址,IIC总线规定数据的收发都是MSB(高位先出),由于只有一个数据线,所以IIC采用串行方式把数据的每个bit位发出去。


image
image

点击查看代码
//主机发送数据(从机读取数据)
void IIC_SendBytes(uint8_t Data)  
{
	uint8_t i= 0;
	
	//1.设置SDA引脚为输出模式
	IIC_SDAOutputMode();
	
	//2.确保SDA和SCL为低电平
	IIC_SCL_WRITE(0);
	IIC_SDA_WRITE(0);
	
	//3.循环发送bit
	for(i=0;i<8;i++)
	{
		//MSB 高位先出   主机准备数据
		if ( Data & 1<<(7-i) ) 
		{
			IIC_SDA_WRITE(1);
		}
		else
			IIC_SDA_WRITE(0);
		
		Delay_us(5);
		
		//SCL为高电平    主机发送数据
		IIC_SCL_WRITE(1);
		Delay_us(5);
		
		//SCL为低电平    主机准备数据
		IIC_SCL_WRITE(0);
		Delay_us(5);
	}


由于SCL提供的脉冲周期是有规律的,所以IIC总线规定只能在SCL脉冲周期的高电平期间进行数据的读取或者写入,在SCL脉冲周期的低电平期间可以进行数据的修改。

4. 应答信号


IIC总线增加了应答机制,在主机发送一个字节数据之后,从机在第9个脉冲周期进行应答,如果SDA为0,则表示应答,如果SDA=1,则表示无应答,如果从机没有应答,则主机应该发送停止信号,表示停止通信。

image

5. 数据接收


在主机发送开始信号后,就可以发送数据或者地址,IIC总线规定数据的收发都是MSB(高位先出),由于只有一个数据线,所以IIC采用串行方式把数据的每个bit位发出去。
image

由于SCL提供的脉冲周期是有规律的,所以IIC总线规定只能在SCL脉冲周期的高电平期间进行数据的读取或者写入,在SCL脉冲周期的低电平期间可以进行数据的修改。

6. 停止信号


停止信号由主机发出,表示不打算和从器件继续通信,IIC总线规定在SCL时钟线保持高电平期间,把SDA数据线拉高,表示停止信号。
image

标签:SCL,引脚,主机,总线,stm32,SDA,IIC
From: https://www.cnblogs.com/shishusheng/p/18295584

相关文章

  • STM32除IO脚的其他引脚功能说明 (尤其是VDD/VSS等电源引脚)
     二、详细介绍VBAT:备份区供电电压,1.65V≤VBAT≤3.6V。 此引脚主要为以下模块供电:1.    RTC实时时钟2.    外部低速时钟振荡器3.    备份寄存器和备份SRAM 为了在VDD断电后(系统断电,设备断电等)保留备份寄存器的内容,可以将VBAT引脚连接到电池或其他......
  • STM32寄存器操作、模板构建
    2024年7月18日发布于博客园,本文涉及到STM32F4XX和STM32F1XX系列目录外设寄存器查找①名称②偏移地址③寄存器位表④位功能说明寄存器基本操作C语言的置位和清零具体方法设置GPIO流程给寄存器赋值带参数宏STM32F1xx芯片识别存储器映射寄存器映射让GPIOB端口的16个引脚输......
  • STM32开发手册(1)
    前言:    不说废话只讲有用的。    如果你是完全在此之前没有这方面的基础的话。可以先从学习c语言(指针,结构体)等部分先进行一个初步了解以后再开始学习,这样会更好接受。    对于学习顺序的话,我是先上手的32,然后Arduino,最后是开始进行Linux的开发。51......
  • stm32F407SPI-RC522-NFC卡-移植
    目录stm32F407SPI-RC522-NFC卡-移植-简易版nfc卡的原理RC522读卡器的原理应用场景移植步骤好用的代码完整代码stm32F407SPI-RC522-NFC卡-移植-简易版学习spi,移植nfc卡的原理卡内有芯片,0区存卡的id原来要两重密码才能修改卡中数据RC522读卡器的原理应用场景移植步骤问淘......
  • 【STM32】RTT-Studio中HAL库开发教程四:DAC+DMA输出波形
    文章目录一、DAC介绍二、HAL库配置初始化三、RTT中初始化四、测试验证一、DAC介绍1.DAC作用DAC(Digital-to-AnalogConverter),即为数字/模拟转换模块,又称D/A转换器;作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与ADC相反。即为输出波形和输出固定电压......
  • IIC初了解
    引脚说明IIC需要俩根引脚可以实现通信,一根是SDA(SerialData),另一根是SCL(SerialClock)所有通过IIC接口通信的外围器件都挂载到IIC总线上。IIC的总线必须有主器件提供。每个从器件由于没有片选引脚,所以每个从器件都需要有自己独立的器件地址。SDA引脚和SCL的输出模式一般都要输......
  • 串口、IIC、SPI的优缺点
    串口、IIC、SPI的优缺点串口(SerialPort)串口通信是一种基本的串行通信方式,它通过串行数据线(TX和RX)进行数据的发送和接收。串口通信通常用于微控制器与PC或其他设备之间的通信。特点:简单易用,硬件实现成本低。通信速率较低,适合长距离通信。可以实现全双工通信(同时发送和接收......
  • STM32学习(1)--STM32介绍
    STM32介绍1.STM32简介2.ARM3.STM32F103C8T64.外设5.命名规则6.系统结构7.引脚定义8.启动配置9.最小系统电路课程知识及代码来源均来自b站江协科技,下学期即将做毕设,需要用到STM32单片机,在这个假期我将持续学习相关知识1.STM32简介STM32是ST公司基于ARMCortex-M内......
  • 中科微电子ATGM336H GPS定位模块STM32应用
    文章目录前言1.中科微电子ATGM336H的使用1.1ATGM336H引脚说明1.2数据帧介绍1.3经纬度介绍1.4ATGM336H的启动方式2数据处理前置C语言知识2.1strstr函数2.2memset函数2.3memcpy函数2.4strtod函数3.开始移植3.1usart初始化程序3.2串口中断接收函数3.4数据帧......
  • 零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码
    文章目录一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结一.......