IIC学习笔记


一、IIC总线结构

由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据(半双工)
一主多从模式,即总线上挂载多个从机,每个从机均有其固定地址。
在这里插入图片描述

二、IIC协议

(1)空闲状态

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

(2)起始信号与停止信号

开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
在这里插入图片描述

(3)应答信号ACK

接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据,即在发送器(CPU)发送一个字节单元之后,在时钟脉冲9期间释放数据线,等待接收器反馈信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。应答信号一般为SDA低电平。
在这里插入图片描述

(4)数据传输

数据在上升沿到来之前就要准备好,且在SCL高电平期间保持稳定(不稳定有变化的话就变成了开始信号或者结束信号),在传输过程中,高电平期间是啥电平就是传输啥电平,其中,一帧数据最先发送最高位
在这里插入图片描述

二.IIC底层驱动

以EEPROM(24C02)为例
正点原子例程里没有采用stm32自带的IIC模块,采用两个IO口实现IIC时序

24C02读写时序

写时序:
在这里插入图片描述
读时序:
在这里插入图片描述

器件地址

器件地址高四位默认为0xA(1010),低四位前三位A2、A1、A0用于器件寻址,第四位为读写控制

驱动程序

//产生IIC起始信号
void IIC_Start(void)
{
   
	SDA_OUT();   //sda线输出,这里是对IO口方向设置,此时为对从机设备(24C02)进行输出,所以设置为输出
	IIC_SDA=1;	  	  
	IIC_SCL=1;
	delay_us(4);
 	IIC_SDA=0;//START:when CLK is high,DATA change form high to low 
	delay_us(4);
	IIC_SCL=0;//钳住I2C总线,准备发送或接收数据 
}	  
//产生IIC停止信号
void IIC_Stop(void)
{
   
	SDA_OUT();//sda线输出
	IIC_SCL=0;
	IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
 	dela
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置IIC,你可以按照以下步骤进行操作: 1. 打开CubeMX并创建一个新的工程。 2. 在左上角输入你的芯片型号(比如STM32F103ZET6)。 3. 在出现的结果中,点击具体的芯片型号,进入mcu硬件资源配置的界面。 4. 在资源配置界面的第一部分(Pinout & Configuration)中,找到IIC(或者叫做I2C)的配置选项。根据你的需求,选择要使用的引脚和功能,并进行相应的配置。 5. 在时钟配置(Clock Configuration)中,设置适当的时钟频率和分频系数,以满足IIC通信的要求。 6. 完成配置后,生成代码并导入到你选择的IDE中进行开发。 以上是通过CubeMX进行IIC配置的一般步骤。具体的操作细节可能会根据不同的芯片型号和CubeMX版本有所差异。你可以参考引用和引用中提供的具体信息来进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [STM32CubeMX学习笔记5——I2C配置(OLED显示)](https://blog.csdn.net/qq_42967008/article/details/95675740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用STM32CubeMX创建STM32工程(串口,硬件IIC配置)](https://blog.csdn.net/weixin_42887621/article/details/128087643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值