File indexing completed on 2025-05-11 08:23:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef STM32H7xx_HAL_SPDIFRX_H
0021 #define STM32H7xx_HAL_SPDIFRX_H
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028 #include "stm32h7xx_hal_def.h"
0029
0030
0031
0032
0033
0034 #if defined (SPDIFRX)
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 typedef struct
0050 {
0051 uint32_t InputSelection;
0052
0053
0054 uint32_t Retries;
0055
0056
0057 uint32_t WaitForActivity;
0058
0059
0060 uint32_t ChannelSelection;
0061
0062
0063
0064 uint32_t DataFormat;
0065
0066
0067 uint32_t StereoMode;
0068
0069
0070 uint32_t PreambleTypeMask;
0071
0072
0073
0074 uint32_t ChannelStatusMask;
0075
0076
0077
0078 uint32_t ValidityBitMask;
0079
0080
0081 uint32_t ParityErrorMask;
0082
0083
0084 FunctionalState SymbolClockGen;
0085
0086
0087 FunctionalState BackupSymbolClockGen;
0088
0089 } SPDIFRX_InitTypeDef;
0090
0091
0092
0093
0094 typedef struct
0095 {
0096 uint32_t DataFormat;
0097
0098
0099 uint32_t StereoMode;
0100
0101
0102 uint32_t PreambleTypeMask;
0103
0104
0105
0106 uint32_t ChannelStatusMask;
0107
0108
0109
0110 uint32_t ValidityBitMask;
0111
0112
0113 uint32_t ParityErrorMask;
0114
0115
0116
0117 } SPDIFRX_SetDataFormatTypeDef;
0118
0119
0120
0121
0122 typedef enum
0123 {
0124 HAL_SPDIFRX_STATE_RESET = 0x00U,
0125 HAL_SPDIFRX_STATE_READY = 0x01U,
0126 HAL_SPDIFRX_STATE_BUSY = 0x02U,
0127 HAL_SPDIFRX_STATE_BUSY_RX = 0x03U,
0128 HAL_SPDIFRX_STATE_BUSY_CX = 0x04U,
0129 HAL_SPDIFRX_STATE_ERROR = 0x07U
0130 } HAL_SPDIFRX_StateTypeDef;
0131
0132
0133
0134
0135 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
0136 typedef struct __SPDIFRX_HandleTypeDef
0137 #else
0138 typedef struct
0139 #endif
0140 {
0141 SPDIFRX_TypeDef *Instance;
0142
0143 SPDIFRX_InitTypeDef Init;
0144
0145 uint32_t *pRxBuffPtr;
0146
0147 uint32_t *pCsBuffPtr;
0148
0149 __IO uint16_t RxXferSize;
0150
0151 __IO uint16_t RxXferCount;
0152
0153
0154
0155
0156
0157
0158 __IO uint16_t CsXferSize;
0159
0160 __IO uint16_t CsXferCount;
0161
0162
0163
0164
0165
0166
0167 DMA_HandleTypeDef *hdmaCsRx;
0168
0169
0170 DMA_HandleTypeDef *hdmaDrRx;
0171
0172 __IO HAL_LockTypeDef Lock;
0173
0174 __IO HAL_SPDIFRX_StateTypeDef State;
0175
0176 __IO uint32_t ErrorCode;
0177
0178 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
0179 void (*RxHalfCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);
0180
0181 void (*RxCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);
0182 void (*CxHalfCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);
0183
0184 void (*CxCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);
0185 void (*ErrorCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);
0186 void (* MspInitCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);
0187 void (* MspDeInitCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);
0188 #endif
0189
0190 } SPDIFRX_HandleTypeDef;
0191
0192 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
0193
0194
0195
0196 typedef enum
0197 {
0198 HAL_SPDIFRX_RX_HALF_CB_ID = 0x00U,
0199 HAL_SPDIFRX_RX_CPLT_CB_ID = 0x01U,
0200 HAL_SPDIFRX_CX_HALF_CB_ID = 0x02U,
0201 HAL_SPDIFRX_CX_CPLT_CB_ID = 0x03U,
0202 HAL_SPDIFRX_ERROR_CB_ID = 0x04U,
0203 HAL_SPDIFRX_MSPINIT_CB_ID = 0x05U,
0204 HAL_SPDIFRX_MSPDEINIT_CB_ID = 0x06U
0205 } HAL_SPDIFRX_CallbackIDTypeDef;
0206
0207
0208
0209
0210 typedef void (*pSPDIFRX_CallbackTypeDef)(SPDIFRX_HandleTypeDef *hspdif);
0211
0212 #endif
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225 #define HAL_SPDIFRX_ERROR_NONE ((uint32_t)0x00000000U)
0226 #define HAL_SPDIFRX_ERROR_TIMEOUT ((uint32_t)0x00000001U)
0227 #define HAL_SPDIFRX_ERROR_OVR ((uint32_t)0x00000002U)
0228 #define HAL_SPDIFRX_ERROR_PE ((uint32_t)0x00000004U)
0229 #define HAL_SPDIFRX_ERROR_DMA ((uint32_t)0x00000008U)
0230 #define HAL_SPDIFRX_ERROR_UNKNOWN ((uint32_t)0x00000010U)
0231 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
0232 #define HAL_SPDIFRX_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U)
0233 #endif
0234
0235
0236
0237
0238
0239
0240
0241
0242 #define SPDIFRX_INPUT_IN0 ((uint32_t)0x00000000U)
0243 #define SPDIFRX_INPUT_IN1 ((uint32_t)0x00010000U)
0244 #define SPDIFRX_INPUT_IN2 ((uint32_t)0x00020000U)
0245 #define SPDIFRX_INPUT_IN3 ((uint32_t)0x00030000U)
0246
0247
0248
0249
0250
0251
0252
0253
0254 #define SPDIFRX_MAXRETRIES_NONE ((uint32_t)0x00000000U)
0255 #define SPDIFRX_MAXRETRIES_3 ((uint32_t)0x00001000U)
0256 #define SPDIFRX_MAXRETRIES_15 ((uint32_t)0x00002000U)
0257 #define SPDIFRX_MAXRETRIES_63 ((uint32_t)0x00003000U)
0258
0259
0260
0261
0262
0263
0264
0265
0266 #define SPDIFRX_WAITFORACTIVITY_OFF ((uint32_t)0x00000000U)
0267 #define SPDIFRX_WAITFORACTIVITY_ON ((uint32_t)SPDIFRX_CR_WFA)
0268
0269
0270
0271
0272
0273
0274
0275
0276 #define SPDIFRX_PREAMBLETYPEMASK_OFF ((uint32_t)0x00000000U)
0277 #define SPDIFRX_PREAMBLETYPEMASK_ON ((uint32_t)SPDIFRX_CR_PTMSK)
0278
0279
0280
0281
0282
0283
0284
0285
0286 #define SPDIFRX_CHANNELSTATUS_OFF ((uint32_t)0x00000000U)
0287
0288 #define SPDIFRX_CHANNELSTATUS_ON ((uint32_t)SPDIFRX_CR_CUMSK)
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298 #define SPDIFRX_VALIDITYMASK_OFF ((uint32_t)0x00000000U)
0299 #define SPDIFRX_VALIDITYMASK_ON ((uint32_t)SPDIFRX_CR_VMSK)
0300
0301
0302
0303
0304
0305
0306
0307
0308 #define SPDIFRX_PARITYERRORMASK_OFF ((uint32_t)0x00000000U)
0309 #define SPDIFRX_PARITYERRORMASK_ON ((uint32_t)SPDIFRX_CR_PMSK)
0310
0311
0312
0313
0314
0315
0316
0317
0318 #define SPDIFRX_CHANNEL_A ((uint32_t)0x00000000U)
0319 #define SPDIFRX_CHANNEL_B ((uint32_t)SPDIFRX_CR_CHSEL)
0320
0321
0322
0323
0324
0325
0326
0327
0328 #define SPDIFRX_DATAFORMAT_LSB ((uint32_t)0x00000000U)
0329 #define SPDIFRX_DATAFORMAT_MSB ((uint32_t)0x00000010U)
0330 #define SPDIFRX_DATAFORMAT_32BITS ((uint32_t)0x00000020U)
0331
0332
0333
0334
0335
0336
0337
0338
0339 #define SPDIFRX_STEREOMODE_DISABLE ((uint32_t)0x00000000U)
0340 #define SPDIFRX_STEREOMODE_ENABLE ((uint32_t)SPDIFRX_CR_RXSTEO)
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350 #define SPDIFRX_STATE_IDLE ((uint32_t)0xFFFFFFFCU)
0351 #define SPDIFRX_STATE_SYNC ((uint32_t)0x00000001U)
0352 #define SPDIFRX_STATE_RCV ((uint32_t)SPDIFRX_CR_SPDIFEN)
0353
0354
0355
0356
0357
0358
0359
0360
0361 #define SPDIFRX_IT_RXNE ((uint32_t)SPDIFRX_IMR_RXNEIE)
0362 #define SPDIFRX_IT_CSRNE ((uint32_t)SPDIFRX_IMR_CSRNEIE)
0363 #define SPDIFRX_IT_PERRIE ((uint32_t)SPDIFRX_IMR_PERRIE)
0364 #define SPDIFRX_IT_OVRIE ((uint32_t)SPDIFRX_IMR_OVRIE)
0365 #define SPDIFRX_IT_SBLKIE ((uint32_t)SPDIFRX_IMR_SBLKIE)
0366 #define SPDIFRX_IT_SYNCDIE ((uint32_t)SPDIFRX_IMR_SYNCDIE)
0367 #define SPDIFRX_IT_IFEIE ((uint32_t)SPDIFRX_IMR_IFEIE )
0368
0369
0370
0371
0372
0373
0374
0375
0376 #define SPDIFRX_FLAG_RXNE ((uint32_t)SPDIFRX_SR_RXNE)
0377 #define SPDIFRX_FLAG_CSRNE ((uint32_t)SPDIFRX_SR_CSRNE)
0378 #define SPDIFRX_FLAG_PERR ((uint32_t)SPDIFRX_SR_PERR)
0379 #define SPDIFRX_FLAG_OVR ((uint32_t)SPDIFRX_SR_OVR)
0380 #define SPDIFRX_FLAG_SBD ((uint32_t)SPDIFRX_SR_SBD)
0381 #define SPDIFRX_FLAG_SYNCD ((uint32_t)SPDIFRX_SR_SYNCD)
0382 #define SPDIFRX_FLAG_FERR ((uint32_t)SPDIFRX_SR_FERR)
0383 #define SPDIFRX_FLAG_SERR ((uint32_t)SPDIFRX_SR_SERR)
0384 #define SPDIFRX_FLAG_TERR ((uint32_t)SPDIFRX_SR_TERR)
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
0404 #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) do{\
0405 (__HANDLE__)->State = HAL_SPDIFRX_STATE_RESET;\
0406 (__HANDLE__)->MspInitCallback = NULL;\
0407 (__HANDLE__)->MspDeInitCallback = NULL;\
0408 }while(0)
0409 #else
0410 #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPDIFRX_STATE_RESET)
0411 #endif
0412
0413
0414
0415
0416
0417 #define __HAL_SPDIFRX_IDLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= SPDIFRX_STATE_IDLE)
0418
0419
0420
0421
0422
0423 #define __HAL_SPDIFRX_SYNC(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_SYNC)
0424
0425
0426
0427
0428
0429
0430 #define __HAL_SPDIFRX_RCV(__HANDLE__) ((__HANDLE__)->Instance->CR |= SPDIFRX_STATE_RCV)
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440
0441
0442
0443
0444
0445
0446 #define __HAL_SPDIFRX_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__))
0447 #define __HAL_SPDIFRX_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR\
0448 &= (uint16_t)(~(__INTERRUPT__)))
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463 #define __HAL_SPDIFRX_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR\
0464 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479
0480
0481 #define __HAL_SPDIFRX_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->SR)\
0482 & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494
0495 #define __HAL_SPDIFRX_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->IFCR = (uint32_t)(__IT_CLEAR__))
0496
0497
0498
0499
0500
0501
0502
0503
0504
0505
0506
0507
0508
0509
0510 HAL_StatusTypeDef HAL_SPDIFRX_Init(SPDIFRX_HandleTypeDef *hspdif);
0511 HAL_StatusTypeDef HAL_SPDIFRX_DeInit(SPDIFRX_HandleTypeDef *hspdif);
0512 void HAL_SPDIFRX_MspInit(SPDIFRX_HandleTypeDef *hspdif);
0513 void HAL_SPDIFRX_MspDeInit(SPDIFRX_HandleTypeDef *hspdif);
0514 HAL_StatusTypeDef HAL_SPDIFRX_SetDataFormat(SPDIFRX_HandleTypeDef *hspdif, SPDIFRX_SetDataFormatTypeDef sDataFormat);
0515
0516
0517 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
0518 HAL_StatusTypeDef HAL_SPDIFRX_RegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID,
0519 pSPDIFRX_CallbackTypeDef pCallback);
0520 HAL_StatusTypeDef HAL_SPDIFRX_UnRegisterCallback(SPDIFRX_HandleTypeDef *hspdif,
0521 HAL_SPDIFRX_CallbackIDTypeDef CallbackID);
0522 #endif
0523
0524
0525
0526
0527
0528
0529
0530
0531
0532 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size,
0533 uint32_t Timeout);
0534 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveCtrlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size,
0535 uint32_t Timeout);
0536
0537
0538 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveCtrlFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
0539 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
0540 void HAL_SPDIFRX_IRQHandler(SPDIFRX_HandleTypeDef *hspdif);
0541
0542
0543 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveCtrlFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
0544 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow_DMA(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
0545 HAL_StatusTypeDef HAL_SPDIFRX_DMAStop(SPDIFRX_HandleTypeDef *hspdif);
0546
0547
0548 void HAL_SPDIFRX_RxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
0549 void HAL_SPDIFRX_RxCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
0550 void HAL_SPDIFRX_ErrorCallback(SPDIFRX_HandleTypeDef *hspdif);
0551 void HAL_SPDIFRX_CxHalfCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
0552 void HAL_SPDIFRX_CxCpltCallback(SPDIFRX_HandleTypeDef *hspdif);
0553
0554
0555
0556
0557
0558
0559
0560
0561 HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef const *const hspdif);
0562 uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef const *const hspdif);
0563
0564
0565
0566
0567
0568
0569
0570
0571
0572
0573
0574
0575
0576
0577
0578 #define IS_SPDIFRX_INPUT_SELECT(INPUT) (((INPUT) == SPDIFRX_INPUT_IN1) || \
0579 ((INPUT) == SPDIFRX_INPUT_IN2) || \
0580 ((INPUT) == SPDIFRX_INPUT_IN3) || \
0581 ((INPUT) == SPDIFRX_INPUT_IN0))
0582
0583 #define IS_SPDIFRX_MAX_RETRIES(RET) (((RET) == SPDIFRX_MAXRETRIES_NONE) || \
0584 ((RET) == SPDIFRX_MAXRETRIES_3) || \
0585 ((RET) == SPDIFRX_MAXRETRIES_15) || \
0586 ((RET) == SPDIFRX_MAXRETRIES_63))
0587
0588 #define IS_SPDIFRX_WAIT_FOR_ACTIVITY(VAL) (((VAL) == SPDIFRX_WAITFORACTIVITY_ON) || \
0589 ((VAL) == SPDIFRX_WAITFORACTIVITY_OFF))
0590
0591 #define IS_PREAMBLE_TYPE_MASK(VAL) (((VAL) == SPDIFRX_PREAMBLETYPEMASK_ON) || \
0592 ((VAL) == SPDIFRX_PREAMBLETYPEMASK_OFF))
0593
0594 #define IS_VALIDITY_MASK(VAL) (((VAL) == SPDIFRX_VALIDITYMASK_OFF) || \
0595 ((VAL) == SPDIFRX_VALIDITYMASK_ON))
0596
0597 #define IS_PARITY_ERROR_MASK(VAL) (((VAL) == SPDIFRX_PARITYERRORMASK_OFF) || \
0598 ((VAL) == SPDIFRX_PARITYERRORMASK_ON))
0599
0600 #define IS_SPDIFRX_CHANNEL(CHANNEL) (((CHANNEL) == SPDIFRX_CHANNEL_A) || \
0601 ((CHANNEL) == SPDIFRX_CHANNEL_B))
0602
0603 #define IS_SPDIFRX_DATA_FORMAT(FORMAT) (((FORMAT) == SPDIFRX_DATAFORMAT_LSB) || \
0604 ((FORMAT) == SPDIFRX_DATAFORMAT_MSB) || \
0605 ((FORMAT) == SPDIFRX_DATAFORMAT_32BITS))
0606
0607 #define IS_STEREO_MODE(MODE) (((MODE) == SPDIFRX_STEREOMODE_DISABLE) || \
0608 ((MODE) == SPDIFRX_STEREOMODE_ENABLE))
0609
0610 #define IS_CHANNEL_STATUS_MASK(VAL) (((VAL) == SPDIFRX_CHANNELSTATUS_ON) || \
0611 ((VAL) == SPDIFRX_CHANNELSTATUS_OFF))
0612
0613 #define IS_SYMBOL_CLOCK_GEN(VAL) (((VAL) == ENABLE) || ((VAL) == DISABLE))
0614
0615
0616
0617
0618
0619
0620
0621
0622
0623
0624
0625
0626
0627
0628
0629
0630 #endif
0631
0632
0633
0634
0635
0636 #ifdef __cplusplus
0637 }
0638 #endif
0639
0640
0641 #endif