37 int cs = channelId % 8;
39 Ifx_QSPI_ECON econ[8];
40 econ[cs].U = qspi->ECON[cs].U;
41 fQspi = fQspi / (qspi->GLOBALCON.B.TQ + 1);
42 fQspi = fQspi / (econ[cs].B.Q + 1);
43 fQspi = fQspi / ((econ[cs].B.A + 1) + econ[cs].B.B + econ[cs].B.C);
67 bacon.B.CS = channelId;
81 int abcMax = (4 + 0 + 4);
82 int q, bestQ = 0, abc, bestAbc = abcMax;
88 for (q = 1; q <= 64; q++)
90 for (abc = abcMax; abc >= abcMin; abc -= 2)
92 float32 tBaudTmp = tQspi * (q * abc);
93 error =
__absf(tBaudTmp - tBaud);
95 if (
__leqf(error, bestError) && ((q * abc) >= 4))
119 econ.B.Q = bestQ - 1;
120 econ.B.A = (bestAbc / 2) - 1;
121 econ.B.C =
__min(bestAbc / 2, 3);
122 econ.B.B = bestAbc - (econ.B.C + (econ.B.A + 1));
133 float error, bestError;
134 float halfBaud = baudrate / 2;
139 for (i = 0; i < 8; i++)
141 float tempHalfBaud = fQspiIn / (1U << (4 * i));
142 error =
__absf(tempHalfBaud - halfBaud);
144 if (
__leqf(error, bestError))
165 volatile Ifx_QSPI_RXEXIT *rxFifo = &qspi->RXEXIT;
169 *(data++) = (
uint16)rxFifo->U;
177 volatile Ifx_QSPI_RXEXIT *rxFifo = &qspi->RXEXIT;
181 *(data++) = rxFifo->U;
189 volatile Ifx_QSPI_RXEXIT *rxFifo = &qspi->RXEXIT;
193 *(data++) = (
uint8)rxFifo->U;
201 Ifx_QSPI_BACON bacon;
204 if (shortData ==
FALSE)
206 bacon.B.DL = numOfData;
209 bacon.B.LAST = lastData;
216 uint16 mask = 1 << channelId;
219 ssoc.U = qspi->SSOC.U;
239 qspi->SSOC.U = ssoc.U;
245 int cs = channelId % 8;
246 volatile Ifx_QSPI_DATAENTRY *dataEntry = &qspi->DATAENTRY[cs];
250 dataEntry->U = *(data++);
258 int cs = channelId % 8;
259 volatile Ifx_QSPI_DATAENTRY *dataEntry = &qspi->DATAENTRY[cs];
263 dataEntry->U = *(data++);
271 int cs = channelId % 8;
272 volatile Ifx_QSPI_DATAENTRY *dataEntry = &qspi->DATAENTRY[cs];
276 dataEntry->U = *(data++);