#ifndef __I2C_H__
#define __I2C_H__

/*************************************************************************************///ConfigCMD(Don't touch)
//配置时用的参数，请勿改动

//Read-write status flag
#define I2C_FA_ADD              0x01
#define I2C_FA_REG              0x02
#define I2C_FA_DAT              0x04
#define I2C_SU                  0x00

/*************************************************************************************///Config
//I2C的主/从机模式设置
 #define I2C_MASTER                     (0)                                     // 将MCU配置为主机
 #define I2C_SLAVE                      (1)                                     // 将MCU配置为从机
 #define I2C_MASTER_SLAVE               (I2C_MASTER)

//I2C传输速率选择，MCU为主机时必须关注
 #define I2C_SPD_100k                   (0)                                     // 100k传输速率
 #define I2C_SPD_400k                   (1)                                     // 400k传输速率
 #define I2C_SPD_1M                     (2)                                     // 1M传输速率
 #define I2C_SPEED                      (I2C_SPD_400k)
 
//I2C中断配置
 #define DIS_IRQ_I2C                    (0)                                     // 不使能I2C中断
 #define EN_IRQ_I2C                     (1)                                     // 使能I2C中断
 #define I2C_IRQ                        (DIS_IRQ_I2C)

//本机I2C的7位地址，初始化会自动挪位，I2C为从机模式时必须关注
#define I2C_ADDR7               (0x68)

/*************************************************************************************///Function
#define Enable_I2C()                  SetBit(I2C_CR, I2CEN)                     //使能I2C
#define Disable_I2C()                 ClrBit(I2C_CR, I2CEN)                     //禁能I2C
#define Set_Nack_I2C()                SetBit(I2C_SR, NACK)                      //不发送应答信号
#define Set_Ack_I2C()                 ClrBit(I2C_SR, NACK)                      //发送应答信号
#define Set_Addr_I2C(a)               I2C_ID = a << 1                           //设置I2C地址(主要用于主机模式)

extern void Init_I2C(void);                                                     //初始化I2C
extern void Start_I2C(bool rw);                                                 //发送I2C启动信号、I2C_ID的内容和读写信号
extern void Stop_I2C(void);                                                     //发送停止信号

extern void Send_I2C(uint8 Dat);                                                //I2C发送1字节数据
extern uint8 Receive_I2C(void);                                                 //I2C接收1字节数据

#endif
