Subversion Repositories NaviCtrl

Rev

Rev 189 | Rev 248 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
41 ingob 1
#ifndef __I2C_H
2
#define __I2C_H
1 ingob 3
 
241 killagreg 4
extern volatile u32 I2C1_Timeout;
1 ingob 5
 
241 killagreg 6
// I2C states
7
#define I2C_STATE_UNDEF                 0
8
#define I2C_STATE_IDLE                  1
9
#define I2C_STATE_TX_PENDING    2
10
#define I2C_STATE_TX_PROGRESS   3
11
#define I2C_STATE_RX_PENDING    4
12
#define I2C_STATE_RX_PROGRESS   5
13
#define I2C_STATE_OFF                   6
41 ingob 14
 
241 killagreg 15
// current I2C state
16
extern volatile u8 I2C_State;
1 ingob 17
 
241 killagreg 18
#define I2C1_TIMEOUT 500 // 500 ms
1 ingob 19
 
241 killagreg 20
// define the sizte of the rx and tx buffer
21
#define I2C_TXBUFFER_LEN 50
22
#define I2C_RXBUFFER_LEN 50
23
// transfer buffer should be filled before start of transmission only when I2C_State is I2C_STATE_IDLE
24
extern volatile u8 I2C_TxBufferSize;
25
extern volatile u8 I2C_TxBuffer[];
41 ingob 26
 
241 killagreg 27
void I2C1_Init(void);
1 ingob 28
 
241 killagreg 29
void I2C1_Deinit(void);
41 ingob 30
 
241 killagreg 31
// the pointer to the rxbuffer handler function
32
// called by the IRQ routine after all bytes are recieved from slave
33
typedef void (*I2C_pRxHandler_t) (u8* pRxBuffer, u8 RxBufferSize);
34
// initiate i2c transmission
35
// first all bytes from TxBuffer are send to slave
36
// and then all bytes are read from slave and the RxHandler function is called
37
// returns 1 if a transmission was started, otherwise 0
38
u8 I2C_Transmission(u8 SlaveAddr, I2C_pRxHandler_t pRxHandler, u8 RxBytes);
1 ingob 39
 
41 ingob 40
#endif // I2C_H
1 ingob 41