mpc107I2c.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* mpc107I2c.h - MPC107 I2C registers definition's and values  */
  2. /* Copyright 1984-2000 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,06jun00,bri written
  7. */
  8. #ifndef __INCmpc107I2ch
  9. #define __INCmpc107I2ch
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. /* includes */
  14. #include "mpc107.h"
  15. /* defines */
  16. /* command identifiers for I2C */
  17. #define MPC107_I2C_READOP 0       /* read operation */
  18. #define MPC107_I2C_WRITOP 1 /* write operation */
  19. #define MPC107_I2C_FRMTOP 2 /* format operation */
  20. #define MPC107_I2C_CHCKOP 3 /* check operation */
  21. /* MPC107 configuration registers for I2C interface  */
  22. #define MPC107_I2C_EUMBBAR 0x3000
  23. #define MPC107_I2C_I2CADR (MPC107_I2C_EUMBBAR + 0x0)  /* I2C address reg */
  24. #define MPC107_I2C_I2CFDR (MPC107_I2C_EUMBBAR + 0x4)  /* I2C freq div reg */
  25. #define MPC107_I2C_I2CCR  (MPC107_I2C_EUMBBAR + 0x8)  /* I2C control reg */
  26. #define MPC107_I2C_I2CSR  (MPC107_I2C_EUMBBAR + 0xc)  /* I2C status reg */
  27. #define MPC107_I2C_I2CDR  (MPC107_I2C_EUMBBAR + 0x10) /* I2C data reg */
  28. /* I2C Register masks */
  29. #define MPC107_I2CADR_MASK  0x000000FE     /* Address Mask */
  30. #define MPC107_I2CFDR_MASK 0x0000003F     /* Freq Div Mask */
  31. #define MPC107_I2CCR_MASK 0x000000FC     /* Control Reg Mask */
  32. #define MPC107_I2CSR_MASK 0x000000F7     /* Staus Reg Mask */
  33. #define MPC107_I2CDR_MASK 0x000000FF     /* Data Reg Mask */
  34. /* MPC107 I2C Control register bit definitions  */
  35. #define MPC107_I2CCR_MEN 0x00000080 /* module enable */
  36. #define MPC107_I2CCR_MIEN 0x00000040 /* module interrupt enable */
  37. #define MPC107_I2CCR_MSTA 0x00000020 /* master/slave mode */
  38. #define MPC107_I2CCR_MTX 0x00000010 /* transmit/receiver mode  */
  39. #define MPC107_I2CCR_TXAK 0x00000008 /* transfer ack enable */
  40. #define MPC107_I2CCR_RSTA 0x00000004 /* repeat start */
  41. /* MPC107 I2C Status register Bit values */
  42. #define MPC107_I2CSR_MCF 0x00000080 /* data transferring */
  43. #define MPC107_I2CSR_MAAS 0x00000040 /* addressed as a slave */
  44. #define MPC107_I2CSR_MBB 0x00000020 /* bus busy */
  45. #define MPC107_I2CSR_MAL 0x00000010 /* arbitration lost */
  46. #define MPC107_I2CSR_SRW 0x00000004 /* slave read/write */
  47. #define MPC107_I2CSR_MIF 0x00000002 /* module interrupt */
  48. #define MPC107_I2CSR_RXAK 0x00000001 /* receive ack */
  49. /* Frequency Divider Register's definitions */
  50. #define MPC107_DFFSR_DATA 0x10  /* Digital Filter Freq Sampling rate */
  51. #define MPC107_FDR_DATA 0x20  /* Frequency Divider Ratio */
  52. /* Default value of  Freq Divider Reg */
  53. #define MPC107_I2CFDR_DEFAULT  (MPC107_FDR_DATA) | (MPC107_DFFSR_DATA << 8)
  54. /* Address Data Register's definition */
  55. #define MPC107_ADR_DATA        0x10  /* Slave Address */
  56. #define MPC107_I2CADR_DEFAULT       (MPC107_ADR_DATA) /* Default  */
  57.                                                         /* value of */
  58.                                                         /* Add Data Reg */
  59. #define MPC107_I2C_DEVICE_ADDR_MASK   0xf7  /* Device Address Mask */
  60. #define MPC107_I2C_DEVICE_READ_ENABLE 0x1   /* Read enable */
  61. /* Control Register Definitions */
  62. #define MPC107_I2CCR_DEFAULT   MPC107_I2CCR_MSTA  /* Default value of */
  63.                                                   /* Control Register */
  64. /* General definitions */
  65. #define MPC107_I2C_WRITE            0x0  /* Write */
  66. #define MPC107_I2C_READ             0x1         /* Read  */
  67. #define MPC107_I2C_READ_OR_WRITE    0x2         /* Read OR  write */
  68. #define MPC107_I2C_READ_AND_WRITE   0x3         /* Read AND write */
  69. #define MPC107_I2C_READ_ANDOR_WRITE 0x4         /* Read AND OR write */
  70. /* error codes */
  71. #define MPC107_I2C_ERR_CYCLE_START 1 /* start cycle */
  72. #define MPC107_I2C_ERR_CYCLE_STOP 2 /* stop cycle */
  73. #define MPC107_I2C_ERR_CYCLE_READ 3 /* read cycle */
  74. #define MPC107_I2C_ERR_CYCLE_WRITE 4 /* write cycle */
  75. #define MPC107_I2C_ERR_CYCLE_ACKIN 5 /* acknowledge in cycle */
  76. #define MPC107_I2C_ERR_CYCLE_ACKOUT 6 /* acknowledge out cycle */
  77. #define MPC107_I2C_ERR_KNOWN_STATE 7 /* known state */
  78. #define MPC107_I2C_ERR_CYCLE_TIMEOUT (1<<16) /* cycle timed out */
  79. /* typedefs */
  80. /* driver command packet */
  81. typedef struct mpc107I2cCmdPckt
  82.     {
  83.     INT32  command; /* command identifier */
  84.     INT32  status; /* status (error code) */
  85.     UINT32  memoryAddress;  /* memory address */
  86.     UINT32  nBytes;     /* number of bytes to transfer */
  87.     }MPC107_I2C_CMD_PCKT;
  88. /* function declarations */
  89. IMPORT VOID mpc107I2cInit ();
  90. IMPORT INT32  mpc107i2cRead  (UINT32 deviceAddress, UINT32 numBytes,
  91.                                 char *pBuf);
  92. IMPORT INT32  mpc107i2cWrite (UINT32 deviceAddress, UINT32 numBytes,
  93.                                 char *pBuf);
  94. #ifdef __cplusplus
  95. }
  96. #endif
  97. #endif /* __INCmpc107I2ch */