#ifndef __24CXX_H #define __24CXX_H #include #include "stm32f10x.h" #define AT24C01 127 #define AT24C02 255 #define AT24C04 511 #define AT24C08 1023 #define AT24C16 2047 #define AT24C32 4095 #define AT24C64 8191 #define AT24C128 16383 #define AT24C256 32767 #define EE_TYPE AT24C02 //使用的是AT24C16 void AT24cxx_init(void);//初试化IIC u8 AT24cxx_ReadOneByte(u16 ReadAddr);//指定地址读取一个字节 void AT24cxx_WriteOneByte(u16 WriteAddr,u8 data);//指定地址写一个数据 void AT24cxx_WriteLenByte(u16 WriteAddr,u32 data,u8 len);//在指定地址开始写入指定长度的数据 u32 AT24cxx_ReadLenByte(u16 ReadAddr,u8 len);//在指定地址开始读出指定长度的数据 void AT24cxx_Write(u16 WriteAddr,u8 *buf,u16 len);//在指定地址开始写入指定长度的数据 void AT24cxx_Read(u16 ReadAddr,u8 *buf,u16 len);//在指定地址开始读出指定长度的数据 u8 AT24cxx_Check(void);//检查器件 /* 定义I2C总线连接的GPIO端口, 用户只需要修改下面4行代码即可任意改变SCL和SDA的引脚 */ //IO方向设置 #define SDA_IN() //{GPIOB->ODR&=0XFFFF3FFF;GPIOB->ODR|=GPIO_Mode_IN<<14;}//sda输入 #define SDA_OUT() //{GPIOB->ODR&=0XFFFF3FFF;GPIOB->ODR|=GPIO_Mode_OUT<<14;}//sda输出 //IO操作设置 #define IIC_SDA0 GPIOB->BRR=GPIO_Pin_11;//sda=0 #define IIC_SDA1 GPIOB->BSRR=GPIO_Pin_11;//sda=1 #define IIC_SCL0 GPIOB->BRR=GPIO_Pin_10; #define IIC_SCL1 GPIOB->BSRR=GPIO_Pin_10; #define Read_IIC_SDA() ((GPIOB->IDR&GPIO_Pin_11)!=0)?1:0 //判断接收到的位 //IIC所有操作函数 void IIC_Init(void);// 初始化iic的所有IO口 //void IIC_Start(void); //发送起始信号 //void IIC_Stop(void); //发送停止信号 //void IIC_Write_Byte(u8 dat);//发送一个字节 //u8 IIC_Read_Byte(unsigned char ack);//接收一个字节 //u8 IIC_Wait_Ack(void);//等待ACK信号 //void IIC_Ack(void);//发送ACK信号 //void IIC_NAck(void);//不发送ACK信号 #endif