sysI2CDrv.h
上传用户:yingyi0918
上传日期:2022-06-26
资源大小:214k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* sysI2CDrv.h - rc32355 I2C Header File */
  2.  
  3. /* Copyright 1984-2002 Wind River Systems, Inc. */
  4. #include "copyright_wrs.h"
  5. /*
  6.  * This file has been developed or significantly modified by the
  7.  * MIPS Center of Excellence Dedicated Engineering Staff.
  8.  * This notice is as per the MIPS Center of Excellence Master Partner
  9.  * Agreement, do not remove this notice without checking first with
  10.  * WR/Platforms MIPS Center of Excellence engineering management.
  11.  */
  12. /*
  13. modification history
  14. --------------------
  15. 01c,05aug02,slk  remove I2C_24LC64_CNTL_BYTE
  16. 01b,25jun02,d_c  Further cleanup
  17. 01a,19Jun02,d_c  Code from IDT modified to approach C of E standards.
  18. */
  19. /*
  20. DESCRIPTION
  21. This is the header file for the I2C interface.
  22. */
  23. #ifndef __sysI2CDrvh
  24. #define __sysI2CDrvh
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif /*__cplusplus*/
  28. /*defines*/
  29. /*
  30.  * Size of a page for I2C serial EEPROM.
  31.  *
  32.  * NOTE: If you change this value you must also change function
  33.  * documentation headers in sysI2CDrv.c that refer to the page size as
  34.  * being '32'.
  35.  *
  36.  * NOTE 2: Must be a power of 2.
  37.  */
  38. #define I2C_EEPROM_PAGE_SIZE 32
  39. /* I2C clock rate and pre-scaler */
  40. #define I2C_BPS       100000         /* Clock rate (Bits per second) */
  41. #define I2C_CPP       ((UINT16) (((CPU_CLOCK_RATE / I2C_BPS) / 8.0) + .5))
  42. #define I2C_MASTER_INT_MASK     0xF  /* Master interrupt mask */
  43. #define I2C_SLAVE_INT_MASK      0x7F /* Slave interrupt mask */
  44. #define I2C_24LC64_RD_EN        0x01 /* Serial EEPROM read enable */
  45. #define I2C_MEM_SIZE            8192 /* 8K Bytes total of I2C Space */
  46. /* I2CC register */
  47.  
  48. #define I2CC_MEN            (1<<0)              /* MEN bit */
  49. #define I2CC_SEN            (1<<1)              /* SEN bit */
  50. #define I2CC_IOM            (1<<2)              /* IOM bit */
  51.  
  52. /* I2CM Commands */
  53. #define NOP   0
  54. #define START 1
  55. #define STOP  2
  56. #define RD    4
  57. #define RDACK 5
  58. #define WD    6
  59. #define WDACK 7
  60. #define I2CMCMD_CMD(v)      ((v&0xffff)<<0)     /* CMD field */
  61. /* I2CMS register */
  62.  
  63. #define I2CMS_D             (1<<0)              /* Done bit */
  64. #define I2CMS_NACK          (1<<1)              /* No-ACK bit */
  65. #define I2CMS_LA            (1<<2)              /* Lost Arbitration bit */
  66. #define I2CMS_ERR           (1<<3)              /* Error bit */
  67. #define I2CMS_MASK          0xF                 /* Mask for CMS sig. bits */
  68. /* I2CSS register */
  69.  
  70. #define I2CSS_RR            (1<<0)              /* RR bit */
  71. #define I2CSS_WR            (1<<1)              /* WR bit */
  72. #define I2CSS_SA            (1<<2)              /* SA bit */
  73. #define I2CSS_TF            (1<<3)              /* TF bit */
  74. #define I2CSS_GC            (1<<4)              /* GC bit */
  75. #define I2CSS_ACK           (1<<5)              /* ACK bit */
  76. #define I2CSS_ERR           (1<<6)              /* ERR bit */
  77. /* I2CSADDR register */
  78.  
  79. #define I2CSADDR_ADDR(v)    ((v&0x3ff)<<0)      /* ADDR field */
  80. #define I2CSADDR_GC         (1<<10)             /* GC bit */
  81. #define I2CSADDR_A10        (1<<11)             /* A10 bit */
  82. /* I2CSACK register */
  83. #define I2CSACK_ACK         (1<<0)              /* ACK bit */
  84. /* I2CCP register */
  85. #define I2CCP_DIV(v)        ((v&0xffff)<<0)     /* DIV field */
  86. /* I2CDI register */
  87. #define I2CDI_DATA(v)       ((v&0xffff)<<0)     /* DATA field */
  88. /* I2CDO register */
  89. #define I2CDO_DATA_WIDTH    8                   /* Width of I2CDO data field */
  90. #define I2CDO_DATA_MASK     0xFF                /* Mask for I2CDO Data field */
  91. STATUS sysI2CAckPollOnWrite (void);
  92. STATUS sysI2CByteRead (UINT16 address, int * byte);
  93. STATUS sysI2CByteWrite (UINT16 address, UINT8 byte);
  94. STATUS sysI2CByteWrites (UINT16 address, UINT8 * string, UINT32 numOfBytes);
  95. STATUS sysI2CChkDone (void);
  96. STATUS sysI2CInPageWrite (UINT8 byteData);
  97. void   sysI2CInit ();
  98. STATUS sysI2CPageWrite (UINT16 address, UINT8 * string); 
  99. STATUS sysI2CPageWriteOpen (UINT16 address);
  100. STATUS sysI2CSeqRead (int * byte);
  101. STATUS sysI2CSeqReadLast (int * byte);
  102. STATUS sysI2CSeqReadStart (UINT16 address);
  103. STATUS sysI2CStart (void);
  104. STATUS sysI2CStop (void);
  105. STATUS sysI2CStringRead (UINT16 address, UINT8 * string, UINT32 numOfBytes);
  106. STATUS sysI2CStringWrite (UINT16 address, UINT8 * string, UINT32 numOfBytes);
  107. #ifdef __cplusplus
  108. }
  109. #endif /* __cplusplus */
  110. #endif /* __sysI2CDrvh */