1,57 → 1,76 |
#ifndef __i2c_h |
#define __i2c_h |
|
#define MAXI2CBUF MSGLEN |
#define MAXI2CBUF 64 |
|
#define I2C_IDLE 0x5 |
#define I2C_STARTED 0x6 |
#define I2C_RCV_DATA 0x7 |
#define I2C_SEND_DATA 0x8 |
#define I2C_SEND_ADDR 0x9 |
#define I2C_CHECK_ACK 0xB |
#define I2C_REQ_DATA 0xC |
#define I2C_SEND_STOP 0xD |
// Operating State |
#define I2C_IDLE 0x1 |
#define I2C_STARTED 0x2 |
#define I2C_RCV_DATA 0x3 |
#define I2C_SEND_DATA 0x4 |
#define I2C_SEND_ADDR 0x5 |
#define I2C_SEND_ADDR_2 0x6 |
#define I2C_CHECK_ACK_SEND 0x7 |
#define I2C_CHECK_ACK_RECV 0x8 |
#define I2C_CHECK_ACK_RESTART 0x9 |
#define I2C_REQ_DATA 0xA |
#define I2C_SEND_STOP 0xB |
#define I2C_SEND_START 0xC |
|
// Operating Mode |
#define I2C_MODE_SLAVE 0x10 |
#define I2C_MODE_MASTER 0x11 |
|
// Master Status |
#define I2C_MASTER_SEND 0x20 |
#define I2C_MASTER_RECV 0x21 |
#define I2C_MASTER_IDLE 0x22 |
#define I2C_MASTER_RESTART 0x22 |
#define I2C_MASTER_IDLE 0x23 |
|
#define I2C_ERR_THRESHOLD 1 |
#define I2C_ERR_OVERRUN 0x4 |
#define I2C_ERR_NOADDR 0x5 |
#define I2C_ERR_NODATA 0x6 |
#define I2C_ERR_MSGTOOLONG 0x7 |
#define I2C_ERR_MSG_TRUNC 0x8 |
// Return Status |
#define I2C_SEND_OK 0x30 |
#define I2C_SEND_FAIL 0x31 |
#define I2C_RECV_OK 0x32 |
#define I2C_RECV_FAIL 0x33 |
#define I2C_DATA_AVAL 0x34 |
#define I2C_ERR_NOADDR 0x35 |
#define I2C_ERR_OVERRUN 0x36 |
#define I2C_ERR_NODATA 0x37 |
#define I2C_ERR_BUFFER_OVERRUN 0x38 |
|
typedef struct __I2C_DATA { |
unsigned char buffer[MAXI2CBUF]; |
int buflen; |
unsigned char status; |
unsigned char bufind; |
unsigned char slave_event_count; |
unsigned char slave_error_code; |
unsigned char slave_error_count; |
unsigned char buffer_in[MAXI2CBUF]; |
unsigned char buffer_in_len; |
unsigned char buffer_in_len_tmp; |
unsigned char buffer_in_read_ind; |
unsigned char buffer_in_write_ind; |
|
unsigned char buffer_out[MAXI2CBUF]; |
unsigned char buffer_out_len; |
unsigned char buffer_out_ind; |
|
unsigned char operating_mode; |
unsigned char operating_state; |
unsigned char return_status; |
|
unsigned char master_dest_addr; |
unsigned char master_status; |
|
unsigned char slave_in_last_byte; |
unsigned char slave_outbufmsgtype; |
unsigned char slave_sending_data; |
unsigned char slave_sending_blank_data; |
|
unsigned char master_dest_addr; |
unsigned char master_state; |
unsigned char mode; |
} I2C_DATA; |
|
void i2c_init(I2C_DATA *); |
void i2c_interrupt_handler(void); |
void i2c_interrupt_slave(void); |
void i2c_interrupt_master(void); |
void i2c_configure_slave(unsigned char); |
void i2c_configure_master(void); |
void i2c_master_send(unsigned char address, unsigned char length,unsigned char *msg); |
void i2c_master_recv(unsigned char address, unsigned char length); |
unsigned char i2c_master_busy(void); |
void I2C_Init(void); |
void I2C_Interrupt_Handler(void); |
void I2C_Interrupt_Slave(void); |
void I2C_Interrupt_Master(void); |
void I2C_Configure_Slave(unsigned char); |
void I2C_Configure_Master(void); |
void I2C_Master_Send(unsigned char address, unsigned char length,unsigned char *msg); |
void I2C_Master_Recv(unsigned char address, unsigned char length); |
void I2C_Master_Restart(unsigned char address, unsigned char msg, unsigned char length); |
unsigned char I2C_Get_Status(void); |
unsigned char I2C_Read_Buffer(char *buffer); |
unsigned char I2C_Process_Send(unsigned char); |
|
#endif |