📄 i2c.h
字号:
/****************************************Copyright (c)**************************************************
**
** STR710 development team
**
**
**
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: i2c.h
** 创 建 人: lhl
** 创建日期: 2006年5月14日
** 描 述: 该文件包含了所有I2C功能函数原型与所需要的常量
**
**--------------历史版本--------------------------------------------------------------------------------
** 创 建 人: lhl
** 版 本: V1.0
** 日 期: 2006年5月14日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __I2C_H__
#define __I2C_H__
#include "cpu_cfg.h"
#include "rccu.h"
#ifdef __cplusplus
extern "C" {
#endif
/************************************** 宏定义,常量定义 ******************************************/
#define I2C_PEBitEnable(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn ))) |= I2C_PESET_Mask
#define I2C_PEBitDisable(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn ))) &= ~I2C_PESET_Mask
#define I2C_StartBit(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn ))) |= I2C_START_Mask
#define I2C_StopBit(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn ))) |= I2C_STOP_Mask
#define I2C_ACKBit(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn ))) |= I2C_ACK_Mask
#define I2C_INTEnable(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn ))) |= I2C_ITE_Mask
#define I2C_INTDisable(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn ))) &= ~I2C_ITE_Mask
#define I2C_ReadStopBit(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn )))
//#define I2C_CROr(i2cn , value) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_CR))) &= (value)
#define I2C_CCRWrite(i2cn,value) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_CCR))) = (value)
#define I2C_ECCRWrite(i2cn,value) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_ECCR))) = (value)
#define I2C_DRWrite(i2cn,value) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_DR))) = (value)
#define I2C_OAR1Write(i2cn,value) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_OAR1))) = (value)
#define I2C_OAR2Write(i2cn,value) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_OAR2))) = (value)
#define I2C_DRRead(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_DR)))
#define I2C_SR1Read(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_SR1)))
#define I2C_SR2Read(i2cn) (*((volatile unsigned char *)(I2C0_BASE + 0x1000 * i2cn + I2Cn_SR2)))
#define I2C0_SCLPIN (13)
#define I2C0_SDAPIN (14)
#define I2C1_SCLPIN (2)
#define I2C1_SDAPIN (3)
#define I2C_HEAD 0xF0
/************************************** 枚举类型定义 *******************************************/
typedef enum
{
I2C_ITE_Mask =0x01,
I2C_STOP_Mask =0x02,
I2C_ACK_Mask =0x04,
I2C_START_Mask =0x08,
I2C_ENGC_Mask =0x10,
I2C_PESET_Mask =0x20
}I2C_CR_T;
typedef enum
{
I2C_SB = 0x01,
I2C_M_SL = 0x02,
I2C_ADSL = 0x04,
I2C_BTF = 0x08,
I2C_BUSY = 0x10,
I2C_TRA = 0x20,
I2C_ADD10 = 0x40,
I2C_EVF = 0x80
} I2C_SR1_Flags;
typedef enum
{
I2C_GCAL = 0x01,
I2C_BERR = 0x02,
I2C_ARLO = 0x04,
I2C_STOPF = 0x08,
I2C_AF = 0x10,
I2C_ENDAD = 0x20,
I2C_ACK = 0x40
} I2C_SR2_Flags;
typedef enum
{
I2C0 = 0,
I2C1
}I2C_T;
/************************************** 结构体类型定义 ******************************************/
typedef void (* I2C_CALLBACK)(void);
/********************************** 全局外部函数原型声明 *****************************************/
void I2C_Init(I2C_T i2cx);
void I2C_Enable(I2C_T i2cx);
void I2C_Config(I2C_T i2cx,UWORD32 speed);
void I2C_MasterSendByte7Addr(I2C_T i2cx,UWORD16 addr,UWORD8 *data,UWORD8 data_cnt);
void I2C_MasterSendByte10Addr(I2C_T i2cx,UWORD16 addr,UWORD8 *data,UWORD8 data_cnt);
void I2C_MasterRecByte7Addr(I2C_T i2cx,UWORD16 addr,UWORD8 *data,UWORD8 data_cnt);
void I2C_MasterRecByte10Addr(I2C_T i2cx,UWORD16 addr,UWORD8 *data,UWORD8 data_cnt);
void I2C_SlaveSetAddr(I2C_T i2cx,UWORD16 addr,UWORD8 frn);
void I2C_Disable(I2C_T i2cx);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -