mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			104 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
| /******************************************************************************
 | |
|  Copyright (C), 2015-2020, XM. Co., Ltd.
 | |
| ******************************************************************************
 | |
| File Name	: xm_i2c.h
 | |
| Version 		: Initial Draft
 | |
| Author		: XM Isp software group
 | |
| Created 		: 2015/6/27
 | |
| 
 | |
| Description 	: The common data type defination
 | |
| Function List	:
 | |
| History :
 | |
| 1.Date		: 2015/6/27
 | |
|   Author		: Lycai
 | |
|   Modification	: creat
 | |
| ******************************************************************************/
 | |
| 
 | |
| #ifndef __XM_I2C_H__
 | |
| #define __XM_I2C_H__
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef struct I2C_DATA_S
 | |
| {
 | |
| 	unsigned char	dev_addr; 
 | |
| 	unsigned int 	reg_addr; 
 | |
| 	unsigned int 	addr_byte_num; 
 | |
| 	unsigned int 	data; 
 | |
|   	unsigned int 	data_byte_num;
 | |
|   	
 | |
| }I2C_DATA_S ;
 | |
|  
 | |
| typedef struct I2C_DATA_STR_
 | |
| {
 | |
| 	unsigned char	dev_addr; 
 | |
| //	unsigned int 	reg_addr; 
 | |
| 	unsigned char 	*data; 
 | |
| 	unsigned char 	addr_byte_num; 
 | |
|   	unsigned char  	data_byte_num;
 | |
|   	
 | |
| }I2C_DATA_STR ;
 | |
| 
 | |
| #define READ_OPERATION     (1)
 | |
| #define WRITE_OPERATION    0xfe
 | |
| #define CMD_I2C_WRITE      0x01
 | |
| #define CMD_I2C_READ       0x03
 | |
| 
 | |
| 
 | |
| /* I2C_CTRL_REG */
 | |
| #define I2C_ENABLE             (1 << 8)
 | |
| #define I2C_UNMASK_TOTAL       (1 << 7)
 | |
| #define I2C_UNMASK_START       (1 << 6)
 | |
| #define I2C_UNMASK_END         (1 << 5)
 | |
| #define I2C_UNMASK_SEND        (1 << 4)
 | |
| #define I2C_UNMASK_RECEIVE     (1 << 3)
 | |
| #define I2C_UNMASK_ACK         (1 << 2)
 | |
| #define I2C_UNMASK_ARBITRATE   (1<< 1)
 | |
| #define I2C_UNMASK_OVER        (1 << 0)
 | |
| #define I2C_UNMASK_ALL         (I2C_UNMASK_START | I2C_UNMASK_END | \
 | |
|                                 I2C_UNMASK_SEND | I2C_UNMASK_RECEIVE | \
 | |
|                                 I2C_UNMASK_ACK | I2C_UNMASK_ARBITRATE | \
 | |
|                                 I2C_UNMASK_OVER)
 | |
| 
 | |
| /* I2C_COM_REB */
 | |
| #define I2C_SEND_ACK (~(1 << 4))
 | |
| #define I2C_START (1 << 3)
 | |
| #define I2C_READ (1 << 2)
 | |
| #define I2C_WRITE (1 << 1)
 | |
| #define I2C_STOP (1 << 0)
 | |
| 
 | |
| /* I2C_ICR_REG */
 | |
| #define I2C_CLEAR_START (1 << 6)
 | |
| #define I2C_CLEAR_END (1 << 5)
 | |
| #define I2C_CLEAR_SEND (1 << 4)
 | |
| #define I2C_CLEAR_RECEIVE (1 << 3)
 | |
| #define I2C_CLEAR_ACK (1 << 2)
 | |
| #define I2C_CLEAR_ARBITRATE (1 << 1)
 | |
| #define I2C_CLEAR_OVER (1 << 0)
 | |
| #define I2C_CLEAR_ALL (I2C_CLEAR_START | I2C_CLEAR_END | \
 | |
|                        I2C_CLEAR_SEND | I2C_CLEAR_RECEIVE | \
 | |
|                        I2C_CLEAR_ACK | I2C_CLEAR_ARBITRATE | \
 | |
|                        I2C_CLEAR_OVER)
 | |
| 
 | |
| /* I2C_SR_REG */
 | |
| #define I2C_BUSY (1 << 7)
 | |
| #define I2C_START_INTR (1 << 6)
 | |
| #define I2C_END_INTR (1 << 5)
 | |
| #define I2C_SEND_INTR (1 << 4)
 | |
| #define I2C_RECEIVE_INTR (1 << 3)
 | |
| #define I2C_ACK_INTR (1 << 2)
 | |
| #define I2C_ARBITRATE_INTR (1 << 1)
 | |
| #define I2C_OVER_INTR (1 << 0)
 | |
| 
 | |
| 
 | |
| int XM_I2C_WriteConfig(unsigned char dev_addr);
 | |
| int XM_I2C_Write(unsigned char dev_addr, unsigned int reg_addr, unsigned int addr_byte_num, unsigned int data, unsigned int data_byte_num);
 | |
| int XM_I2C_Read (unsigned char dev_addr, unsigned int reg_addr, unsigned int addr_byte_num, unsigned int data_byte_num);
 | |
| 
 | |
| 
 | |
| 
 | |
| #endif
 | |
| 
 | |
| 
 |