55 lines
1.7 KiB
C
55 lines
1.7 KiB
C
#ifndef __24CXX_H
|
|
#define __24CXX_H
|
|
|
|
#include <stdint.h>
|
|
#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
|