⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.h

📁 使用于克隆器
💻 H
字号:
/******************************************************************************
 Copyright (c) 2003 MStar Semiconductor, Inc.
 All rights reserved.

 [Module Name]: I2c.h
 [Date]:        11-Nov-2003
 [Comment]:
   I2C header file.
 [Reversion History]:
*******************************************************************************/

#include "define.h"
#include "mcu.h"

#include "board.h"

#ifndef _I2C_H_
#define _I2C_H_

#ifdef _I2C_C_
#define _I2CDEC_
#else
#define _I2CDEC_ extern
#endif

/////////////////////////////////////////////
// I2C common definition
/////////////////////////////////////////////
//#define i2cSetSCL(is_hl)     (i2cSCL_PIN = is_hl)
//#define i2cSetSDA(is_hl)     (i2cSDA_PIN = is_hl)

#define I2C_CHECK_PIN_TIME   1000 // unit: 1 us
#define I2C_CHECK_PIN_CYCLE  8    // cycle of check pin loopp
#define I2C_CHECK_PIN_DUMMY  ((I2C_CHECK_PIN_TIME / I2C_CHECK_PIN_CYCLE) * MCU_MICROSECOND_NOP_NUM)

// type definition
typedef enum _I2cIoTransType
{
    I2C_TRANS_READ,
    I2C_TRANS_WRITE
}I2cIoTransType;

#define I2C_DEVICE_ADR_WRITE(slave_adr)   (slave_adr & ~_BIT0)
#define I2C_DEVICE_ADR_READ(slave_adr)    (slave_adr | _BIT0)

#define I2C_ACCESS_DUMMY_TIME   3

#define I2C_ACKNOWLEDGE        _LOW
#define I2C_NON_ACKNOWLEDGE    _HIGH

/////////////////////////////////////////////
// I2C subroutines
/////////////////////////////////////////////
_I2CDEC_ void i2cSetSCL(BOOL is_hl);
_I2CDEC_ BIT i2cGetSCL(void);
_I2CDEC_ void i2cSetSDA(BOOL is_hl);
_I2CDEC_ BIT i2cGetSDA(void);

_I2CDEC_ void i2c_Delay(void);

_I2CDEC_ void i2cSetSCL_Chk(bit bSet);
_I2CDEC_ void i2cSetSDA_Chk(bit bSet);

_I2CDEC_ BOOL i2c_Start(void);
_I2CDEC_ void i2c_Stop(void);

_I2CDEC_ BYTE i2c_ReceiveByte(BOOL bAck);
_I2CDEC_ bit i2c_SendByte(BYTE ucVal);

_I2CDEC_ BOOL i2c_AccessStart(BYTE ucSlaveAdr, I2cIoTransType trans_t);
//_I2CDEC_ BOOL PingIC(BYTE ucSlaveAdr);

_I2CDEC_ void i2cBurstReadBytes(BYTE ucSlaveAdr, BYTE ucSubAdr, BYTE* pBuf, BYTE ucBufLen);
_I2CDEC_ void i2cBurstWriteBytes(BYTE ucSlaveAdr, BYTE ucSubAdr, BYTE* pBuf, BYTE ucBufLen);

_I2CDEC_ BYTE i2cReadByte(BYTE ucSlaveAdr, BYTE ucSubAdr);
_I2CDEC_ void i2cWriteByte(BYTE ucSlaveAdr, BYTE ucSubAdr, BYTE ucVal);
////////////////520
//_I2CDEC_ BYTE i2cReadCurrent(BYTE ucSlaveAdr);
_I2CDEC_ void i2cWriteCurrent(BYTE ucSlaveAdr, BYTE ucVal);

//_I2CDEC_ void i2cWriteRegsTbl(BYTE ucSlaveAdr, RegUnitType code* pTable);
//_I2CDEC_ void Tuneri2cBurstWriteBytes(BYTE ucSlaveAdr, BYTE* pBuf, BYTE ucBufLen);
//_I2CDEC_ BYTE i2cReadByte2(BYTE ucSlaveAdr, BYTE ucSubAdr);
//_I2CDEC_ void i2cBurstReadBytes2(BYTE ucSlaveAdr, BYTE ucSubAdr, BYTE* pBuf, BYTE ucBufLen);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -