| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /**
- ******************************************************************************
- * @file lib_i2c.h
- * @author Application Team
- * @version V1.1.0
- * @date 2019-10-28
- * @brief IIC library.
- ******************************************************************************
- * @attention
- *
- ******************************************************************************
- */
- #ifndef __LIB_I2C_H
- #define __LIB_I2C_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "target.h"
-
- typedef struct
- {
- uint32_t SlaveAddr;
- uint32_t GeneralCallAck;
- uint32_t AssertAcknowledge;
- uint32_t ClockSource;
- } I2C_InitType;
- /************** Bits definition for I2C_CTRL register ******************/
- #define I2C_CTRL_CR_0 (0x0U << I2C_CTRL_CR0_Pos) /*!< 0x0000000 */
- #define I2C_CTRL_CR_1 (0x1U << I2C_CTRL_CR0_Pos) /*!< 0x0000001 */
- #define I2C_CTRL_CR_2 (0x2U << I2C_CTRL_CR0_Pos) /*!< 0x0000002 */
- #define I2C_CTRL_CR_3 (0x3U << I2C_CTRL_CR0_Pos) /*!< 0x0000003 */
- #define I2C_CTRL_CR_4 (0x80U << I2C_CTRL_CR0_Pos) /*!< 0x0000080 */
- #define I2C_CTRL_CR_5 (0x81U << I2C_CTRL_CR0_Pos) /*!< 0x0000081 */
- #define I2C_CTRL_CR_6 (0x82U << I2C_CTRL_CR0_Pos) /*!< 0x0000082 */
- #define I2C_CTRL_CR_7 (0x83U << I2C_CTRL_CR0_Pos) /*!< 0x0000083 */
-
- /************** Bits definition for I2C_STS register ******************/
- #define I2C_STS_STS_0x00 (0x0U << I2C_STS_STS_Pos) /*!< 0x0000000 */
- #define I2C_STS_STS_0x08 (0x1U << I2C_STS_STS_Pos) /*!< 0x0000008 */
- #define I2C_STS_STS_0x10 (0x2U << I2C_STS_STS_Pos) /*!< 0x0000010 */
- #define I2C_STS_STS_0x18 (0x3U << I2C_STS_STS_Pos) /*!< 0x0000018 */
- #define I2C_STS_STS_0x20 (0x4U << I2C_STS_STS_Pos) /*!< 0x0000020 */
- #define I2C_STS_STS_0x28 (0x5U << I2C_STS_STS_Pos) /*!< 0x0000028 */
- #define I2C_STS_STS_0x30 (0x6U << I2C_STS_STS_Pos) /*!< 0x0000030 */
- #define I2C_STS_STS_0x38 (0x7U << I2C_STS_STS_Pos) /*!< 0x0000038 */
- #define I2C_STS_STS_0x40 (0x8U << I2C_STS_STS_Pos) /*!< 0x0000040 */
- #define I2C_STS_STS_0x48 (0x9U << I2C_STS_STS_Pos) /*!< 0x0000048 */
- #define I2C_STS_STS_0x50 (0xAU << I2C_STS_STS_Pos) /*!< 0x0000050 */
- #define I2C_STS_STS_0x58 (0xBU << I2C_STS_STS_Pos) /*!< 0x0000058 */
- #define I2C_STS_STS_0x60 (0xCU << I2C_STS_STS_Pos) /*!< 0x0000060 */
- #define I2C_STS_STS_0x68 (0xDU << I2C_STS_STS_Pos) /*!< 0x0000068 */
- #define I2C_STS_STS_0x70 (0xEU << I2C_STS_STS_Pos) /*!< 0x0000070 */
- #define I2C_STS_STS_0x78 (0xFU << I2C_STS_STS_Pos) /*!< 0x0000078 */
- #define I2C_STS_STS_0x80 (0x10U << I2C_STS_STS_Pos) /*!< 0x0000080 */
- #define I2C_STS_STS_0x88 (0x11U << I2C_STS_STS_Pos) /*!< 0x0000088 */
- #define I2C_STS_STS_0x90 (0x12U << I2C_STS_STS_Pos) /*!< 0x0000090 */
- #define I2C_STS_STS_0x98 (0x13U << I2C_STS_STS_Pos) /*!< 0x0000098 */
- #define I2C_STS_STS_0xA0 (0x14U << I2C_STS_STS_Pos) /*!< 0x00000A0 */
- #define I2C_STS_STS_0xA8 (0x15U << I2C_STS_STS_Pos) /*!< 0x00000A8 */
- #define I2C_STS_STS_0xB0 (0x16U << I2C_STS_STS_Pos) /*!< 0x00000B0 */
- #define I2C_STS_STS_0xB8 (0x17U << I2C_STS_STS_Pos) /*!< 0x00000B8 */
- #define I2C_STS_STS_0xC0 (0x18U << I2C_STS_STS_Pos) /*!< 0x00000C0 */
- #define I2C_STS_STS_0xC8 (0x19U << I2C_STS_STS_Pos) /*!< 0x00000C8 */
- #define I2C_STS_STS_0xF8 (0x1FU << I2C_STS_STS_Pos) /*!< 0x00000F8 */
- //GeneralCallAck
- #define I2C_GENERALCALLACK_ENABLE I2C_ADDR_GC
- #define I2C_GENERALCALLACK_DISABLE 0
- //AssertAcknowledge
- #define I2C_ASSERTACKNOWLEDGE_ENABLE I2C_CTRL_AA
- #define I2C_ASSERTACKNOWLEDGE_DISABLE 0
- //ClockSource
- #define I2C_CLOCKSOURCE_APBD256 I2C_CTRL_CR_0
- #define I2C_CLOCKSOURCE_APBD224 I2C_CTRL_CR_1
- #define I2C_CLOCKSOURCE_APBD192 I2C_CTRL_CR_2
- #define I2C_CLOCKSOURCE_APBD160 I2C_CTRL_CR_3
- #define I2C_CLOCKSOURCE_APBD960 I2C_CTRL_CR_4
- #define I2C_CLOCKSOURCE_APBD120 I2C_CTRL_CR_5
- #define I2C_CLOCKSOURCE_APBD60 I2C_CTRL_CR_6
- #define I2C_CLOCKSOURCE_TIM3OFD8 I2C_CTRL_CR_7
- #define I2C_CTRL_CR (0x83)
- typedef struct
- {
- uint16_t SlaveAddr;
- uint8_t SubAddrType;
- uint32_t PageRange;
- uint32_t SubAddress;
- uint8_t *pBuffer;
- uint32_t Length;
- } I2C_WRType;
- //SubAddrType
- #define I2C_SUBADDR_1BYTE (1)
- #define I2C_SUBADDR_2BYTE (2)
- #define I2C_SUBADDR_OTHER (3)
- //remap
- #define I2C_REMAP_ENABLE (1)
- #define I2C_REMAP_DISABLE (0)
- /* Private macros ------------------------------------------------------------*/
- #define IS_I2C_GC(__GC__) (((__GC__) == I2C_GENERALCALLACK_ENABLE) ||\
- ((__GC__) == I2C_GENERALCALLACK_DISABLE))
- #define IS_I2C_AA(__AA__) (((__AA__) == I2C_ASSERTACKNOWLEDGE_ENABLE) ||\
- ((__AA__) == I2C_ASSERTACKNOWLEDGE_DISABLE))
- #define IS_I2C_CLKSRC(__CLKSRC__) (((__CLKSRC__) == I2C_CLOCKSOURCE_APBD256) ||\
- ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD224) ||\
- ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD192) ||\
- ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD160) ||\
- ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD960) ||\
- ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD120) ||\
- ((__CLKSRC__) == I2C_CLOCKSOURCE_APBD60) ||\
- ((__CLKSRC__) == I2C_CLOCKSOURCE_TIM3OFD8))
- #define I2C_SUBADDR_TYPE(__TYPE__) (((__TYPE__) == I2C_SUBADDR_1BYTE) ||\
- ((__TYPE__) == I2C_SUBADDR_2BYTE) ||\
- ((__TYPE__) == I2C_SUBADDR_OTHER))
- /****************************** I2C Instances *********************************/
- #define IS_I2C_ALL_INSTANCE(INSTANCE) ((INSTANCE) == I2C)
- /* Exported Functions ------------------------------------------------------- */
- /* I2C Exported Functions Group1:
- (De)Initialization ------------------------*/
- void I2C_DeInit(uint32_t remap);
- void I2C_StructInit(I2C_InitType *InitStruct);
- void I2C_Init(I2C_InitType *InitStruct);
- /* I2C Exported Functions Group2:
- Interrupt ---------------------------------*/
- void I2C_INTConfig(uint32_t NewState);
- uint8_t I2C_GetINTStatus(void);
- void I2C_ClearINTStatus(void);
- /* I2C Exported Functions Group3:
- Transfer datas ----------------------------*/
- uint16_t I2C_MasterReadBytes(I2C_WRType *InitStruct);
- uint16_t I2C_MasterWriteBytes(I2C_WRType *InitStruct);
- /* I2C Exported Functions Group4:
- MISC Configuration ------------------------*/
- void I2C_Cmd(uint32_t NewState);
- /* I2C Exported Functions Group5:
- Others ------------------------------------*/
- void I2C_AssertAcknowledgeConfig(uint32_t NewState);
- uint8_t I2C_ReceiveData(void);
- void I2C_SendData(uint8_t Dat);
- void I2C_GenerateSTART(uint32_t NewState);
- void I2C_GenerateSTOP(uint32_t NewState);
- uint8_t I2C_GetStatusCode(void);
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __LIB_I2C_H */
- /*********************************** END OF FILE ******************************/
|