🍌
🍌🍌
作者简介:大家好啊,我叫DW,每天分享一些我新学到的知识,期待和大家一起进步
🍋
🍋🍋
系列专栏:STM32
开发板:STM32F103🍊如有写得不好的地方欢迎大家指正🍊
创作时间:🍊🍊🍊2022年7月3日🍊🍊🍊
I2C(Inter-Integrated Circuit BUS) 为集成电路总线,该总线由NXP公司设计,多用于主控制器和从器件间的主从通信。IIC和SPI接口严格的说他们都是人们所定义的软硬结合体,分为物理层和协议层。
SDA(Serial data)是数据线,它是用来传输数据的。
SCL(Serial clock line)是时钟线,它是控制数据发送的时序的 。
I2C最重要的三个点为:
1.起始与结束条件
2.应答和非应答
3.数据的有效性
下面,我将一一介绍如何使用这三个重要的知识点,由于涉及到SDA的输出和输入模式选择,故先配置它的输出和输入两种模式。
//模式配置 out input
void I2C_Mode(u8 addr){
GPIO_InitTypeDef GPIO_InitStructure;
if(addr){ //out
GPIO_InitStructure.GPIO_Pin = SDA;//PB0
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//输出速率
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
}
else{ //Input
GPIO_InitStructure.GPIO_Pin = SCL;//PB1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//推挽输出
}
GPIO_Init(I2C_PROT,&GPIO_InitStructure);//初始化引脚
}
1: 输出模式
0 :输入模式
起始和结束条件
1.当SCL为高电平的时候,SDA线上由高到低的跳变被定义为起始条件。
2.当SCL为高电平的时候,SDA线上由低到高的跳变被定义为停止条件。