STM32F103读写24C02程序使用过肯定能用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned char pDat[8] = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
unsigned char R_Dat[8];
/*********************************声明函数-----------------------------------------------*/
字节数据发送函数
函数原型: void SendByte(UCHAR c);
功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
此状态பைடு நூலகம்进行操作.(不应答或非应答都使ack=0)
发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
********************************************************************/
Delay_us_24C02(1);
SCL(1); //SCL=1置时钟线为高,通知被控器开始接收数据位
Delay_us_24C02(5); //保证时钟高电平周期大于4μs
SCL(0);//SCL = 0
}
Delay_us_24C02(2);
SDA(1); //SDA=1位发送完后释放数据线,准备接收应答位
void SendByte(unsigned char c)
{
unsigned char BitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++) //要传送的数据长度为8位
{
if((c<<BitCnt)&0x80) SDA(1); //SDA=1;判断发送位
else SDA(0); // SDA=0
#defineSDA(x) x ? GPIO_SetBits(GPIOF , SData) : GPIO_ResetBits(GPIOF , SData)
/********************************变量*******************************************/
GPIO_InitTypeDef GPIO_InitStructure; //GPIO
ErrorStatus HSEStartUpStatus;
unsigned char Count1 , Count2;
unsigned int USEC;
static vu32 TimingDelay;
unsigned char Readzfc;
Delay_us_24C02(2);
//实验24C02连接在PF口
//WP、A0、A1、A2都接地
#include "stm32f10x_flash.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#define AT24C02 0xa0 //AT24C02地址
/********************************变量定义---------------------------------------------------------*/
void RCC_Configuration(void);
void SysTick_Configuration(void);
void Delay_us_24C02(u32 nTime);
/************************************24C02硬件接口******************************/
void Start_I2c()
{
SDA(1); //SDA=1;发送起始条件的数据信号
Delay_us_24C02(1);
SCL(1);//SCL=1;
Delay_us_24C02(5); //起始条件建立时间大于4.7us,延时
SDA(0); //SDA=0; /*发送起始信号*/
Delay_us_24C02(5); //起始条件锁定时间大于4μs
u8 ack;
/*******************************************************************
起动总线函数
函数原型: void Start_I2c();
功能:启动I2C总线,即发送I2C起始条件.
********************************************************************/
#define SData GPIO_Pin_6 //I2C时钟
#define SCLK GPIO_Pin_7 //I2C数据
/********************************宏定义*******************************************/
#define SCL(x)x ? GPIO_SetBits(GPIOF , SCLK) : GPIO_ResetBits(GPIOF , SCLK)
功能:结束I2C总线,即发送I2C结束条件.
********************************************************************/
void Stop_I2c()
{
SDA(0); //SDA=0; //发送结束条件的数据信号
Delay_us_24C02(1); //发送结束条件的时钟信号
SCL(0);//SCL=0; /*钳住I2C总线,准备发送或接收数据*/
Delay_us_24C02(2);
}
/*******************************************************************
结束总线函数
函数原型: void Stop_I2c();
SCL(1); //SCL=1;结束条件建立时间大于4μs
Delay_us_24C02(5);
SDA(0); //SDA=1;发送I2C总线结束信号
Delay_us_24C02(4);
}
/*******************************************************************
unsigned char R_Dat[8];
/*********************************声明函数-----------------------------------------------*/
字节数据发送函数
函数原型: void SendByte(UCHAR c);
功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
此状态பைடு நூலகம்进行操作.(不应答或非应答都使ack=0)
发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
********************************************************************/
Delay_us_24C02(1);
SCL(1); //SCL=1置时钟线为高,通知被控器开始接收数据位
Delay_us_24C02(5); //保证时钟高电平周期大于4μs
SCL(0);//SCL = 0
}
Delay_us_24C02(2);
SDA(1); //SDA=1位发送完后释放数据线,准备接收应答位
void SendByte(unsigned char c)
{
unsigned char BitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++) //要传送的数据长度为8位
{
if((c<<BitCnt)&0x80) SDA(1); //SDA=1;判断发送位
else SDA(0); // SDA=0
#defineSDA(x) x ? GPIO_SetBits(GPIOF , SData) : GPIO_ResetBits(GPIOF , SData)
/********************************变量*******************************************/
GPIO_InitTypeDef GPIO_InitStructure; //GPIO
ErrorStatus HSEStartUpStatus;
unsigned char Count1 , Count2;
unsigned int USEC;
static vu32 TimingDelay;
unsigned char Readzfc;
Delay_us_24C02(2);
//实验24C02连接在PF口
//WP、A0、A1、A2都接地
#include "stm32f10x_flash.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#define AT24C02 0xa0 //AT24C02地址
/********************************变量定义---------------------------------------------------------*/
void RCC_Configuration(void);
void SysTick_Configuration(void);
void Delay_us_24C02(u32 nTime);
/************************************24C02硬件接口******************************/
void Start_I2c()
{
SDA(1); //SDA=1;发送起始条件的数据信号
Delay_us_24C02(1);
SCL(1);//SCL=1;
Delay_us_24C02(5); //起始条件建立时间大于4.7us,延时
SDA(0); //SDA=0; /*发送起始信号*/
Delay_us_24C02(5); //起始条件锁定时间大于4μs
u8 ack;
/*******************************************************************
起动总线函数
函数原型: void Start_I2c();
功能:启动I2C总线,即发送I2C起始条件.
********************************************************************/
#define SData GPIO_Pin_6 //I2C时钟
#define SCLK GPIO_Pin_7 //I2C数据
/********************************宏定义*******************************************/
#define SCL(x)x ? GPIO_SetBits(GPIOF , SCLK) : GPIO_ResetBits(GPIOF , SCLK)
功能:结束I2C总线,即发送I2C结束条件.
********************************************************************/
void Stop_I2c()
{
SDA(0); //SDA=0; //发送结束条件的数据信号
Delay_us_24C02(1); //发送结束条件的时钟信号
SCL(0);//SCL=0; /*钳住I2C总线,准备发送或接收数据*/
Delay_us_24C02(2);
}
/*******************************************************************
结束总线函数
函数原型: void Stop_I2c();
SCL(1); //SCL=1;结束条件建立时间大于4μs
Delay_us_24C02(5);
SDA(0); //SDA=1;发送I2C总线结束信号
Delay_us_24C02(4);
}
/*******************************************************************