i2cPacket.h

Go to the documentation of this file.
00001 /****************************************************************************/
00018 #ifndef _I2CPACKET_H
00019 #define _I2CPACKET_H
00020 
00021 /******************************************************************************
00022                    Includes section
00023 ******************************************************************************/
00024 // \cond
00025 #include <halClkCtrl.h>
00026 #include <types.h>
00027 // \endcond
00028 
00029 /******************************************************************************
00030                    Define(s) section
00031 ******************************************************************************/
00033 #define HAL_I2C_PRESCALER 0ul
00034 // \cond
00036 #if defined(AT91SAM7X256)
00037   /* AT91C_TWI_IADRSZ_NO */
00038   #define  HAL_NO_INTERNAL_ADDRESS   (0x0 << 8)
00039   /* AT91C_TWI_IADRSZ_1_BYTE */
00040   #define  HAL_ONE_BYTE_SIZE         (0x1 << 8)
00041   /* AT91C_TWI_IADRSZ_2_BYTE */
00042   #define  HAL_TWO_BYTE_SIZE         (0x2 << 8)
00043   /* AT91C_TWI_IADRSZ_3_BYTE */
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 // \endcond
00052 
00053 /******************************************************************************
00054                    Types section
00055 ******************************************************************************/
00057 #if defined(AT91SAM7X256)
00058   typedef enum
00059   {
00060     I2C_CLOCK_RATE_250 = F_CPU/(2*250000) - 3, // 200 Kb/s clock rate
00061     I2C_CLOCK_RATE_125 = F_CPU/(2*125000) - 3, // 125 Kb/s clock rate
00062     I2C_CLOCK_RATE_100 = F_CPU/(2*100000) - 3, // 100 Kb/s clock rate
00063     I2C_CLOCK_RATE_62  = F_CPU/(2*62500) - 3   // 62.5 Kb/s clock rate
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)), // 250 Kb/s clock rate
00069     I2C_CLOCK_RATE_125 = ((F_CPU/125000ul) - 16ul)/(2ul * (1ul << HAL_I2C_PRESCALER) * (1ul << HAL_I2C_PRESCALER)), // 125 Kb/s clock rate
00070     I2C_CLOCK_RATE_62  = ((F_CPU/62500ul) - 16ul)/(2ul * (1ul << HAL_I2C_PRESCALER) * (1ul << HAL_I2C_PRESCALER))   // 62.5 Kb/s clock rate
00071   } I2cClockRate_t;
00072 #endif
00073 
00075 typedef struct
00076 {
00077   I2cClockRate_t clockrate; // clock rate
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                    Prototypes section
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 /* _I2CPACKET_H */
00161 // eof i2cPacket.h

Generated on Mon Feb 16 17:53:40 2009 for BitCloud Stack Documentation by  doxygen 1.5.1-p1