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

📄 i2c.h

📁 三星mcu S3C4510B评估板的原码
💻 H
字号:
#ifndef _I2C_H_
#define _I2C_H_

#define IIC_DEV_0	0xa0    //IIC device's slave address
#define S_WRITE		0x00    //Write IIC data for slave
#define S_READ		0x01    //Read IIC data for slave

#define BF 		0x01        //Buffer flag
#define IEN		0x02        //Interrupt enable
#define LRB		0x04        //Last bit received
                                    //ACK not received
#define ACK		0x08        //Acknowlege enable
                                    //Generate an ACK signal at 9th SCL
#define NOACK		0x00        //No more received data is required
                                    //from the slave
#define START		0x10
#define STOP		0x20
#define RESTART		0x30
#define BUSY		0x40
#define IICRESET	0x80        //Reset the IIC-BUS controller

#define Write_Cycle_ms(x)     (x*0.001*fMCLK-1) /* IIC write cycle */
                                                /* KS24L321/641=5ms*/
#define   StorageSize    ((64*1024)/8) /* KS24L641:64Kbits(8192)*/    
#define   SizeOfPage     32            /* Writes up to 32 bytes of data */
                                       /* in a single write cycle. */
/* Byte Slave transmitter and receive status flags */
#define  iic_slave_addr       0x01  /* slave addr flag */
#define  iic_byte_addr_msb    0x02  /* byte msb addr */
#define  iic_byte_addr_lsb    0x04  /* byte lsb addr */
#define  iic_page_tx_done     0x08  /* Page data transmit done */
#define  iic_byte_rx_done     0x10  /* byte data receive done */
#define  iic_repeat_start     0x20  /* flag for repeat start */
#define  iic_multi_recv       0x40  /* recv multiple data */
#define  iic_no_more_recv     0x80  /* no more recv from slave */


/* Data structure for multiple byte slave transmitter format */

typedef struct 
{
  volatile    U32  FLAG;
  volatile    U32  BuffByteCnt;             /* Page buffer byte counter */ 
  volatile    U32  WriteDataSize;           /* Page buffer byte counter */ 
  volatile    U8   SLAVE_ADDR;              /* Slave address */
  volatile    U8   BYTE_ADDR_MSB;           /* Byte MSB address */
  volatile    U8   BYTE_ADDR_LSB;           /* Byte LSB address */
  volatile    U8   PAGE_BUFFER[SizeOfPage+1]; /* IIC Page data buffer */

} IIC_DATA_TX_FORMAT;



/* Data structure for multiple byte slave receiver format */

typedef struct 
{
  volatile    U32  FLAG;
  volatile    U32  ByteReadCnt;             
  volatile    U32  ReadDataSize;             
  volatile    U8   SLAVE_ADDR;
  volatile    U8   BYTE_ADDR_MSB;
  volatile    U8   BYTE_ADDR_LSB;
  volatile    U8   *RCV_BUFFER;

} IIC_DATA_RX_FORMAT;

extern void IicSetup(void) ;
extern int  SetPreScaler(int /*fSCL*/) ;
extern void config_iic(void);
extern void IICTest(void) ;
extern void IICWriteIsr(void) ;
extern void IICReadIsr(void) ;

extern void IICWriteInt(U8 /*SlaveAddr*/,U32 /*WriteAddr*/,U8 */*data*/,U32 /*SizeOfData*/);
extern void *IICReadInt(U8 /*SlaveAddr*/,U32 /*ReadAddr*/,U32 /*SizeOfData*/);

#define IIC_DEV_0	0xa0    //IIC device's slave address
#define iMacAddrPtr	0x1000  //Storage area for MAC parameters
#define IICTestAddr     0x0     //IIC test start address
#define IICTestSize    ((64*1024)/8) /* KS24L641:64Kbits(8192)*/    

extern void IICWriteTest(void);
extern void IICReadTest(void);
extern void IICAutoTest(void);
extern int  IICLoopBackTest(void);
extern void PrtIICStatus(int /*byte*/);

#endif 

⌨️ 快捷键说明

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