STM32系列 IIC资料总结1.pdf
文本预览下载声明
STM32系列 IIC通信资料总结1
I2C STM32 GPIO I2C
的协议就不讲了,网上多的很,我们关键在于利用 的 模拟出 :
I2C.h
#ifndef __IIC_H
#define __IIC_H
#include stm32f10x_lib.h
/*********************************************************
- I2C 宏定义:
- 软件模拟I2C时的管脚,用PC12模拟CLK,用PC11模拟SDA
- 所以在应用的时候,要打开GPIOC的时钟
*********************************************************/
#define IIC_SCL_PORT GPIOC
#define IIC_SCL_CLK RCC_APB2Periph_GPIOC
#define IIC_SCL_PIN GPIO_Pin_12
#define IIC_SDA_PORT GPIOC
#define IIC_SDA_CLK RCC_APB2Periph_GPIOC
#define IIC_SDA_PIN GPIO_Pin_11
/*********************************************************
- I2C宏定义:
- SDA方向设置:
-SDA_IN(): 此处是将SDA定义为配置为输入模式
-SDA_OUT():此处是将SDA_OUT配置为推挽输出模式
说明:这里是配置的快速写法,当然也可以用库函数初始化,
因为IIC的SDA线,即要作为输入也要作为输出。
*********************************************************/
#define SDA_IN() {GPIOC-CRH=0XFFFF0FFF;GPIOC-CRH|=812;}
#define SDA_OUT() {GPIOC-CRH=0XFFFF0FFF;GPIOC-CRH|=312;}
/*********************************************************
- I2C宏定义:
- I2C时钟操作:
- Set_IIC_SCL: 此处是将SCL拉为高电平
- Clr_IIC_SCL: 此处是将SCL拉为低电平
- 说明:通过这两个宏定义就可以模拟IIC的时钟电平SCL的高低变化了
*********************************************************/
#define Set_IIC_SCL {GPIO_SetBits(IIC_SCL_PORT,IIC_SCL_PIN);}
#define Clr_IIC_SCL {GPIO_ResetBits(IIC_SCL_PORT,IIC_SCL_PIN);}
/*********************************************************
- I2C宏定义:
- I2C数据线操作:
- Set_IIC_SDA: 此处是将SDA拉为高电平
- Clr_IIC_SDA: 此处是将SDA拉为低电平
- READ_SDA : 此处是读取SDA线上的位数据
- 说明:通过这两个宏定义就可以模拟IIC的数据线SDA电平的高低变化了
*********************************************************/
#define Set_IIC_SDA {GPIO_SetBits(IIC_SDA_PORT,IIC_SDA_PIN);}
#define Clr_IIC_SDA {GPIO_ResetBits(IIC_SDA_PORT,IIC_SDA_PIN);}
#define READ_SDA (GPIO_ReadInputDataBit(IIC_SDA_PORT, IIC_SDA_PIN))
/*********************************************************
- I2C模拟操作函数的声明:
*************************
显示全部