49 #define CR1_PE_Set ((uint16_t)0x0001)
50 #define CR1_PE_Reset ((uint16_t)0xFFFE)
53 #define CR1_START_Set ((uint16_t)0x0100)
54 #define CR1_START_Reset ((uint16_t)0xFEFF)
57 #define CR1_STOP_Set ((uint16_t)0x0200)
58 #define CR1_STOP_Reset ((uint16_t)0xFDFF)
61 #define CR1_ACK_Set ((uint16_t)0x0400)
62 #define CR1_ACK_Reset ((uint16_t)0xFBFF)
65 #define CR1_ENGC_Set ((uint16_t)0x0040)
66 #define CR1_ENGC_Reset ((uint16_t)0xFFBF)
69 #define CR1_SWRST_Set ((uint16_t)0x8000)
70 #define CR1_SWRST_Reset ((uint16_t)0x7FFF)
73 #define CR1_PEC_Set ((uint16_t)0x1000)
74 #define CR1_PEC_Reset ((uint16_t)0xEFFF)
77 #define CR1_ENPEC_Set ((uint16_t)0x0020)
78 #define CR1_ENPEC_Reset ((uint16_t)0xFFDF)
81 #define CR1_ENARP_Set ((uint16_t)0x0010)
82 #define CR1_ENARP_Reset ((uint16_t)0xFFEF)
85 #define CR1_NOSTRETCH_Set ((uint16_t)0x0080)
86 #define CR1_NOSTRETCH_Reset ((uint16_t)0xFF7F)
89 #define CR1_CLEAR_Mask ((uint16_t)0xFBF5)
92 #define CR2_DMAEN_Set ((uint16_t)0x0800)
93 #define CR2_DMAEN_Reset ((uint16_t)0xF7FF)
96 #define CR2_LAST_Set ((uint16_t)0x1000)
97 #define CR2_LAST_Reset ((uint16_t)0xEFFF)
100 #define CR2_FREQ_Reset ((uint16_t)0xFFC0)
103 #define OAR1_ADD0_Set ((uint16_t)0x0001)
104 #define OAR1_ADD0_Reset ((uint16_t)0xFFFE)
107 #define OAR2_ENDUAL_Set ((uint16_t)0x0001)
108 #define OAR2_ENDUAL_Reset ((uint16_t)0xFFFE)
111 #define OAR2_ADD2_Reset ((uint16_t)0xFF01)
114 #define CCR_FS_Set ((uint16_t)0x8000)
117 #define CCR_CCR_Set ((uint16_t)0x0FFF)
120 #define FLAG_Mask ((uint32_t)0x00FFFFFF)
123 #define ITEN_Mask ((uint32_t)0x07000000)
193 uint16_t tmpreg = 0, freqrange = 0;
194 uint16_t result = 0x04;
195 uint32_t pclk1 = 8000000;
215 freqrange = (uint16_t)(pclk1 / 1000000);
231 result = (uint16_t)(pclk1 / (I2C_InitStruct->
I2C_ClockSpeed << 1));
241 I2Cx->
TRISE = freqrange + 1;
249 result = (uint16_t)(pclk1 / (I2C_InitStruct->
I2C_ClockSpeed * 3));
254 result = (uint16_t)(pclk1 / (I2C_InitStruct->
I2C_ClockSpeed * 25));
263 result |= (uint16_t)0x0001;
268 I2Cx->
TRISE = (uint16_t)(((freqrange * (uint16_t)300) / (uint16_t)1000) + (uint16_t)1);
284 tmpreg |= (uint16_t)((uint32_t)I2C_InitStruct->
I2C_Mode | I2C_InitStruct->
I2C_Ack);
479 tmpreg |= (uint16_t)((uint16_t)Address & (uint16_t)0x00FE);
560 I2Cx->
CR2 &= (uint16_t)~I2C_IT;
588 return (uint8_t)I2Cx->
DR;
638 __IO uint32_t tmp = 0;
644 tmp = (uint32_t) I2Cx;
648 return (*(
__IO uint16_t *) tmp);
830 return ((I2Cx->
SR2) >> 8);
1032 uint32_t lastevent = 0;
1033 uint32_t flag1 = 0, flag2 = 0;
1043 flag2 = flag2 << 16;
1046 lastevent = (flag1 | flag2) &
FLAG_Mask;
1049 if ((lastevent & I2C_EVENT) == I2C_EVENT)
1080 uint32_t lastevent = 0;
1081 uint32_t flag1 = 0, flag2 = 0;
1089 flag2 = flag2 << 16;
1092 lastevent = (flag1 | flag2) &
FLAG_Mask;
1136 __IO uint32_t i2creg = 0, i2cxbase = 0;
1143 i2cxbase = (uint32_t)I2Cx;
1146 i2creg = I2C_FLAG >> 28;
1159 I2C_FLAG = (uint32_t)(I2C_FLAG >> 16);
1164 if(((*(
__IO uint32_t *)i2cxbase) & I2C_FLAG) != (uint32_t)
RESET)
1214 uint32_t flagpos = 0;
1221 I2Cx->
SR1 = (uint16_t)~flagpos;
1249 uint32_t enablestatus = 0;
1256 enablestatus = (uint32_t)(((I2C_IT &
ITEN_Mask) >> 16) & (I2Cx->
CR2)) ;
1262 if (((I2Cx->
SR1 & I2C_IT) != (uint32_t)
RESET) && enablestatus)
1309 uint32_t flagpos = 0;
1316 I2Cx->
SR1 = (uint16_t)~flagpos;