20#ifndef STM32H7xx_LL_SPI_H
21#define STM32H7xx_LL_SPI_H
34#if defined(SPI1) || defined(SPI2) || defined(SPI3) || defined(SPI4) || defined(SPI5) || defined(SPI6)
53#if defined(USE_FULL_LL_DRIVER)
63 uint32_t TransferDirection;
81 uint32_t ClockPolarity;
116 uint32_t CRCCalculation;
147#define LL_SPI_SR_RXP (SPI_SR_RXP)
148#define LL_SPI_SR_TXP (SPI_SR_TXP)
149#define LL_SPI_SR_DXP (SPI_SR_DXP)
150#define LL_SPI_SR_EOT (SPI_SR_EOT)
151#define LL_SPI_SR_TXTF (SPI_SR_TXTF)
152#define LL_SPI_SR_UDR (SPI_SR_UDR)
153#define LL_SPI_SR_CRCE (SPI_SR_CRCE)
154#define LL_SPI_SR_MODF (SPI_SR_MODF)
155#define LL_SPI_SR_OVR (SPI_SR_OVR)
156#define LL_SPI_SR_TIFRE (SPI_SR_TIFRE)
157#define LL_SPI_SR_TSERF (SPI_SR_TSERF)
158#define LL_SPI_SR_SUSP (SPI_SR_SUSP)
159#define LL_SPI_SR_TXC (SPI_SR_TXC)
160#define LL_SPI_SR_RXWNE (SPI_SR_RXWNE)
169#define LL_SPI_IER_RXPIE (SPI_IER_RXPIE)
170#define LL_SPI_IER_TXPIE (SPI_IER_TXPIE)
171#define LL_SPI_IER_DXPIE (SPI_IER_DXPIE)
172#define LL_SPI_IER_EOTIE (SPI_IER_EOTIE)
173#define LL_SPI_IER_TXTFIE (SPI_IER_TXTFIE)
174#define LL_SPI_IER_UDRIE (SPI_IER_UDRIE)
175#define LL_SPI_IER_OVRIE (SPI_IER_OVRIE)
176#define LL_SPI_IER_CRCEIE (SPI_IER_CRCEIE)
177#define LL_SPI_IER_TIFREIE (SPI_IER_TIFREIE)
178#define LL_SPI_IER_MODFIE (SPI_IER_MODFIE)
179#define LL_SPI_IER_TSERFIE (SPI_IER_TSERFIE)
187#define LL_SPI_MODE_MASTER (SPI_CFG2_MASTER)
188#define LL_SPI_MODE_SLAVE (0x00000000UL)
196#define LL_SPI_SS_LEVEL_HIGH (SPI_CR1_SSI)
197#define LL_SPI_SS_LEVEL_LOW (0x00000000UL)
205#define LL_SPI_SS_IDLENESS_00CYCLE (0x00000000UL)
206#define LL_SPI_SS_IDLENESS_01CYCLE (SPI_CFG2_MSSI_0)
207#define LL_SPI_SS_IDLENESS_02CYCLE (SPI_CFG2_MSSI_1)
208#define LL_SPI_SS_IDLENESS_03CYCLE (SPI_CFG2_MSSI_0 | SPI_CFG2_MSSI_1)
209#define LL_SPI_SS_IDLENESS_04CYCLE (SPI_CFG2_MSSI_2)
210#define LL_SPI_SS_IDLENESS_05CYCLE (SPI_CFG2_MSSI_2 | SPI_CFG2_MSSI_0)
211#define LL_SPI_SS_IDLENESS_06CYCLE (SPI_CFG2_MSSI_2 | SPI_CFG2_MSSI_1)
212#define LL_SPI_SS_IDLENESS_07CYCLE (SPI_CFG2_MSSI_2 | SPI_CFG2_MSSI_1 | SPI_CFG2_MSSI_0)
213#define LL_SPI_SS_IDLENESS_08CYCLE (SPI_CFG2_MSSI_3)
214#define LL_SPI_SS_IDLENESS_09CYCLE (SPI_CFG2_MSSI_3 | SPI_CFG2_MSSI_0)
215#define LL_SPI_SS_IDLENESS_10CYCLE (SPI_CFG2_MSSI_3 | SPI_CFG2_MSSI_1)
216#define LL_SPI_SS_IDLENESS_11CYCLE (SPI_CFG2_MSSI_3 | SPI_CFG2_MSSI_1 | SPI_CFG2_MSSI_0)
217#define LL_SPI_SS_IDLENESS_12CYCLE (SPI_CFG2_MSSI_3 | SPI_CFG2_MSSI_2)
218#define LL_SPI_SS_IDLENESS_13CYCLE (SPI_CFG2_MSSI_3 | SPI_CFG2_MSSI_2 | SPI_CFG2_MSSI_0)
219#define LL_SPI_SS_IDLENESS_14CYCLE (SPI_CFG2_MSSI_3 | SPI_CFG2_MSSI_2 | SPI_CFG2_MSSI_1)
220#define LL_SPI_SS_IDLENESS_15CYCLE (SPI_CFG2_MSSI_3\
221 | SPI_CFG2_MSSI_2 | SPI_CFG2_MSSI_1 | SPI_CFG2_MSSI_0)
229#define LL_SPI_ID_IDLENESS_00CYCLE (0x00000000UL)
230#define LL_SPI_ID_IDLENESS_01CYCLE (SPI_CFG2_MIDI_0)
231#define LL_SPI_ID_IDLENESS_02CYCLE (SPI_CFG2_MIDI_1)
232#define LL_SPI_ID_IDLENESS_03CYCLE (SPI_CFG2_MIDI_0 | SPI_CFG2_MIDI_1)
233#define LL_SPI_ID_IDLENESS_04CYCLE (SPI_CFG2_MIDI_2)
234#define LL_SPI_ID_IDLENESS_05CYCLE (SPI_CFG2_MIDI_2 | SPI_CFG2_MIDI_0)
235#define LL_SPI_ID_IDLENESS_06CYCLE (SPI_CFG2_MIDI_2 | SPI_CFG2_MIDI_1)
236#define LL_SPI_ID_IDLENESS_07CYCLE (SPI_CFG2_MIDI_2 | SPI_CFG2_MIDI_1 | SPI_CFG2_MIDI_0)
237#define LL_SPI_ID_IDLENESS_08CYCLE (SPI_CFG2_MIDI_3)
238#define LL_SPI_ID_IDLENESS_09CYCLE (SPI_CFG2_MIDI_3 | SPI_CFG2_MIDI_0)
239#define LL_SPI_ID_IDLENESS_10CYCLE (SPI_CFG2_MIDI_3 | SPI_CFG2_MIDI_1)
240#define LL_SPI_ID_IDLENESS_11CYCLE (SPI_CFG2_MIDI_3 | SPI_CFG2_MIDI_1 | SPI_CFG2_MIDI_0)
241#define LL_SPI_ID_IDLENESS_12CYCLE (SPI_CFG2_MIDI_3 | SPI_CFG2_MIDI_2)
242#define LL_SPI_ID_IDLENESS_13CYCLE (SPI_CFG2_MIDI_3 | SPI_CFG2_MIDI_2 | SPI_CFG2_MIDI_0)
243#define LL_SPI_ID_IDLENESS_14CYCLE (SPI_CFG2_MIDI_3 | SPI_CFG2_MIDI_2 | SPI_CFG2_MIDI_1)
244#define LL_SPI_ID_IDLENESS_15CYCLE (SPI_CFG2_MIDI_3\
245 | SPI_CFG2_MIDI_2 | SPI_CFG2_MIDI_1 | SPI_CFG2_MIDI_0)
253#define LL_SPI_TXCRCINIT_ALL_ZERO_PATTERN (0x00000000UL)
254#define LL_SPI_TXCRCINIT_ALL_ONES_PATTERN (SPI_CR1_TCRCINI)
262#define LL_SPI_RXCRCINIT_ALL_ZERO_PATTERN (0x00000000UL)
263#define LL_SPI_RXCRCINIT_ALL_ONES_PATTERN (SPI_CR1_RCRCINI)
271#define LL_SPI_UDR_CONFIG_REGISTER_PATTERN (0x00000000UL)
272#define LL_SPI_UDR_CONFIG_LAST_RECEIVED (SPI_CFG1_UDRCFG_0)
273#define LL_SPI_UDR_CONFIG_LAST_TRANSMITTED (SPI_CFG1_UDRCFG_1)
281#define LL_SPI_UDR_DETECT_BEGIN_DATA_FRAME (0x00000000UL)
282#define LL_SPI_UDR_DETECT_END_DATA_FRAME (SPI_CFG1_UDRDET_0)
283#define LL_SPI_UDR_DETECT_BEGIN_ACTIVE_NSS (SPI_CFG1_UDRDET_1)
291#define LL_SPI_PROTOCOL_MOTOROLA (0x00000000UL)
292#define LL_SPI_PROTOCOL_TI (SPI_CFG2_SP_0)
300#define LL_SPI_PHASE_1EDGE (0x00000000UL)
301#define LL_SPI_PHASE_2EDGE (SPI_CFG2_CPHA)
309#define LL_SPI_POLARITY_LOW (0x00000000UL)
310#define LL_SPI_POLARITY_HIGH (SPI_CFG2_CPOL)
318#define LL_SPI_NSS_POLARITY_LOW (0x00000000UL)
319#define LL_SPI_NSS_POLARITY_HIGH (SPI_CFG2_SSIOP)
327#define LL_SPI_BAUDRATEPRESCALER_DIV2 (0x00000000UL)
328#define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CFG1_MBR_0)
329#define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CFG1_MBR_1)
330#define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CFG1_MBR_1 | SPI_CFG1_MBR_0)
331#define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CFG1_MBR_2)
332#define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CFG1_MBR_2 | SPI_CFG1_MBR_0)
333#define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CFG1_MBR_2 | SPI_CFG1_MBR_1)
334#define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CFG1_MBR_2 | SPI_CFG1_MBR_1 | SPI_CFG1_MBR_0)
342#define LL_SPI_LSB_FIRST (SPI_CFG2_LSBFRST)
343#define LL_SPI_MSB_FIRST (0x00000000UL)
351#define LL_SPI_FULL_DUPLEX (0x00000000UL)
352#define LL_SPI_SIMPLEX_TX (SPI_CFG2_COMM_0)
353#define LL_SPI_SIMPLEX_RX (SPI_CFG2_COMM_1)
354#define LL_SPI_HALF_DUPLEX_RX (SPI_CFG2_COMM_0|SPI_CFG2_COMM_1)
355#define LL_SPI_HALF_DUPLEX_TX (SPI_CFG2_COMM_0|SPI_CFG2_COMM_1|SPI_CR1_HDDIR)
363#define LL_SPI_DATAWIDTH_4BIT (SPI_CFG1_DSIZE_0 | SPI_CFG1_DSIZE_1)
364#define LL_SPI_DATAWIDTH_5BIT (SPI_CFG1_DSIZE_2)
365#define LL_SPI_DATAWIDTH_6BIT (SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_0)
366#define LL_SPI_DATAWIDTH_7BIT (SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1)
367#define LL_SPI_DATAWIDTH_8BIT (SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1 | SPI_CFG1_DSIZE_0)
368#define LL_SPI_DATAWIDTH_9BIT (SPI_CFG1_DSIZE_3)
369#define LL_SPI_DATAWIDTH_10BIT (SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_0)
370#define LL_SPI_DATAWIDTH_11BIT (SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_1)
371#define LL_SPI_DATAWIDTH_12BIT (SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_1 | SPI_CFG1_DSIZE_0)
372#define LL_SPI_DATAWIDTH_13BIT (SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_2)
373#define LL_SPI_DATAWIDTH_14BIT (SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_0)
374#define LL_SPI_DATAWIDTH_15BIT (SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1)
375#define LL_SPI_DATAWIDTH_16BIT (SPI_CFG1_DSIZE_3\
376 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1 | SPI_CFG1_DSIZE_0)
377#define LL_SPI_DATAWIDTH_17BIT (SPI_CFG1_DSIZE_4)
378#define LL_SPI_DATAWIDTH_18BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_0)
379#define LL_SPI_DATAWIDTH_19BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_1)
380#define LL_SPI_DATAWIDTH_20BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_0 | SPI_CFG1_DSIZE_1)
381#define LL_SPI_DATAWIDTH_21BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_2)
382#define LL_SPI_DATAWIDTH_22BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_0)
383#define LL_SPI_DATAWIDTH_23BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1)
384#define LL_SPI_DATAWIDTH_24BIT (SPI_CFG1_DSIZE_4\
385 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1 | SPI_CFG1_DSIZE_0)
386#define LL_SPI_DATAWIDTH_25BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_3)
387#define LL_SPI_DATAWIDTH_26BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_0)
388#define LL_SPI_DATAWIDTH_27BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_1)
389#define LL_SPI_DATAWIDTH_28BIT (SPI_CFG1_DSIZE_4\
390 | SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_1 | SPI_CFG1_DSIZE_0)
391#define LL_SPI_DATAWIDTH_29BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_2)
392#define LL_SPI_DATAWIDTH_30BIT (SPI_CFG1_DSIZE_4\
393 | SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_0)
394#define LL_SPI_DATAWIDTH_31BIT (SPI_CFG1_DSIZE_4\
395 | SPI_CFG1_DSIZE_3 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1)
396#define LL_SPI_DATAWIDTH_32BIT (SPI_CFG1_DSIZE_4 | SPI_CFG1_DSIZE_3\
397 | SPI_CFG1_DSIZE_2 | SPI_CFG1_DSIZE_1 | SPI_CFG1_DSIZE_0)
405#define LL_SPI_FIFO_TH_01DATA (0x00000000UL)
406#define LL_SPI_FIFO_TH_02DATA (SPI_CFG1_FTHLV_0)
407#define LL_SPI_FIFO_TH_03DATA (SPI_CFG1_FTHLV_1)
408#define LL_SPI_FIFO_TH_04DATA (SPI_CFG1_FTHLV_0 | SPI_CFG1_FTHLV_1)
409#define LL_SPI_FIFO_TH_05DATA (SPI_CFG1_FTHLV_2)
410#define LL_SPI_FIFO_TH_06DATA (SPI_CFG1_FTHLV_2 | SPI_CFG1_FTHLV_0)
411#define LL_SPI_FIFO_TH_07DATA (SPI_CFG1_FTHLV_2 | SPI_CFG1_FTHLV_1)
412#define LL_SPI_FIFO_TH_08DATA (SPI_CFG1_FTHLV_2 | SPI_CFG1_FTHLV_1 | SPI_CFG1_FTHLV_0)
413#define LL_SPI_FIFO_TH_09DATA (SPI_CFG1_FTHLV_3)
414#define LL_SPI_FIFO_TH_10DATA (SPI_CFG1_FTHLV_3 | SPI_CFG1_FTHLV_0)
415#define LL_SPI_FIFO_TH_11DATA (SPI_CFG1_FTHLV_3 | SPI_CFG1_FTHLV_1)
416#define LL_SPI_FIFO_TH_12DATA (SPI_CFG1_FTHLV_3 | SPI_CFG1_FTHLV_1 | SPI_CFG1_FTHLV_0)
417#define LL_SPI_FIFO_TH_13DATA (SPI_CFG1_FTHLV_3 | SPI_CFG1_FTHLV_2)
418#define LL_SPI_FIFO_TH_14DATA (SPI_CFG1_FTHLV_3 | SPI_CFG1_FTHLV_2 | SPI_CFG1_FTHLV_0)
419#define LL_SPI_FIFO_TH_15DATA (SPI_CFG1_FTHLV_3 | SPI_CFG1_FTHLV_2 | SPI_CFG1_FTHLV_1)
420#define LL_SPI_FIFO_TH_16DATA (SPI_CFG1_FTHLV_3\
421 | SPI_CFG1_FTHLV_2 | SPI_CFG1_FTHLV_1 | SPI_CFG1_FTHLV_0)
426#if defined(USE_FULL_LL_DRIVER)
431#define LL_SPI_CRCCALCULATION_DISABLE (0x00000000UL)
432#define LL_SPI_CRCCALCULATION_ENABLE (SPI_CFG1_CRCEN)
441#define LL_SPI_CRC_4BIT (SPI_CFG1_CRCSIZE_0 | SPI_CFG1_CRCSIZE_1)
442#define LL_SPI_CRC_5BIT (SPI_CFG1_CRCSIZE_2)
443#define LL_SPI_CRC_6BIT (SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_0)
444#define LL_SPI_CRC_7BIT (SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1)
445#define LL_SPI_CRC_8BIT (SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1 | SPI_CFG1_CRCSIZE_0)
446#define LL_SPI_CRC_9BIT (SPI_CFG1_CRCSIZE_3)
447#define LL_SPI_CRC_10BIT (SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_0)
448#define LL_SPI_CRC_11BIT (SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_1)
449#define LL_SPI_CRC_12BIT (SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_1 | SPI_CFG1_CRCSIZE_0)
450#define LL_SPI_CRC_13BIT (SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_2)
451#define LL_SPI_CRC_14BIT (SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_0)
452#define LL_SPI_CRC_15BIT (SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1)
453#define LL_SPI_CRC_16BIT (SPI_CFG1_CRCSIZE_3\
454 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1 | SPI_CFG1_CRCSIZE_0)
455#define LL_SPI_CRC_17BIT (SPI_CFG1_CRCSIZE_4)
456#define LL_SPI_CRC_18BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_0)
457#define LL_SPI_CRC_19BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_1)
458#define LL_SPI_CRC_20BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_0 | SPI_CFG1_CRCSIZE_1)
459#define LL_SPI_CRC_21BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_2)
460#define LL_SPI_CRC_22BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_0)
461#define LL_SPI_CRC_23BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1)
462#define LL_SPI_CRC_24BIT (SPI_CFG1_CRCSIZE_4\
463 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1 | SPI_CFG1_CRCSIZE_0)
464#define LL_SPI_CRC_25BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_3)
465#define LL_SPI_CRC_26BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_0)
466#define LL_SPI_CRC_27BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_1)
467#define LL_SPI_CRC_28BIT (SPI_CFG1_CRCSIZE_4\
468 | SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_1 | SPI_CFG1_CRCSIZE_0)
469#define LL_SPI_CRC_29BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_2)
470#define LL_SPI_CRC_30BIT (SPI_CFG1_CRCSIZE_4\
471 | SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_0)
472#define LL_SPI_CRC_31BIT (SPI_CFG1_CRCSIZE_4\
473 | SPI_CFG1_CRCSIZE_3 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1)
474#define LL_SPI_CRC_32BIT (SPI_CFG1_CRCSIZE_4 | SPI_CFG1_CRCSIZE_3\
475 | SPI_CFG1_CRCSIZE_2 | SPI_CFG1_CRCSIZE_1 | SPI_CFG1_CRCSIZE_0)
483#define LL_SPI_NSS_SOFT (SPI_CFG2_SSM)
484#define LL_SPI_NSS_HARD_INPUT (0x00000000UL)
485#define LL_SPI_NSS_HARD_OUTPUT (SPI_CFG2_SSOE)
493#define LL_SPI_RX_FIFO_0PACKET (0x00000000UL)
494#define LL_SPI_RX_FIFO_1PACKET (SPI_SR_RXPLVL_0)
495#define LL_SPI_RX_FIFO_2PACKET (SPI_SR_RXPLVL_1)
496#define LL_SPI_RX_FIFO_3PACKET (SPI_SR_RXPLVL_1 | SPI_SR_RXPLVL_0)
521#define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
529#define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
1328 return (Hddir | Comm);
2423 return (uint32_t) &(SPIx->
TXDR);
2434 return (uint32_t) &(SPIx->
RXDR);
2452 return (*((
__IO uint8_t *)&SPIx->
RXDR));
2463#if defined (__GNUC__)
2464 __IO uint16_t *spirxdr = (
__IO uint16_t *)(&(SPIx->
RXDR));
2467 return (*((
__IO uint16_t *)&SPIx->
RXDR));
2479 return (*((
__IO uint32_t *)&SPIx->
RXDR));
2491 *((
__IO uint8_t *)&SPIx->
TXDR) = TxData;
2503#if defined (__GNUC__)
2504 __IO uint16_t *spitxdr = ((
__IO uint16_t *)&SPIx->
TXDR);
2507 *((
__IO uint16_t *)&SPIx->
TXDR) = TxData;
2520 *((
__IO uint32_t *)&SPIx->
TXDR) = TxData;
2595#if defined(USE_FULL_LL_DRIVER)
2602void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct);
2624#if defined(USE_FULL_LL_DRIVER)
2648 uint32_t DataFormat;
2655 uint32_t MCLKOutput;
2671 uint32_t ClockPolarity;
2677} LL_I2S_InitTypeDef;
2692#define LL_I2S_DATAFORMAT_16B (0x00000000UL)
2693#define LL_I2S_DATAFORMAT_16B_EXTENDED (SPI_I2SCFGR_CHLEN)
2694#define LL_I2S_DATAFORMAT_24B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0)
2695#define LL_I2S_DATAFORMAT_24B_LEFT_ALIGNED (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0 | SPI_I2SCFGR_DATFMT)
2696#define LL_I2S_DATAFORMAT_32B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1)
2704#define LL_I2S_SLAVE_VARIABLE_CH_LENGTH (0x00000000UL)
2705#define LL_I2S_SLAVE_FIXED_CH_LENGTH (SPI_I2SCFGR_FIXCH)
2713#define LL_I2S_POLARITY_LOW (0x00000000UL)
2714#define LL_I2S_POLARITY_HIGH (SPI_I2SCFGR_CKPOL)
2722#define LL_I2S_STANDARD_PHILIPS (0x00000000UL)
2723#define LL_I2S_STANDARD_MSB (SPI_I2SCFGR_I2SSTD_0)
2724#define LL_I2S_STANDARD_LSB (SPI_I2SCFGR_I2SSTD_1)
2725#define LL_I2S_STANDARD_PCM_SHORT (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1)
2726#define LL_I2S_STANDARD_PCM_LONG (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC)
2734#define LL_I2S_MODE_SLAVE_TX (0x00000000UL)
2735#define LL_I2S_MODE_SLAVE_RX (SPI_I2SCFGR_I2SCFG_0)
2736#define LL_I2S_MODE_SLAVE_FULL_DUPLEX (SPI_I2SCFGR_I2SCFG_2)
2737#define LL_I2S_MODE_MASTER_TX (SPI_I2SCFGR_I2SCFG_1)
2738#define LL_I2S_MODE_MASTER_RX (SPI_I2SCFGR_I2SCFG_1 | SPI_I2SCFGR_I2SCFG_0)
2739#define LL_I2S_MODE_MASTER_FULL_DUPLEX (SPI_I2SCFGR_I2SCFG_2 | SPI_I2SCFGR_I2SCFG_0)
2747#define LL_I2S_PRESCALER_PARITY_EVEN (0x00000000UL)
2748#define LL_I2S_PRESCALER_PARITY_ODD (0x00000001UL)
2756#define LL_I2S_FIFO_TH_01DATA (LL_SPI_FIFO_TH_01DATA)
2757#define LL_I2S_FIFO_TH_02DATA (LL_SPI_FIFO_TH_02DATA)
2758#define LL_I2S_FIFO_TH_03DATA (LL_SPI_FIFO_TH_03DATA)
2759#define LL_I2S_FIFO_TH_04DATA (LL_SPI_FIFO_TH_04DATA)
2760#define LL_I2S_FIFO_TH_05DATA (LL_SPI_FIFO_TH_05DATA)
2761#define LL_I2S_FIFO_TH_06DATA (LL_SPI_FIFO_TH_06DATA)
2762#define LL_I2S_FIFO_TH_07DATA (LL_SPI_FIFO_TH_07DATA)
2763#define LL_I2S_FIFO_TH_08DATA (LL_SPI_FIFO_TH_08DATA)
2771#define LL_I2S_LSB_FIRST (LL_SPI_LSB_FIRST)
2772#define LL_I2S_MSB_FIRST (LL_SPI_MSB_FIRST)
2777#if defined(USE_FULL_LL_DRIVER)
2782#define LL_I2S_MCLK_OUTPUT_DISABLE (0x00000000UL)
2783#define LL_I2S_MCLK_OUTPUT_ENABLE (SPI_I2SCFGR_MCKOE)
2792#define LL_I2S_AUDIOFREQ_192K 192000UL
2793#define LL_I2S_AUDIOFREQ_96K 96000UL
2794#define LL_I2S_AUDIOFREQ_48K 48000UL
2795#define LL_I2S_AUDIOFREQ_44K 44100UL
2796#define LL_I2S_AUDIOFREQ_32K 32000UL
2797#define LL_I2S_AUDIOFREQ_22K 22050UL
2798#define LL_I2S_AUDIOFREQ_16K 16000UL
2799#define LL_I2S_AUDIOFREQ_11K 11025UL
2800#define LL_I2S_AUDIOFREQ_8K 8000UL
2801#define LL_I2S_AUDIOFREQ_DEFAULT 0UL
2827#define LL_I2S_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
2835#define LL_I2S_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
3086 LL_SPI_EnableIOSwap(SPIx);
3098 LL_SPI_DisableIOSwap(SPIx);
3109 return LL_SPI_IsEnabledIOSwap(SPIx);
3121 LL_SPI_EnableGPIOControl(SPIx);
3133 LL_SPI_DisableGPIOControl(SPIx);
3144 return LL_SPI_IsEnabledGPIOControl(SPIx);
3157 LL_SPI_EnableIOLock(SPIx);
3168 return LL_SPI_IsEnabledIOLock(SPIx);
3183 LL_SPI_SetTransferBitOrder(SPIx, BitOrder);
3195 return LL_SPI_GetTransferBitOrder(SPIx);
3206 LL_SPI_StartMasterTransfer(SPIx);
3217 return LL_SPI_IsActiveMasterTransfer(SPIx);
3238 LL_SPI_SetFIFOThreshold(SPIx, Threshold);
3257 return LL_SPI_GetFIFOThreshold(SPIx);
3361 return LL_SPI_IsActiveFlag_RXP(SPIx);
3372 return LL_SPI_IsActiveFlag_TXP(SPIx);
3383 return LL_SPI_IsActiveFlag_UDR(SPIx);
3394 return LL_SPI_IsActiveFlag_OVR(SPIx);
3405 return LL_SPI_IsActiveFlag_FRE(SPIx);
3416 LL_SPI_ClearFlag_UDR(SPIx);
3427 LL_SPI_ClearFlag_OVR(SPIx);
3438 LL_SPI_ClearFlag_FRE(SPIx);
3457 LL_SPI_EnableIT_RXP(SPIx);
3468 LL_SPI_EnableIT_TXP(SPIx);
3479 LL_SPI_EnableIT_UDR(SPIx);
3490 LL_SPI_EnableIT_OVR(SPIx);
3501 LL_SPI_EnableIT_FRE(SPIx);
3512 LL_SPI_DisableIT_RXP(SPIx);
3523 LL_SPI_DisableIT_TXP(SPIx);
3534 LL_SPI_DisableIT_UDR(SPIx);
3545 LL_SPI_DisableIT_OVR(SPIx);
3556 LL_SPI_DisableIT_FRE(SPIx);
3567 return LL_SPI_IsEnabledIT_RXP(SPIx);
3578 return LL_SPI_IsEnabledIT_TXP(SPIx);
3589 return LL_SPI_IsEnabledIT_UDR(SPIx);
3600 return LL_SPI_IsEnabledIT_OVR(SPIx);
3611 return LL_SPI_IsEnabledIT_FRE(SPIx);
3630 LL_SPI_EnableDMAReq_RX(SPIx);
3641 LL_SPI_DisableDMAReq_RX(SPIx);
3652 return LL_SPI_IsEnabledDMAReq_RX(SPIx);
3663 LL_SPI_EnableDMAReq_TX(SPIx);
3674 LL_SPI_DisableDMAReq_TX(SPIx);
3685 return LL_SPI_IsEnabledDMAReq_TX(SPIx);
3704 return LL_SPI_ReceiveData16(SPIx);
3715 return LL_SPI_ReceiveData32(SPIx);
3727 LL_SPI_TransmitData16(SPIx, TxData);
3739 LL_SPI_TransmitData32(SPIx, TxData);
3748#if defined(USE_FULL_LL_DRIVER)
3755void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct);
3756void LL_I2S_ConfigPrescaler(
SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity);
#define __IO
Defines 'read / write' permissions.
#define CLEAR_BIT(REG, BIT)
#define SET_BIT(REG, BIT)
#define WRITE_REG(REG, VAL)
#define MODIFY_REG(REG, CLEARMASK, SETMASK)
#define READ_BIT(REG, BIT)
#define SPI_IER_TIFREIE
TI Frame Error interrupt enable.
#define SPI_SR_RXPLVL
RxFIFO Packing Level.
#define SPI_IFCR_EOTC
End Of Transfer flag clear.
#define SPI_CR1_CSTART
Master transfer start.
#define SPI_IFCR_UDRC
Underrun flag clear.
#define SPI_SR_UDR
UDR at Slave transmission.
#define SPI_SR_TXC
TxFIFO transmission complete.
#define SPI_IER_TSERFIE
TSERF interrupt enable.
#define SPI_CFG2_COMM
COMM [1:0]: SPI Communication Mode.
#define SPI_I2SCFGR_I2SDIV_Pos
#define SPI_I2SCFGR_DATFMT
Data format.
#define SPI_CFG1_CRCEN
Hardware CRC computation enable.
#define SPI_CFG2_CPHA
Clock Phase.
#define SPI_IER_CRCEIE
CRCE interrupt enable.
#define SPI_I2SCFGR_I2SDIV
I2S Linear prescaler.
#define SPI_SR_SUSP
SUSP is set by hardware.
#define SPI_IER_UDRIE
UDR interrupt enable.
#define SPI_IFCR_MODFC
Mode Fault flag clear.
#define SPI_I2SCFGR_ODD
Odd factor for the prescaler.
#define SPI_IER_TXPIE
TXP interrupt enable.
#define SPI_IFCR_TXTFC
Transmission Transfer Filled flag clear.
#define SPI_CFG1_MBR
Master baud rate.
#define SPI_SR_CRCE
CRC Error Detected.
#define SPI_SR_TSERF
Number of SPI data to be transacted reloaded.
#define SPI_CFG1_FTHLV
FTHVL [3:0]: FIFO threshold level.
#define SPI_I2SCFGR_CKPOL
Steady state clock polarity.
#define SPI_CR1_SSI
Internal SS signal input level.
#define SPI_IER_DXPIE
DXP interrupt enable.
#define SPI_CFG2_SP
SP[2:0]: Serial Protocol.
#define SPI_IFCR_SUSPC
SUSPend flag clear.
#define SPI_I2SCFGR_PCMSYNC
PCM frame synchronization.
#define SPI_CR2_TSER
Number of data transfer extension.
#define SPI_CFG2_IOSWP
Swap functionality of MISO and MOSI pins.
#define SPI_IER_OVRIE
OVR interrupt enable.
#define SPI_IER_MODFIE
MODF interrupt enable.
#define SPI_SR_CTSIZE
Number of data frames remaining in TSIZE.
#define SPI_CR1_HDDIR
Rx/Tx direction at Half-duplex mode.
#define SPI_SR_DXP
Duplex Packet available.
#define SPI_I2SCFGR_I2SSTD
I2SSTD[1:0] I2S standard selection.
#define SPI_CFG2_MSSI
Master SS Idleness.
#define SPI_I2SCFGR_ODD_Pos
#define SPI_IER_RXPIE
RXP Interrupt Enable.
#define SPI_CR1_IOLOCK
Locking the AF configuration of associated IOs.
#define SPI_SR_RXP
Rx-Packet available.
#define SPI_I2SCFGR_CHLEN
Channel length (number of bits per audio channel).
#define SPI_CFG2_SSOE
SS output enable.
#define SPI_SR_TXP
Tx-Packet space available.
#define SPI_CFG2_SSIOP
SS input/output polarity.
#define SPI_CFG1_RXDMAEN
Rx DMA stream enable.
#define SPI_IFCR_CRCEC
CRC Error flag clear.
#define SPI_SR_OVR
Rx-Packet available.
#define SPI_CR1_CRC33_17
32-bit CRC polynomial configuration
#define SPI_CR1_RCRCINI
CRC init pattern control for receiver.
#define SPI_CR1_TCRCINI
CRC init pattern control for transmitter.
#define SPI_CFG2_LSBFRST
Data frame format.
#define SPI_SR_RXWNE
Rx FIFO Word Not Empty.
#define SPI_CFG2_MIDI
Master Inter-Data Idleness.
#define SPI_CFG1_DSIZE
DSIZE[4:0]: Bits number in single SPI data frame.
#define SPI_SR_MODF
Mode Fault Detected.
#define SPI_CFG1_UDRDET
UDRDET[1:0]: Detection of underrun condition.
#define SPI_CFG2_SSOM
SS output management in master mode.
#define SPI_I2SCFGR_WSINV
Word select inversion.
#define SPI_SR_TXTF
Transmission Transfer Filled.
#define SPI_CR1_CSUSP
Master SUSPend request.
#define SPI_CFG1_TXDMAEN
Tx DMA stream enable.
#define SPI_CR1_SPE
Serial Peripheral Enable.
#define SPI_I2SCFGR_DATLEN
DATLEN[1:0] Data length to be transferred.
#define SPI_I2SCFGR_MCKOE
Master Clock Output Enable.
#define SPI_IFCR_TSERFC
TSERFC flag clear.
#define SPI_CFG2_SSM
Software slave management.
#define SPI_SR_CTSIZE_Pos
#define SPI_IER_EOTIE
EOT/SUSP/TXC interrupt enable.
#define SPI_IFCR_TIFREC
TI frame format error flag clear.
#define SPI_SR_EOT
Duplex Packet available.
#define SPI_CFG1_CRCSIZE
CRCSIZE [4:0]: Length of CRC frame.
#define SPI_CFG2_MASTER
SPI Master.
#define SPI_CR1_MASRX
Master automatic SUSP in Receive mode.
#define SPI_I2SCFGR_I2SMOD
I2S mode selection.
#define SPI_I2SCFGR_I2SCFG
I2SCFG[2:0] I2S configuration mode.
#define SPI_CFG2_AFCNTR
Alternate function GPIOs control.
#define SPI_IER_TXTFIE
TXTF interrupt enable.
#define SPI_SR_TIFRE
TI frame format error Detected.
#define SPI_CR2_TSIZE
Number of data at current transfer.
#define SPI_I2SCFGR_FIXCH
Fixed channel length in SLAVE.
#define SPI_CFG2_CPOL
Clock Polarity.
#define SPI_CFG1_UDRCFG
UDRCFG[1:0]: Behavior of transmitter at underrun.
#define SPI_IFCR_OVRC
Overrun flag clear.
CMSIS STM32H7xx Device Peripheral Access Layer Header File.
Serial Peripheral Interface.
__IO uint32_t RXDR
SPI/I2S Receive data register, Address offset: 0x30.
__IO uint32_t CRCPOLY
SPI CRC Polynomial register, Address offset: 0x40.
__IO uint32_t UDRDR
SPI Underrun data register, Address offset: 0x4C.
__IO uint32_t CFG1
SPI Configuration register 1, Address offset: 0x08.
__IO uint32_t SR
SPI/I2S Status register, Address offset: 0x14.
__IO uint32_t CR2
SPI Control register 2, Address offset: 0x04.
__IO uint32_t I2SCFGR
I2S Configuration register, Address offset: 0x50.
__IO uint32_t TXDR
SPI/I2S Transmit data register, Address offset: 0x20.
__IO uint32_t CR1
SPI/I2S Control register 1, Address offset: 0x00.
__IO uint32_t TXCRC
SPI Transmitter CRC register, Address offset: 0x44.
__IO uint32_t RXCRC
SPI Receiver CRC register, Address offset: 0x48.
__IO uint32_t CFG2
SPI Configuration register 2, Address offset: 0x0C.
__IO uint32_t IFCR
SPI/I2S Interrupt/Status flags clear register, Address offset: 0x18.
__IO uint32_t IER
SPI/I2S Interrupt Enable register, Address offset: 0x10.