41 i2c->ADDRCFG.B.MnS = 1;
42 i2c->ADDRCFG.B.SONA = 0;
43 i2c->ADDRCFG.B.SOPE = 0;
44 i2c->ADDRCFG.B.TBAM = 0;
47 i2c->FIFOCFG.B.TXFC = 1;
48 i2c->FIFOCFG.B.RXFC = 1;
49 i2c->FIFOCFG.B.TXBS = 0;
50 i2c->FIFOCFG.B.RXBS = 0;
51 i2c->FIFOCFG.B.TXFA = 0;
52 i2c->FIFOCFG.B.RXFA = 0;
64 while (i2c->CLC.B.DISS == 0)
78 while (i2c->CLC.B.DISS == 1U)
83 while (i2c->CLC1.B.RMC != 1U)
86 i2c->CLC1.B.DISR = 0U;
88 while (i2c->CLC1.B.DISS == 1U)
92 i2c->ERRIRQSM.U = 0x00;
102 uint8 inc = i2c->FDIVCFG.B.INC;
103 uint16 dec = i2c->FDIVCFG.B.DEC;
104 uint8 rmc = i2c->CLC1.B.RMC;
107 return (fKernel / rmc) / ((2 * dec / inc) + 3);
127 i2c->ENDDCTRL.B.SETEND = 1;
141 i2c->FIFOCFG.U = 0x0;
142 i2c->FIFOCFG.B.TXFC = 0U;
143 i2c->FIFOCFG.B.RXFC = 0U;
144 i2c->FIFOCFG.B.TXBS = 0U;
145 i2c->FIFOCFG.B.RXBS = 0U;
146 i2c->FIFOCFG.B.TXFA = 0U;
147 i2c->FIFOCFG.B.RXFA = 0U;
154 uint8 rmc = i2c->CLC1.B.RMC;
155 float32 dec = (((fKernel / rmc) / baudrate) - 3) / 2;
162 else if (dec > (1 << IFX_I2C_FDIVCFG_DEC_LEN) - 1)
164 dec = (1 << IFX_I2C_FDIVCFG_DEC_LEN) - 1;
172 i2c->FDIVCFG.B.INC = 1;
173 i2c->FDIVCFG.B.DEC = (
uint16)(dec + 0.5);
174 i2c->TIMCFG.B.SDA_DEL_HD_DAT = 0x3F;
175 i2c->TIMCFG.B.FS_SCL_LOW = 1;
176 i2c->TIMCFG.B.EN_SCL_LOW_LEN = 1;
177 i2c->TIMCFG.B.SCL_LOW_LEN = 0x20;