21#ifndef STM32H7xx_HAL_CORDIC_H
22#define STM32H7xx_HAL_CORDIC_H
51 HAL_CORDIC_STATE_RESET = 0x00U,
52 HAL_CORDIC_STATE_READY = 0x01U,
53 HAL_CORDIC_STATE_BUSY = 0x02U,
54 HAL_CORDIC_STATE_ERROR = 0x03U
55} HAL_CORDIC_StateTypeDef;
60#if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1
61typedef struct __CORDIC_HandleTypeDef
68 const int32_t *pInBuff;
72 uint32_t NbCalcToOrder;
76 uint32_t DMADirection;
84 __IO HAL_CORDIC_StateTypeDef State;
86 __IO uint32_t ErrorCode;
89#if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1
90 void (* ErrorCallback)(
struct __CORDIC_HandleTypeDef *hcordic);
91 void (* CalculateCpltCallback)(
struct __CORDIC_HandleTypeDef *hcordic);
93 void (* MspInitCallback)(
struct __CORDIC_HandleTypeDef *hcordic);
94 void (* MspDeInitCallback)(
struct __CORDIC_HandleTypeDef *hcordic);
98} CORDIC_HandleTypeDef;
126} CORDIC_ConfigTypeDef;
128#if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1
134 HAL_CORDIC_ERROR_CB_ID = 0x00U,
135 HAL_CORDIC_CALCULATE_CPLT_CB_ID = 0x01U,
137 HAL_CORDIC_MSPINIT_CB_ID = 0x02U,
138 HAL_CORDIC_MSPDEINIT_CB_ID = 0x03U,
140} HAL_CORDIC_CallbackIDTypeDef;
145typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic);
164#define HAL_CORDIC_ERROR_NONE ((uint32_t)0x00000000U)
165#define HAL_CORDIC_ERROR_PARAM ((uint32_t)0x00000001U)
166#define HAL_CORDIC_ERROR_NOT_READY ((uint32_t)0x00000002U)
167#define HAL_CORDIC_ERROR_TIMEOUT ((uint32_t)0x00000004U)
168#define HAL_CORDIC_ERROR_DMA ((uint32_t)0x00000008U)
169#if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1
170#define HAL_CORDIC_ERROR_INVALID_CALLBACK ((uint32_t)0x00000010U)
180#define CORDIC_FUNCTION_COSINE (0x00000000U)
181#define CORDIC_FUNCTION_SINE ((uint32_t)(CORDIC_CSR_FUNC_0))
182#define CORDIC_FUNCTION_PHASE ((uint32_t)(CORDIC_CSR_FUNC_1))
183#define CORDIC_FUNCTION_MODULUS ((uint32_t)(CORDIC_CSR_FUNC_1 | CORDIC_CSR_FUNC_0))
184#define CORDIC_FUNCTION_ARCTANGENT ((uint32_t)(CORDIC_CSR_FUNC_2))
185#define CORDIC_FUNCTION_HCOSINE ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_0))
186#define CORDIC_FUNCTION_HSINE ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_1))
187#define CORDIC_FUNCTION_HARCTANGENT ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_1 | CORDIC_CSR_FUNC_0))
188#define CORDIC_FUNCTION_NATURALLOG ((uint32_t)(CORDIC_CSR_FUNC_3))
189#define CORDIC_FUNCTION_SQUAREROOT ((uint32_t)(CORDIC_CSR_FUNC_3 | CORDIC_CSR_FUNC_0))
199#define CORDIC_PRECISION_1CYCLE ((uint32_t)(CORDIC_CSR_PRECISION_0))
200#define CORDIC_PRECISION_2CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_1))
201#define CORDIC_PRECISION_3CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
202#define CORDIC_PRECISION_4CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2))
203#define CORDIC_PRECISION_5CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_0))
204#define CORDIC_PRECISION_6CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1))
205#define CORDIC_PRECISION_7CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2\
206 | CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
207#define CORDIC_PRECISION_8CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3))
208#define CORDIC_PRECISION_9CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_0))
209#define CORDIC_PRECISION_10CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_1))
210#define CORDIC_PRECISION_11CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
211 | CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
212#define CORDIC_PRECISION_12CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_2))
213#define CORDIC_PRECISION_13CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
214 | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_0))
215#define CORDIC_PRECISION_14CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
216 | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1))
217#define CORDIC_PRECISION_15CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
218 | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1\
219 |CORDIC_CSR_PRECISION_0))
230#define CORDIC_SCALE_0 (0x00000000U)
231#define CORDIC_SCALE_1 ((uint32_t)(CORDIC_CSR_SCALE_0))
232#define CORDIC_SCALE_2 ((uint32_t)(CORDIC_CSR_SCALE_1))
233#define CORDIC_SCALE_3 ((uint32_t)(CORDIC_CSR_SCALE_1 | CORDIC_CSR_SCALE_0))
234#define CORDIC_SCALE_4 ((uint32_t)(CORDIC_CSR_SCALE_2))
235#define CORDIC_SCALE_5 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_0))
236#define CORDIC_SCALE_6 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1))
237#define CORDIC_SCALE_7 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1 | CORDIC_CSR_SCALE_0))
246#define CORDIC_IT_IEN CORDIC_CSR_IEN
255#define CORDIC_DMA_REN CORDIC_CSR_DMAREN
264#define CORDIC_DMA_WEN CORDIC_CSR_DMAWEN
273#define CORDIC_NBWRITE_1 (0x00000000U)
277#define CORDIC_NBWRITE_2 CORDIC_CSR_NARGS
287#define CORDIC_NBREAD_1 (0x00000000U)
291#define CORDIC_NBREAD_2 CORDIC_CSR_NRES
301#define CORDIC_INSIZE_32BITS (0x00000000U)
302#define CORDIC_INSIZE_16BITS CORDIC_CSR_ARGSIZE
311#define CORDIC_OUTSIZE_32BITS (0x00000000U)
312#define CORDIC_OUTSIZE_16BITS CORDIC_CSR_RESSIZE
321#define CORDIC_FLAG_RRDY CORDIC_CSR_RRDY
330#define CORDIC_DMA_DIR_NONE ((uint32_t)0x00000000U)
331#define CORDIC_DMA_DIR_IN ((uint32_t)0x00000001U)
332#define CORDIC_DMA_DIR_OUT ((uint32_t)0x00000002U)
333#define CORDIC_DMA_DIR_IN_OUT ((uint32_t)0x00000003U)
353#if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1
354#define __HAL_CORDIC_RESET_HANDLE_STATE(__HANDLE__) do{ \
355 (__HANDLE__)->State = HAL_CORDIC_STATE_RESET; \
356 (__HANDLE__)->MspInitCallback = NULL; \
357 (__HANDLE__)->MspDeInitCallback = NULL; \
360#define __HAL_CORDIC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CORDIC_STATE_RESET)
371#define __HAL_CORDIC_ENABLE_IT(__HANDLE__, __INTERRUPT__) \
372 (((__HANDLE__)->Instance->CSR) |= (__INTERRUPT__))
382#define __HAL_CORDIC_DISABLE_IT(__HANDLE__, __INTERRUPT__) \
383 (((__HANDLE__)->Instance->CSR) &= ~(__INTERRUPT__))
391#define __HAL_CORDIC_GET_IT(__HANDLE__, __INTERRUPT__)
399#define __HAL_CORDIC_CLEAR_IT(__HANDLE__, __INTERRUPT__)
408#define __HAL_CORDIC_GET_FLAG(__HANDLE__, __FLAG__) \
409 ((((__HANDLE__)->Instance->CSR) & (__FLAG__)) == (__FLAG__))
419#define __HAL_CORDIC_CLEAR_FLAG(__HANDLE__, __FLAG__)
428#define __HAL_CORDIC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
429 (((__HANDLE__)->Instance->CSR) & (__INTERRUPT__))
446#define IS_CORDIC_FUNCTION(__FUNCTION__) (((__FUNCTION__) == CORDIC_FUNCTION_COSINE) || \
447 ((__FUNCTION__) == CORDIC_FUNCTION_SINE) || \
448 ((__FUNCTION__) == CORDIC_FUNCTION_PHASE) || \
449 ((__FUNCTION__) == CORDIC_FUNCTION_MODULUS) || \
450 ((__FUNCTION__) == CORDIC_FUNCTION_ARCTANGENT) || \
451 ((__FUNCTION__) == CORDIC_FUNCTION_HCOSINE) || \
452 ((__FUNCTION__) == CORDIC_FUNCTION_HSINE) || \
453 ((__FUNCTION__) == CORDIC_FUNCTION_HARCTANGENT) || \
454 ((__FUNCTION__) == CORDIC_FUNCTION_NATURALLOG) || \
455 ((__FUNCTION__) == CORDIC_FUNCTION_SQUAREROOT))
463#define IS_CORDIC_PRECISION(__PRECISION__) (((__PRECISION__) == CORDIC_PRECISION_1CYCLE) || \
464 ((__PRECISION__) == CORDIC_PRECISION_2CYCLES) || \
465 ((__PRECISION__) == CORDIC_PRECISION_3CYCLES) || \
466 ((__PRECISION__) == CORDIC_PRECISION_4CYCLES) || \
467 ((__PRECISION__) == CORDIC_PRECISION_5CYCLES) || \
468 ((__PRECISION__) == CORDIC_PRECISION_6CYCLES) || \
469 ((__PRECISION__) == CORDIC_PRECISION_7CYCLES) || \
470 ((__PRECISION__) == CORDIC_PRECISION_8CYCLES) || \
471 ((__PRECISION__) == CORDIC_PRECISION_9CYCLES) || \
472 ((__PRECISION__) == CORDIC_PRECISION_10CYCLES) || \
473 ((__PRECISION__) == CORDIC_PRECISION_11CYCLES) || \
474 ((__PRECISION__) == CORDIC_PRECISION_12CYCLES) || \
475 ((__PRECISION__) == CORDIC_PRECISION_13CYCLES) || \
476 ((__PRECISION__) == CORDIC_PRECISION_14CYCLES) || \
477 ((__PRECISION__) == CORDIC_PRECISION_15CYCLES))
484#define IS_CORDIC_SCALE(__SCALE__) (((__SCALE__) == CORDIC_SCALE_0) || \
485 ((__SCALE__) == CORDIC_SCALE_1) || \
486 ((__SCALE__) == CORDIC_SCALE_2) || \
487 ((__SCALE__) == CORDIC_SCALE_3) || \
488 ((__SCALE__) == CORDIC_SCALE_4) || \
489 ((__SCALE__) == CORDIC_SCALE_5) || \
490 ((__SCALE__) == CORDIC_SCALE_6) || \
491 ((__SCALE__) == CORDIC_SCALE_7))
498#define IS_CORDIC_NBWRITE(__NBWRITE__) (((__NBWRITE__) == CORDIC_NBWRITE_1) || \
499 ((__NBWRITE__) == CORDIC_NBWRITE_2))
506#define IS_CORDIC_NBREAD(__NBREAD__) (((__NBREAD__) == CORDIC_NBREAD_1) || \
507 ((__NBREAD__) == CORDIC_NBREAD_2))
514#define IS_CORDIC_INSIZE(__INSIZE__) (((__INSIZE__) == CORDIC_INSIZE_32BITS) || \
515 ((__INSIZE__) == CORDIC_INSIZE_16BITS))
522#define IS_CORDIC_OUTSIZE(__OUTSIZE__) (((__OUTSIZE__) == CORDIC_OUTSIZE_32BITS) || \
523 ((__OUTSIZE__) == CORDIC_OUTSIZE_16BITS))
530#define IS_CORDIC_DMA_DIRECTION(__DMADIR__) (((__DMADIR__) == CORDIC_DMA_DIR_IN) || \
531 ((__DMADIR__) == CORDIC_DMA_DIR_OUT) || \
532 ((__DMADIR__) == CORDIC_DMA_DIR_IN_OUT))
549void HAL_CORDIC_MspInit(CORDIC_HandleTypeDef *hcordic);
550void HAL_CORDIC_MspDeInit(CORDIC_HandleTypeDef *hcordic);
552#if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1
554HAL_StatusTypeDef HAL_CORDIC_RegisterCallback(CORDIC_HandleTypeDef *hcordic, HAL_CORDIC_CallbackIDTypeDef CallbackID,
555 pCORDIC_CallbackTypeDef pCallback);
556HAL_StatusTypeDef HAL_CORDIC_UnRegisterCallback(CORDIC_HandleTypeDef *hcordic, HAL_CORDIC_CallbackIDTypeDef CallbackID);
566HAL_StatusTypeDef HAL_CORDIC_Configure(CORDIC_HandleTypeDef *hcordic,
const CORDIC_ConfigTypeDef *sConfig);
567HAL_StatusTypeDef HAL_CORDIC_Calculate(CORDIC_HandleTypeDef *hcordic,
const int32_t *pInBuff, int32_t *pOutBuff,
568 uint32_t NbCalc, uint32_t Timeout);
569HAL_StatusTypeDef HAL_CORDIC_CalculateZO(CORDIC_HandleTypeDef *hcordic,
const int32_t *pInBuff, int32_t *pOutBuff,
570 uint32_t NbCalc, uint32_t Timeout);
571HAL_StatusTypeDef HAL_CORDIC_Calculate_IT(CORDIC_HandleTypeDef *hcordic,
const int32_t *pInBuff, int32_t *pOutBuff,
573HAL_StatusTypeDef HAL_CORDIC_Calculate_DMA(CORDIC_HandleTypeDef *hcordic,
const int32_t *pInBuff, int32_t *pOutBuff,
574 uint32_t NbCalc, uint32_t DMADirection);
583void HAL_CORDIC_ErrorCallback(CORDIC_HandleTypeDef *hcordic);
584void HAL_CORDIC_CalculateCpltCallback(CORDIC_HandleTypeDef *hcordic);
593void HAL_CORDIC_IRQHandler(CORDIC_HandleTypeDef *hcordic);
602HAL_CORDIC_StateTypeDef HAL_CORDIC_GetState(
const CORDIC_HandleTypeDef *hcordic);
603uint32_t HAL_CORDIC_GetError(
const CORDIC_HandleTypeDef *hcordic);
#define __IO
Definition: core_cm4.h:239
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32h7xx_hal_def.h:47
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32h7xx_hal_def.h:58
COordincate Rotation DIgital Computer.
Definition: stm32h723xx.h:431
DMA handle Structure definition.
Definition: stm32h7xx_hal_dma.h:138