44#ifndef G32R4xx_DDL_I2C_H
45#define G32R4xx_DDL_I2C_H
73#define DDL_I2C_MAX_SPEED_STANDARD 100000U
74#define DDL_I2C_MAX_SPEED_FAST 400000U
80#if defined(USE_FULL_DDL_DRIVER)
90#if defined(USE_FULL_DDL_DRIVER)
112#if defined(I2C_FILTER_ANFDIS) && defined(I2C_FILTER_DNFCFG)
153#define DDL_I2C_STS1_STARTFLG I2C_STS1_STARTFLG
154#define DDL_I2C_STS1_ADDRFLG I2C_STS1_ADDRFLG
156#define DDL_I2C_STS1_BTCFLG I2C_STS1_BTCFLG
157#define DDL_I2C_STS1_ADDR10FLG I2C_STS1_ADDR10FLG
158#define DDL_I2C_STS1_STOPFLG I2C_STS1_STOPFLG
159#define DDL_I2C_STS1_RXBNEFLG I2C_STS1_RXBNEFLG
160#define DDL_I2C_STS1_TXBEFLG I2C_STS1_TXBEFLG
161#define DDL_I2C_STS1_BERRFLG I2C_STS1_BERRFLG
162#define DDL_I2C_STS1_ALFLG I2C_STS1_ALFLG
163#define DDL_I2C_STS1_AEFLG I2C_STS1_AEFLG
164#define DDL_I2C_STS1_OVRURFLG I2C_STS1_OVRURFLG
165#define DDL_I2C_STS1_PECEFLG I2C_ISR_PECERR
166#define DDL_I2C_STS1_TTEFLG I2C_ISR_TIMEOUT
167#define DDL_I2C_STS1_SMALERT I2C_ISR_SMALERT
168#define DDL_I2C_STS2_MSFLG I2C_STS2_MSFLG
169#define DDL_I2C_STS2_BUSBSYFLG I2C_STS2_BUSBSYFLG
170#define DDL_I2C_STS2_TRFLG I2C_STS2_TRFLG
171#define DDL_I2C_STS2_GENCALLFLG I2C_STS2_GENCALLFLG
172#define DDL_I2C_STS2_SMBDADDRFLG I2C_STS2_SMBDADDRFLG
173#define DDL_I2C_STS2_SMMHADDR I2C_STS2_SMMHADDR
174#define DDL_I2C_STS2_DUALADDRFLG I2C_STS2_DUALADDRFLG
187#define DDL_I2C_EVENT_MASTER_MODE_SELECT 0x00030001u
188#define DDL_I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED 0x00070082u
189#define DDL_I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED 0x00030002u
190#define DDL_I2C_EVENT_MASTER_MODE_ADDRESS10 0x00030008u
191#define DDL_I2C_EVENT_MASTER_BYTE_RECEIVED 0x00030040u
192#define DDL_I2C_EVENT_MASTER_BYTE_TRANSMITTING 0x00070080u
193#define DDL_I2C_EVENT_MASTER_BYTE_TRANSMITTED 0x00070084u
196#define DDL_I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED 0x00020002u
197#define DDL_I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED 0x00060082u
198#define DDL_I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED 0x00820000u
199#define DDL_I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED 0x00860080u
200#define DDL_I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED 0x00120000u
203#define DDL_I2C_EVENT_SLAVE_BYTE_RECEIVED 0x00020040u
204#define DDL_I2C_EVENT_SLAVE_BYTE_RECEIVED1 0x00820040u
205#define DDL_I2C_EVENT_SLAVE_BYTE_RECEIVED2 0x00120040u
206#define DDL_I2C_EVENT_SLAVE_STOP_DETECTED 0x00000010u
209#define DDL_I2C_EVENT_SLAVE_BYTE_TRANSMITTED 0x00060084u
210#define DDL_I2C_EVENT_SLAVE_BYTE_TRANSMITTED1 0x00860084u
211#define DDL_I2C_EVENT_SLAVE_BYTE_TRANSMITTED2 0x00160084u
212#define DDL_I2C_EVENT_SLAVE_BYTE_TRANSMITTING 0x00060080u
213#define DDL_I2C_EVENT_SLAVE_ACK_FAILURE 0x00000400u
223#define DDL_I2C_CTRL2_EVIEN I2C_CTRL2_EVIEN
224#define DDL_I2C_CTRL2_BUFIEN I2C_CTRL2_BUFIEN
225#define DDL_I2C_CTRL2_ERRIEN I2C_CTRL2_ERRIEN
230#if defined(I2C_FILTER_ANFDIS)
234#define DDL_I2C_ANALOGFILTER_ENABLE 0x00000000U
235#define DDL_I2C_ANALOGFILTER_DISABLE I2C_FILTER_ANFDIS
244#define DDL_I2C_OWNADDRESS1_7BIT 0x00004000U
245#define DDL_I2C_OWNADDRESS1_10BIT (uint32_t)(I2C_SADDR1_ADDRLEN | 0x00004000U)
253#define DDL_I2C_DUTYCYCLE_2 0x00000000U
254#define DDL_I2C_DUTYCYCLE_16_9 I2C_CLKCTRL_FDUTYCFG
262#define DDL_I2C_CLOCK_SPEED_STANDARD_MODE 0x00000000U
263#define DDL_I2C_CLOCK_SPEED_FAST_MODE I2C_CLKCTRL_SPEEDCFG
271#define DDL_I2C_MODE_I2C 0x00000000U
272#define DDL_I2C_MODE_SMBUS_HOST (uint32_t)(I2C_CTRL1_SMBEN | I2C_CTRL1_SMBTCFG | I2C_CTRL1_ARPEN)
273#define DDL_I2C_MODE_SMBUS_DEVICE I2C_CTRL1_SMBEN
274#define DDL_I2C_MODE_SMBUS_DEVICE_ARP (uint32_t)(I2C_CTRL1_SMBEN | I2C_CTRL1_ARPEN)
282#define DDL_I2C_ACK I2C_CTRL1_ACKEN
283#define DDL_I2C_NACK 0x00000000U
291#define DDL_I2C_DIRECTION_WRITE I2C_STS2_TRFLG
292#define DDL_I2C_DIRECTION_READ 0x00000000U
317#define DDL_I2C_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
325#define DDL_I2C_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
339#define __DDL_I2C_FREQ_HZ_TO_MHZ(__PCLK__) (uint32_t)((__PCLK__)/1000000U)
346#define __DDL_I2C_FREQ_MHZ_TO_HZ(__PCLK__) (uint32_t)((__PCLK__)*1000000U)
354#define __DDL_I2C_RISE_TIME(__FREQRANGE__, __SPEED__) (uint32_t)(((__SPEED__) <= DDL_I2C_MAX_SPEED_STANDARD) ? ((__FREQRANGE__) + 1U) : ((((__FREQRANGE__) * 300U) / 1000U) + 1U))
365#define __DDL_I2C_SPEED_TO_CCR(__PCLK__, __SPEED__, __DUTYCYCLE__) (uint32_t)(((__SPEED__) <= DDL_I2C_MAX_SPEED_STANDARD)? \
366 (__DDL_I2C_SPEED_STANDARD_TO_CCR((__PCLK__), (__SPEED__))) : \
367 (__DDL_I2C_SPEED_FAST_TO_CCR((__PCLK__), (__SPEED__), (__DUTYCYCLE__))))
375#define __DDL_I2C_SPEED_STANDARD_TO_CCR(__PCLK__, __SPEED__) (uint32_t)(((((__PCLK__)/((__SPEED__) << 1U)) & I2C_CLKCTRL_CLKS) < 4U)? 4U:((__PCLK__) / ((__SPEED__) << 1U)))
386#define __DDL_I2C_SPEED_FAST_TO_CCR(__PCLK__, __SPEED__, __DUTYCYCLE__) (uint32_t)(((__DUTYCYCLE__) == DDL_I2C_DUTYCYCLE_2)? \
387 (((((__PCLK__) / ((__SPEED__) * 3U)) & I2C_CLKCTRL_CLKS) == 0U)? 1U:((__PCLK__) / ((__SPEED__) * 3U))) : \
388 (((((__PCLK__) / ((__SPEED__) * 25U)) & I2C_CLKCTRL_CLKS) == 0U)? 1U:((__PCLK__) / ((__SPEED__) * 25U))))
395#define __DDL_I2C_10BIT_ADDRESS(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FF))))
402#define __DDL_I2C_10BIT_HEADER_WRITE(__ADDRESS__) ((uint8_t)((uint16_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0x0300))) >> 7) | (uint16_t)(0xF0))))
409#define __DDL_I2C_10BIT_HEADER_READ(__ADDRESS__) ((uint8_t)((uint16_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0x0300))) >> 7) | (uint16_t)(0xF1))))
432 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_I2CEN);
442 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_I2CEN);
452 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_I2CEN) == (I2C_CTRL1_I2CEN));
455#if defined(I2C_FILTER_ANFDIS) && defined(I2C_FILTER_DNFCFG)
470 MODIFY_REG(I2Cx->FILTER, I2C_FILTER_ANFDIS | I2C_FILTER_DNFCFG, AnalogFilter | DigitalFilter);
474#if defined(I2C_FILTER_DNFCFG)
486 MODIFY_REG(I2Cx->FILTER, I2C_FILTER_DNFCFG, DigitalFilter);
496 return (uint32_t)(READ_BIT(I2Cx->FILTER, I2C_FILTER_DNFCFG));
500#if defined(I2C_FILTER_ANFDIS)
509 CLEAR_BIT(I2Cx->FILTER, I2C_FILTER_ANFDIS);
520 SET_BIT(I2Cx->FILTER, I2C_FILTER_ANFDIS);
530 return (READ_BIT(I2Cx->FILTER, I2C_FILTER_ANFDIS) == (I2C_FILTER_ANFDIS));
542 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_CLKSTRETCHD);
553 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_CLKSTRETCHD);
563 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_CLKSTRETCHD) != (I2C_CTRL1_CLKSTRETCHD));
574 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_SRBEN);
585 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_SRBEN);
595 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_SRBEN) == (I2C_CTRL1_SRBEN));
609 MODIFY_REG(I2Cx->SADDR1, I2C_SADDR1_ADDR0 | I2C_SADDR1_ADDR1_7 | I2C_SADDR1_ADDR8_9 | I2C_SADDR1_ADDRLEN, OwnAddress1 | OwnAddrSize);
621 MODIFY_REG(I2Cx->SADDR2, I2C_SADDR2_ADDR2, OwnAddress2);
631 SET_BIT(I2Cx->SADDR2, I2C_SADDR2_ADDRNUM);
641 CLEAR_BIT(I2Cx->SADDR2, I2C_SADDR2_ADDRNUM);
651 return (READ_BIT(I2Cx->SADDR2, I2C_SADDR2_ADDRNUM) == (I2C_SADDR2_ADDRNUM));
685 MODIFY_REG(I2Cx->CLKCTRL, I2C_CLKCTRL_FDUTYCFG, DutyCycle);
697 return (uint32_t)(READ_BIT(I2Cx->CLKCTRL, I2C_CLKCTRL_FDUTYCFG));
710 MODIFY_REG(I2Cx->CLKCTRL, I2C_CLKCTRL_SPEEDCFG, ClockSpeedMode);
722 return (uint32_t)(READ_BIT(I2Cx->CLKCTRL, I2C_CLKCTRL_SPEEDCFG));
734 MODIFY_REG(I2Cx->RISETMAX, I2C_RISETMAX_RISETMAX, RiseTime);
744 return (uint32_t)(READ_BIT(I2Cx->RISETMAX, I2C_RISETMAX_RISETMAX));
756 MODIFY_REG(I2Cx->CLKCTRL, I2C_CLKCTRL_CLKS, ClockPeriod);
766 return (uint32_t)(READ_BIT(I2Cx->CLKCTRL, I2C_CLKCTRL_CLKS));
783 uint32_t freqrange = 0x0U;
784 uint32_t clockconfig = 0x0U;
790 MODIFY_REG(I2Cx->CTRL2, I2C_CTRL2_CLKFCFG, freqrange);
793 MODIFY_REG(I2Cx->RISETMAX, I2C_RISETMAX_RISETMAX,
__DDL_I2C_RISE_TIME(freqrange, ClockSpeed));
800 __DDL_I2C_SPEED_FAST_TO_CCR(PeriphClock, ClockSpeed, DutyCycle) | \
807 __DDL_I2C_SPEED_STANDARD_TO_CCR(PeriphClock, ClockSpeed);
811 MODIFY_REG(I2Cx->CLKCTRL, (I2C_CLKCTRL_SPEEDCFG | I2C_CLKCTRL_FDUTYCFG | I2C_CLKCTRL_CLKS), clockconfig);
828 MODIFY_REG(I2Cx->CTRL1, I2C_CTRL1_SMBEN | I2C_CTRL1_SMBTCFG | I2C_CTRL1_ARPEN, PeripheralMode);
844 return (uint32_t)(READ_BIT(I2Cx->CTRL1, I2C_CTRL1_SMBEN | I2C_CTRL1_SMBTCFG | I2C_CTRL1_ARPEN));
861 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_ALERTEN);
878 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_ALERTEN);
890 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_ALERTEN) == (I2C_CTRL1_ALERTEN));
902 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_PECEN);
914 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_PECEN);
926 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_PECEN) == (I2C_CTRL1_PECEN));
944 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_DMAEN);
954 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_DMAEN);
964 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_DMAEN) == (I2C_CTRL2_DMAEN));
974 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_DMAEN);
984 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_DMAEN);
994 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_DMAEN) == (I2C_CTRL2_DMAEN));
1004 return (uint32_t) & (I2Cx->DATA);
1022 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN);
1032 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN);
1042 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN) == (I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN));
1052 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN);
1062 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN);
1072 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN) == (I2C_CTRL2_EVIEN | I2C_CTRL2_BUFIEN));
1092 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN);
1110 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN);
1120 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_EVIEN) == (I2C_CTRL2_EVIEN));
1133 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_BUFIEN);
1146 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_BUFIEN);
1156 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_BUFIEN) == (I2C_CTRL2_BUFIEN));
1176 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_ERRIEN);
1196 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_ERRIEN);
1206 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_ERRIEN) == (I2C_CTRL2_ERRIEN));
1228 uint32_t flag1 = READ_BIT(I2Cx->STS1, 0x0000FFFFUL);
1229 uint32_t flag2 = READ_BIT(I2Cx->STS2, 0x0000FFFFUL);
1235 uint32_t lastevent = (flag1 | flag2) & 0x00FFFFFFUL;
1238 if ((lastevent & i2cEvent) == i2cEvent)
1256 uint32_t flag1 = READ_BIT(I2Cx->STS1, 0x0000FFFFUL);
1257 uint32_t flag2 = READ_BIT(I2Cx->STS2, 0x0000FFFFUL);
1263 uint32_t lastevent = (flag1 | flag2) & 0x00FFFFFFUL;
1285 return (READ_BIT(I2Cx->STS1, I2C_STS1_STARTFLG) == (I2C_STS1_STARTFLG));
1297 return (READ_BIT(I2Cx->STS1, I2C_STS1_ADDRFLG) == (I2C_STS1_ADDRFLG));
1309 __IO uint32_t tmpreg;
1310 tmpreg = I2Cx->STS1;
1312 tmpreg = I2Cx->STS2;
1325 return (READ_BIT(I2Cx->STS1, I2C_STS1_BTCFLG) == (I2C_STS1_BTCFLG));
1337 return (READ_BIT(I2Cx->STS1, I2C_STS1_ADDR10FLG) == (I2C_STS1_ADDR10FLG));
1349 return (READ_BIT(I2Cx->STS1, I2C_STS1_STOPFLG) == (I2C_STS1_STOPFLG));
1361 __IO uint32_t tmpreg;
1362 tmpreg = I2Cx->STS1;
1364 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_I2CEN);
1376 return (READ_BIT(I2Cx->STS1, I2C_STS1_RXBNEFLG) == (I2C_STS1_RXBNEFLG));
1388 return (READ_BIT(I2Cx->STS1, I2C_STS1_TXBEFLG) == (I2C_STS1_TXBEFLG));
1400 return (READ_BIT(I2Cx->STS1, I2C_STS1_BERRFLG) == (I2C_STS1_BERRFLG));
1410 CLEAR_BIT(I2Cx->STS1, I2C_STS1_BERRFLG);
1422 return (READ_BIT(I2Cx->STS1, I2C_STS1_ALFLG) == (I2C_STS1_ALFLG));
1432 CLEAR_BIT(I2Cx->STS1, I2C_STS1_ALFLG);
1444 return (READ_BIT(I2Cx->STS1, I2C_STS1_AEFLG) == (I2C_STS1_AEFLG));
1454 CLEAR_BIT(I2Cx->STS1, I2C_STS1_AEFLG);
1466 return (READ_BIT(I2Cx->STS1, I2C_STS1_OVRURFLG) == (I2C_STS1_OVRURFLG));
1476 CLEAR_BIT(I2Cx->STS1, I2C_STS1_OVRURFLG);
1488 return (READ_BIT(I2Cx->STS1, I2C_STS1_PECEFLG) == (I2C_STS1_PECEFLG));
1498 CLEAR_BIT(I2Cx->STS1, I2C_STS1_PECEFLG);
1510 return (READ_BIT(I2Cx->STS1, I2C_STS1_TTEFLG) == (I2C_STS1_TTEFLG));
1522 CLEAR_BIT(I2Cx->STS1, I2C_STS1_TTEFLG);
1534 return (READ_BIT(I2Cx->STS1, I2C_STS1_SMBALTFLG) == (I2C_STS1_SMBALTFLG));
1546 CLEAR_BIT(I2Cx->STS1, I2C_STS1_SMBALTFLG);
1558 return (READ_BIT(I2Cx->STS2, I2C_STS2_MSFLG) == (I2C_STS2_MSFLG));
1570 return (READ_BIT(I2Cx->STS2, I2C_STS2_BUSBSYFLG) == (I2C_STS2_BUSBSYFLG));
1583 return (READ_BIT(I2Cx->STS2, I2C_STS2_GENCALLFLG) == (I2C_STS2_GENCALLFLG));
1598 return (READ_BIT(I2Cx->STS2, I2C_STS2_SMBDADDRFLG) == (I2C_STS2_SMBDADDRFLG));
1613 return (READ_BIT(I2Cx->STS2, I2C_STS2_SMMHADDR) == (I2C_STS2_SMMHADDR));
1625 return (READ_BIT(I2Cx->STS2, I2C_STS2_DUALADDRFLG) == (I2C_STS2_DUALADDRFLG));
1643 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_SWRST);
1653 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_SWRST);
1663 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_SWRST) == (I2C_CTRL1_SWRST));
1677 MODIFY_REG(I2Cx->CTRL1, I2C_CTRL1_ACKEN, TypeAcknowledge);
1689 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_START);
1699 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_STOP);
1710 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_ACKPOS);
1721 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_ACKPOS);
1731 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_ACKPOS) == (I2C_CTRL1_ACKPOS));
1745 return (uint32_t)(READ_BIT(I2Cx->STS2, I2C_STS2_TRFLG));
1756 SET_BIT(I2Cx->CTRL2, I2C_CTRL2_LTCFG);
1767 CLEAR_BIT(I2Cx->CTRL2, I2C_CTRL2_LTCFG);
1777 return (READ_BIT(I2Cx->CTRL2, I2C_CTRL2_LTCFG) == (I2C_CTRL2_LTCFG));
1791 SET_BIT(I2Cx->CTRL1, I2C_CTRL1_PEC);
1803 CLEAR_BIT(I2Cx->CTRL1, I2C_CTRL1_PEC);
1815 return (READ_BIT(I2Cx->CTRL1, I2C_CTRL1_PEC) == (I2C_CTRL1_PEC));
1827 return (uint32_t)(READ_BIT(I2Cx->STS2, I2C_STS2_PECVALUE) >> I2C_STS2_PECVALUE_Pos);
1837 return (uint8_t)(READ_BIT(I2Cx->DATA, I2C_DATA_DATA));
1848 MODIFY_REG(I2Cx->DATA, I2C_DATA_DATA, Data);
1855#if defined(USE_FULL_DDL_DRIVER)
#define DDL_I2C_CLOCK_SPEED_STANDARD_MODE
#define DDL_I2C_CLOCK_SPEED_FAST_MODE
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledClockStretching(I2C_TypeDef *I2Cx)
Check if Clock stretching is enabled or disabled.
__STATIC_INLINE void DDL_I2C_SetRiseTime(I2C_TypeDef *I2Cx, uint32_t RiseTime)
Configure the SCL, SDA rising time.
__STATIC_INLINE void DDL_I2C_ConfigSpeed(I2C_TypeDef *I2Cx, uint32_t PeriphClock, uint32_t ClockSpeed, uint32_t DutyCycle)
Configure the SCL speed.
__STATIC_INLINE void DDL_I2C_EnableSMBusAlert(I2C_TypeDef *I2Cx)
Enable SMBus alert (Host or Device mode).
__STATIC_INLINE void DDL_I2C_ConfigFilters(I2C_TypeDef *I2Cx, uint32_t AnalogFilter, uint32_t DigitalFilter)
Configure Noise Filters (Analog and Digital).
__STATIC_INLINE void DDL_I2C_DisableSMBusPEC(I2C_TypeDef *I2Cx)
Disable SMBus Packet Error Calculation (PEC).
__STATIC_INLINE void DDL_I2C_SetClockSpeedMode(I2C_TypeDef *I2Cx, uint32_t ClockSpeedMode)
Configure the I2C master clock speed mode.
__STATIC_INLINE void DDL_I2C_EnableSMBusPEC(I2C_TypeDef *I2Cx)
Enable SMBus Packet Error Calculation (PEC).
__STATIC_INLINE void DDL_I2C_SetOwnAddress1(I2C_TypeDef *I2Cx, uint32_t OwnAddress1, uint32_t OwnAddrSize)
Set the Own Address1.
__STATIC_INLINE uint32_t DDL_I2C_GetDigitalFilter(I2C_TypeDef *I2Cx)
Get the current Digital Noise Filter configuration.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledSMBusAlert(I2C_TypeDef *I2Cx)
Check if SMBus alert (Host or Device mode) is enabled or disabled.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledOwnAddress2(I2C_TypeDef *I2Cx)
Check if Own Address1 acknowledge is enabled or disabled.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledSMBusPEC(I2C_TypeDef *I2Cx)
Check if SMBus Packet Error Calculation (PEC) is enabled or disabled.
__STATIC_INLINE void DDL_I2C_DisableAnalogFilter(I2C_TypeDef *I2Cx)
Disable Analog Noise Filter.
__STATIC_INLINE void DDL_I2C_SetMode(I2C_TypeDef *I2Cx, uint32_t PeripheralMode)
Configure peripheral mode.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledAnalogFilter(I2C_TypeDef *I2Cx)
Check if Analog Noise Filter is enabled or disabled.
__STATIC_INLINE void DDL_I2C_SetPeriphClock(I2C_TypeDef *I2Cx, uint32_t PeriphClock)
Configure the Peripheral clock frequency.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabled(I2C_TypeDef *I2Cx)
Check if the I2C peripheral is enabled or disabled.
__STATIC_INLINE void DDL_I2C_DisableOwnAddress2(I2C_TypeDef *I2Cx)
Disable acknowledge on Own Address2 match address.
__STATIC_INLINE void DDL_I2C_DisableSMBusAlert(I2C_TypeDef *I2Cx)
Disable SMBus alert (Host or Device mode).
__STATIC_INLINE uint32_t DDL_I2C_GetPeriphClock(I2C_TypeDef *I2Cx)
Get the Peripheral clock frequency.
__STATIC_INLINE uint32_t DDL_I2C_GetRiseTime(I2C_TypeDef *I2Cx)
Get the SCL, SDA rising time.
__STATIC_INLINE void DDL_I2C_DisableClockStretching(I2C_TypeDef *I2Cx)
Disable Clock stretching.
__STATIC_INLINE void DDL_I2C_EnableAnalogFilter(I2C_TypeDef *I2Cx)
Enable Analog Noise Filter.
__STATIC_INLINE void DDL_I2C_EnableGeneralCall(I2C_TypeDef *I2Cx)
Enable General Call.
__STATIC_INLINE uint32_t DDL_I2C_GetClockPeriod(I2C_TypeDef *I2Cx)
Get the SCL high and low period.
__STATIC_INLINE uint32_t DDL_I2C_GetDutyCycle(I2C_TypeDef *I2Cx)
Get the Duty cycle (Fast mode only).
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledGeneralCall(I2C_TypeDef *I2Cx)
Check if General Call is enabled or disabled.
__STATIC_INLINE void DDL_I2C_EnableClockStretching(I2C_TypeDef *I2Cx)
Enable Clock stretching.
__STATIC_INLINE void DDL_I2C_Enable(I2C_TypeDef *I2Cx)
Enable I2C peripheral (PE = 1).
__STATIC_INLINE void DDL_I2C_DisableGeneralCall(I2C_TypeDef *I2Cx)
Disable General Call.
__STATIC_INLINE void DDL_I2C_SetOwnAddress2(I2C_TypeDef *I2Cx, uint32_t OwnAddress2)
Set the 7bits Own Address2.
__STATIC_INLINE uint32_t DDL_I2C_GetClockSpeedMode(I2C_TypeDef *I2Cx)
Get the the I2C master speed mode.
__STATIC_INLINE void DDL_I2C_SetDutyCycle(I2C_TypeDef *I2Cx, uint32_t DutyCycle)
Configure the Duty cycle (Fast mode only).
__STATIC_INLINE void DDL_I2C_SetDigitalFilter(I2C_TypeDef *I2Cx, uint32_t DigitalFilter)
Configure Digital Noise Filter.
__STATIC_INLINE void DDL_I2C_SetClockPeriod(I2C_TypeDef *I2Cx, uint32_t ClockPeriod)
Configure the SCL high and low period.
__STATIC_INLINE uint32_t DDL_I2C_GetMode(I2C_TypeDef *I2Cx)
Get peripheral mode.
__STATIC_INLINE void DDL_I2C_EnableOwnAddress2(I2C_TypeDef *I2Cx)
Enable acknowledge on Own Address2 match address.
__STATIC_INLINE void DDL_I2C_Disable(I2C_TypeDef *I2Cx)
Disable I2C peripheral (PE = 0).
__STATIC_INLINE void DDL_I2C_DisableDMAReq_TX(I2C_TypeDef *I2Cx)
Disable DMA transmission requests.
__STATIC_INLINE void DDL_I2C_EnableDMAReq_RX(I2C_TypeDef *I2Cx)
Enable DMA reception requests.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledDMAReq_RX(I2C_TypeDef *I2Cx)
Check if DMA reception requests are enabled or disabled.
__STATIC_INLINE void DDL_I2C_EnableDMAReq_TX(I2C_TypeDef *I2Cx)
Enable DMA transmission requests.
__STATIC_INLINE void DDL_I2C_DisableDMAReq_RX(I2C_TypeDef *I2Cx)
Disable DMA reception requests.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledDMAReq_TX(I2C_TypeDef *I2Cx)
Check if DMA transmission requests are enabled or disabled.
__STATIC_INLINE uint32_t DDL_I2C_DMA_GetRegAddr(I2C_TypeDef *I2Cx)
Get the data register address used for DMA transfer.
__STATIC_INLINE void DDL_I2C_EnableBitPOS(I2C_TypeDef *I2Cx)
Enable bit POS (master/host mode).
__STATIC_INLINE void DDL_I2C_EnableLastDMA(I2C_TypeDef *I2Cx)
Enable DMA last transfer.
__STATIC_INLINE uint32_t DDL_I2C_GetTransferDirection(I2C_TypeDef *I2Cx)
Indicate the value of transfer direction.
__STATIC_INLINE uint8_t DDL_I2C_ReceiveData8(I2C_TypeDef *I2Cx)
Read Receive Data register.
__STATIC_INLINE void DDL_I2C_DisableReset(I2C_TypeDef *I2Cx)
Disable Reset of I2C peripheral.
__STATIC_INLINE void DDL_I2C_TransmitData8(I2C_TypeDef *I2Cx, uint8_t Data)
Write in Transmit Data Register .
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledBitPOS(I2C_TypeDef *I2Cx)
Check if bit POS is enabled or disabled.
__STATIC_INLINE void DDL_I2C_EnableSMBusPECCompare(I2C_TypeDef *I2Cx)
Enable transfer or internal comparison of the SMBus Packet Error byte (transmission or reception mode...
__STATIC_INLINE uint32_t DDL_I2C_GetSMBusPEC(I2C_TypeDef *I2Cx)
Get the SMBus Packet Error byte calculated.
__STATIC_INLINE uint32_t DDL_I2C_IsResetEnabled(I2C_TypeDef *I2Cx)
Check if the I2C peripheral is under reset state or not.
__STATIC_INLINE void DDL_I2C_EnableReset(I2C_TypeDef *I2Cx)
Enable Reset of I2C peripheral.
__STATIC_INLINE void DDL_I2C_GenerateStartCondition(I2C_TypeDef *I2Cx)
Generate a START or RESTART condition.
__STATIC_INLINE void DDL_I2C_DisableLastDMA(I2C_TypeDef *I2Cx)
Disable DMA last transfer.
__STATIC_INLINE void DDL_I2C_GenerateStopCondition(I2C_TypeDef *I2Cx)
Generate a STOP condition after the current byte transfer (master mode).
__STATIC_INLINE void DDL_I2C_AcknowledgeNextData(I2C_TypeDef *I2Cx, uint32_t TypeAcknowledge)
Prepare the generation of a ACKnowledge or Non ACKnowledge condition after the address receive match ...
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledSMBusPECCompare(I2C_TypeDef *I2Cx)
Check if the SMBus Packet Error byte transfer or internal comparison is requested or not.
__STATIC_INLINE void DDL_I2C_DisableSMBusPECCompare(I2C_TypeDef *I2Cx)
Disable transfer or internal comparison of the SMBus Packet Error byte (transmission or reception mod...
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledLastDMA(I2C_TypeDef *I2Cx)
Check if DMA last transfer is enabled or disabled.
__STATIC_INLINE void DDL_I2C_DisableBitPOS(I2C_TypeDef *I2Cx)
Disable bit POS (master/host mode).
__STATIC_INLINE uint32_t I2C_ReadLastEvent(I2C_TypeDef *I2Cx)
Reads and returns the last I2C event status.
__STATIC_INLINE uint32_t DDL_I2C_ReadEventStatus(I2C_TypeDef *I2Cx, uint32_t i2cEvent)
Checks if the current I2C event matches the specified event.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_DUAL(I2C_TypeDef *I2Cx)
Indicate the status of Dual flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveSMBusFlag_TIMEOUT(I2C_TypeDef *I2Cx)
Indicate the status of SMBus Timeout detection flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_ADD10(I2C_TypeDef *I2Cx)
Indicate the status of 10-bit header sent (master mode).
__STATIC_INLINE void DDL_I2C_ClearSMBusFlag_PECERR(I2C_TypeDef *I2Cx)
Clear SMBus PEC error flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_AF(I2C_TypeDef *I2Cx)
Indicate the status of Acknowledge failure flag.
__STATIC_INLINE void DDL_I2C_ClearFlag_BERR(I2C_TypeDef *I2Cx)
Clear Bus error flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_START(I2C_TypeDef *I2Cx)
Indicate the status of Start Bit (master mode).
__STATIC_INLINE uint32_t DDL_I2C_IsActiveSMBusFlag_PECERR(I2C_TypeDef *I2Cx)
Indicate the status of SMBus PEC error flag in reception.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_MSL(I2C_TypeDef *I2Cx)
Indicate the status of Master/Slave flag.
__STATIC_INLINE void DDL_I2C_ClearFlag_STOP(I2C_TypeDef *I2Cx)
Clear Stop detection flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_RXNE(I2C_TypeDef *I2Cx)
Indicate the status of Receive data register not empty flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_OVR(I2C_TypeDef *I2Cx)
Indicate the status of Overrun/Underrun flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_ADDR(I2C_TypeDef *I2Cx)
Indicate the status of Address sent (master mode) or Address matched flag (slave mode).
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_TXE(I2C_TypeDef *I2Cx)
Indicate the status of Transmit data register empty flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_BERR(I2C_TypeDef *I2Cx)
Indicate the status of Bus error flag.
__STATIC_INLINE void DDL_I2C_ClearFlag_AF(I2C_TypeDef *I2Cx)
Clear Acknowledge failure flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveSMBusFlag_SMBHOST(I2C_TypeDef *I2Cx)
Indicate the status of SMBus Host address reception (Slave mode).
__STATIC_INLINE void DDL_I2C_ClearFlag_ARLO(I2C_TypeDef *I2Cx)
Clear Arbitration lost flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveSMBusFlag_ALERT(I2C_TypeDef *I2Cx)
Indicate the status of SMBus alert flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_ARLO(I2C_TypeDef *I2Cx)
Indicate the status of Arbitration lost flag.
__STATIC_INLINE void DDL_I2C_ClearSMBusFlag_ALERT(I2C_TypeDef *I2Cx)
Clear SMBus Alert flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_BUSY(I2C_TypeDef *I2Cx)
Indicate the status of Bus Busy flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_BTF(I2C_TypeDef *I2Cx)
Indicate the status of Byte Transfer Finished flag. RESET: When Data byte transfer not done....
__STATIC_INLINE void DDL_I2C_ClearFlag_ADDR(I2C_TypeDef *I2Cx)
Clear Address Matched flag.
__STATIC_INLINE void DDL_I2C_ClearSMBusFlag_TIMEOUT(I2C_TypeDef *I2Cx)
Clear SMBus Timeout detection flag.
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_STOP(I2C_TypeDef *I2Cx)
Indicate the status of Stop detection flag (slave mode).
__STATIC_INLINE uint32_t DDL_I2C_IsActiveSMBusFlag_SMBDEFAULT(I2C_TypeDef *I2Cx)
Indicate the status of SMBus Device default address reception (Slave mode).
__STATIC_INLINE uint32_t DDL_I2C_IsActiveFlag_GENCALL(I2C_TypeDef *I2Cx)
Indicate the status of General call address reception (Slave mode).
__STATIC_INLINE void DDL_I2C_ClearFlag_OVR(I2C_TypeDef *I2Cx)
Clear Overrun/Underrun flag.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledIT_TX(I2C_TypeDef *I2Cx)
Check if the TXE Interrupt is enabled or disabled.
__STATIC_INLINE void DDL_I2C_EnableIT_EVT(I2C_TypeDef *I2Cx)
Enable Events interrupts.
__STATIC_INLINE void DDL_I2C_DisableIT_TX(I2C_TypeDef *I2Cx)
Disable TXE interrupt.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledIT_RX(I2C_TypeDef *I2Cx)
Check if the RXNE Interrupt is enabled or disabled.
__STATIC_INLINE void DDL_I2C_DisableIT_ERR(I2C_TypeDef *I2Cx)
Disable Error interrupts.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledIT_BUF(I2C_TypeDef *I2Cx)
Check if Buffer interrupts are enabled or disabled.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledIT_ERR(I2C_TypeDef *I2Cx)
Check if Error interrupts are enabled or disabled.
__STATIC_INLINE void DDL_I2C_DisableIT_BUF(I2C_TypeDef *I2Cx)
Disable Buffer interrupts.
__STATIC_INLINE void DDL_I2C_DisableIT_RX(I2C_TypeDef *I2Cx)
Disable RXNE interrupt.
__STATIC_INLINE void DDL_I2C_DisableIT_EVT(I2C_TypeDef *I2Cx)
Disable Events interrupts.
__STATIC_INLINE void DDL_I2C_EnableIT_RX(I2C_TypeDef *I2Cx)
Enable RXNE interrupt.
__STATIC_INLINE void DDL_I2C_EnableIT_BUF(I2C_TypeDef *I2Cx)
Enable Buffer interrupts.
__STATIC_INLINE void DDL_I2C_EnableIT_ERR(I2C_TypeDef *I2Cx)
Enable Error interrupts.
__STATIC_INLINE uint32_t DDL_I2C_IsEnabledIT_EVT(I2C_TypeDef *I2Cx)
Check if Events interrupts are enabled or disabled.
__STATIC_INLINE void DDL_I2C_EnableIT_TX(I2C_TypeDef *I2Cx)
Enable TXE interrupt.
uint32_t DDL_I2C_DeInit(I2C_TypeDef *I2Cx)
De-initialize the I2C registers to their default reset values.
void DDL_I2C_StructInit(DDL_I2C_InitTypeDef *I2C_InitStruct)
Set each DDL_I2C_InitTypeDef field to default value.
uint32_t DDL_I2C_Init(I2C_TypeDef *I2Cx, DDL_I2C_InitTypeDef *I2C_InitStruct)
Initialize the I2C registers according to the specified parameters in I2C_InitStruct.
#define __DDL_I2C_RISE_TIME(__FREQRANGE__, __SPEED__)
Compute I2C Clock rising time.
#define __DDL_I2C_FREQ_HZ_TO_MHZ(__PCLK__)
Convert Peripheral Clock Frequency in Mhz.
#define __DDL_I2C_FREQ_MHZ_TO_HZ(__PCLK__)
Convert Peripheral Clock Frequency in Hz.
#define DDL_I2C_MAX_SPEED_STANDARD