STM32F4-------I2C通信

本文介绍了STM32F4芯片在I2C通信中的应用,包括I2C协议的基本概念如空闲状态、起始和停止信号、应答信号ACK、数据有效性以及详细的数据传输过程。
摘要由CSDN通过智能技术生成

STM32F4-------I2C通信

I2C:两线式串行总线,是由数据线SDA和时钟线SCL构成的串行总线,是一种半双工通信方式。

数据线SDA有时需要用做输入,有时需用做输出。需要通过MODER寄存器进行配置;

#define SDA_IN()  {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;}
#define IIC_SCL    PBout(8) //SCL
#define IIC_SDA    PBout(9) //SDA输出	 
#define READ_SDA   PBin(9)  //SDA输入

I2C协议

  1. 空闲状态;
  2. 起始信号和停止信号;
  3. 应答信号ACK;
  4. 数据的有效性;
  5. 数据传输;

1.空闲状态

数据线SDA和时钟线SCL同时处于高电平时,为I2C总线的空闲状态。

IIC_SDA = 1;
IIC_SCL = 1;

2.起始信号和停止信号

起始信号:在时钟线SCL为高电平时,数据线SDA由高跳变至低;
停止信号:在时钟线SCL为高电平时,数据线SDA由低跳变至高;
这两种信号是一种电平跳变时序信号,而不是一个电平信号。
在这里插入图片描述

//起始信号
void IIC_Start(void)
{
   
	SDA_OUT(); 
	IIC_SDA = 1;
	IIC_SCL = 1;
	delay_us(4);
	IIC_SDA = 0;
	delay_us(4);
	IIC_SCL = 
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值