98 _SSIBaseValid(uint32_t ui32Base)
121 uint_fast8_t ui8Idx, ui8Rows;
122 const uint32_t (*ppui32SSIIntMap)[2];
127 ASSERT(_SSIBaseValid(ui32Base));
142 for(ui8Idx = 0; ui8Idx < ui8Rows; ui8Idx++)
147 if(ppui32SSIIntMap[ui8Idx][0] == ui32Base)
152 return(ppui32SSIIntMap[ui8Idx][1]);
222 uint32_t ui32Protocol, uint32_t ui32Mode,
223 uint32_t ui32BitRate, uint32_t ui32DataWidth)
225 uint32_t ui32MaxBitRate;
229 uint32_t ui32SPH_SPO;
234 ASSERT(_SSIBaseValid(ui32Base));
245 (ui32BitRate <= (ui32SSIClk / 2))) ||
247 (ui32BitRate <= (ui32SSIClk / 12))));
248 ASSERT((ui32SSIClk / ui32BitRate) <= (254 * 256));
249 ASSERT((ui32DataWidth >= 4) && (ui32DataWidth <= 16));
261 ui32MaxBitRate = ui32SSIClk / ui32BitRate;
266 ui32SCR = (ui32MaxBitRate / ui32PreDiv) - 1;
268 while(ui32SCR > 255);
274 ui32SPH_SPO = (ui32Protocol & 3) << 6;
276 ui32RegVal = (ui32SCR << 8) | ui32SPH_SPO | ui32Protocol |
299 ASSERT(_SSIBaseValid(ui32Base));
324 ASSERT(_SSIBaseValid(ui32Base));
360 ASSERT(_SSIBaseValid(ui32Base));
404 ASSERT(_SSIBaseValid(ui32Base));
446 ASSERT(_SSIBaseValid(ui32Base));
474 ASSERT(_SSIBaseValid(ui32Base));
504 ASSERT(_SSIBaseValid(ui32Base));
551 ASSERT(_SSIBaseValid(ui32Base));
584 ASSERT(_SSIBaseValid(ui32Base));
626 ASSERT(_SSIBaseValid(ui32Base));
672 ASSERT(_SSIBaseValid(ui32Base));
715 ASSERT(_SSIBaseValid(ui32Base));
758 ASSERT(_SSIBaseValid(ui32Base));
789 ASSERT(_SSIBaseValid(ui32Base));
818 ASSERT(_SSIBaseValid(ui32Base));
854 ASSERT(_SSIBaseValid(ui32Base));
886 ASSERT(_SSIBaseValid(ui32Base));
970 ASSERT(_SSIBaseValid(ui32Base));
1015 ASSERT(_SSIBaseValid(ui32Base));
1016 ASSERT((ui32Data & 0xff) == 0);
1060 ASSERT(_SSIBaseValid(ui32Base));
1061 ASSERT((ui32Data & 0xff) == 0);
1104 ASSERT(_SSIBaseValid(ui32Base));
1137 ASSERT(_SSIBaseValid(ui32Base));
uint32_t SSIIntStatus(uint32_t ui32Base, bool bMasked)
static const uint_fast8_t g_ui8SSIIntMapSnowflakeRows
#define SSI_ADV_MODE_WRITE
static const uint32_t g_ppui32SSIIntMap[][2]
void SSIIntDisable(uint32_t ui32Base, uint32_t ui32IntFlags)
void SSIIntEnable(uint32_t ui32Base, uint32_t ui32IntFlags)
void SSIDataGet(uint32_t ui32Base, uint32_t *pui32Data)
#define SSI_ADV_MODE_QUAD_READ
static const uint_fast8_t g_ui8SSIIntMapRows
#define SSI_ADV_MODE_QUAD_WRITE
#define SSI_FRF_MOTO_MODE_0
void SSIClockSourceSet(uint32_t ui32Base, uint32_t ui32Source)
int32_t SSIDataPutNonBlocking(uint32_t ui32Base, uint32_t ui32Data)
#define SSI_FRF_MOTO_MODE_2
void SSIDisable(uint32_t ui32Base)
uint32_t SSIClockSourceGet(uint32_t ui32Base)
void SSIAdvFrameHoldEnable(uint32_t ui32Base)
void SSIEnable(uint32_t ui32Base)
#define SSI_ADV_MODE_BI_READ
int32_t SSIDataGetNonBlocking(uint32_t ui32Base, uint32_t *pui32Data)
void SSIDataPut(uint32_t ui32Base, uint32_t ui32Data)
void SSIAdvFrameHoldDisable(uint32_t ui32Base)
void SSIIntRegister(uint32_t ui32Base, void(*pfnHandler)(void))
void IntUnregister(uint32_t ui32Interrupt)
static const uint32_t g_ppui32SSIIntMapSnowflake[][2]
void SSIAdvDataPutFrameEnd(uint32_t ui32Base, uint32_t ui32Data)
bool SSIBusy(uint32_t ui32Base)
void SSIIntUnregister(uint32_t ui32Base)
#define SSI_ADV_MODE_READ_WRITE
void SSIDMADisable(uint32_t ui32Base, uint32_t ui32DMAFlags)
static uint32_t _SSIIntNumberGet(uint32_t ui32Base)
#define SSI_MODE_SLAVE_OD
#define SSI_FRF_MOTO_MODE_1
#define SSI_CR1_FSSHLDFRM
#define SSI_FRF_MOTO_MODE_3
void SSIConfigSetExpClk(uint32_t ui32Base, uint32_t ui32SSIClk, uint32_t ui32Protocol, uint32_t ui32Mode, uint32_t ui32BitRate, uint32_t ui32DataWidth)
int32_t SSIAdvDataPutFrameEndNonBlocking(uint32_t ui32Base, uint32_t ui32Data)
void IntDisable(uint32_t ui32Interrupt)
void IntRegister(uint32_t ui32Interrupt, void(*pfnHandler)(void))
void SSIIntClear(uint32_t ui32Base, uint32_t ui32IntFlags)
void SSIAdvModeSet(uint32_t ui32Base, uint32_t ui32Mode)
void IntEnable(uint32_t ui32Interrupt)
#define SSI_ADV_MODE_BI_WRITE
#define SSI_ADV_MODE_LEGACY
void SSIDMAEnable(uint32_t ui32Base, uint32_t ui32DMAFlags)