00001
00018 #ifndef _I2CPACKET_H
00019 #define _I2CPACKET_H
00020
00021
00022
00023
00024
00025 #include <halClkCtrl.h>
00026 #include <types.h>
00027
00028
00029
00030
00031
00033 #define HAL_I2C_PRESCALER 0ul
00034
00036 #if defined(AT91SAM7X256)
00037
00038 #define HAL_NO_INTERNAL_ADDRESS (0x0 << 8)
00039
00040 #define HAL_ONE_BYTE_SIZE (0x1 << 8)
00041
00042 #define HAL_TWO_BYTE_SIZE (0x2 << 8)
00043
00044 #define HAL_THREE_BYTE_SIZE (0x3 << 8)
00045 #elif defined(ATMEGA1281) || defined(ATMEGA2561) || defined(ATMEGA1284) || defined(AT90USB1287)
00046 #define HAL_NO_INTERNAL_ADDRESS 0x0
00047 #define HAL_ONE_BYTE_SIZE 0x1
00048 #define HAL_TWO_BYTE_SIZE 0x2
00049 #define HAL_THREE_BYTE_SIZE 0x3
00050 #endif
00051
00052
00053
00054
00055
00057 #if defined(AT91SAM7X256)
00058 typedef enum
00059 {
00060 I2C_CLOCK_RATE_250 = F_CPU/(2*250000) - 3,
00061 I2C_CLOCK_RATE_125 = F_CPU/(2*125000) - 3,
00062 I2C_CLOCK_RATE_100 = F_CPU/(2*100000) - 3,
00063 I2C_CLOCK_RATE_62 = F_CPU/(2*62500) - 3
00064 } I2cClockRate_t;
00065 #elif defined(ATMEGA1281) || defined(ATMEGA2561) || defined(ATMEGA1284) || defined(AT90USB1287)
00066 typedef enum
00067 {
00068 I2C_CLOCK_RATE_250 = ((F_CPU/250000ul) - 16ul)/(2ul * (1ul << HAL_I2C_PRESCALER) * (1ul << HAL_I2C_PRESCALER)),
00069 I2C_CLOCK_RATE_125 = ((F_CPU/125000ul) - 16ul)/(2ul * (1ul << HAL_I2C_PRESCALER) * (1ul << HAL_I2C_PRESCALER)),
00070 I2C_CLOCK_RATE_62 = ((F_CPU/62500ul) - 16ul)/(2ul * (1ul << HAL_I2C_PRESCALER) * (1ul << HAL_I2C_PRESCALER))
00071 } I2cClockRate_t;
00072 #endif
00073
00075 typedef struct
00076 {
00077 I2cClockRate_t clockrate;
00078 } HAL_i2cMode_t;
00079
00080
00083 typedef struct
00084 {
00086 uint8_t id;
00088 uint16_t length;
00090 uint8_t *data;
00096 #if defined(AT91SAM7X256)
00097 uint32_t lengthAddr;
00098 #elif defined(ATMEGA1281) || defined(ATMEGA2561) || defined(ATMEGA1284) || defined(AT90USB1287)
00099 uint8_t lengthAddr;
00100 #endif
00101
00102 uint32_t internalAddr;
00104 void (*f)(bool result);
00105 } HAL_I2cParams_t;
00106
00107
00108
00109
00110
00125 int HAL_OpenI2cPacket(HAL_i2cMode_t *i2cMode);
00126
00127
00134 int HAL_CloseI2cPacket(void);
00135
00136
00146 int HAL_WriteI2cPacket(HAL_I2cParams_t *param);
00147
00148
00158 int HAL_ReadI2cPacket(HAL_I2cParams_t *param);
00159
00160 #endif
00161