20#ifndef STM32H7xx_LL_CORDIC_H
21#define STM32H7xx_LL_CORDIC_H
60#define LL_CORDIC_FLAG_RRDY CORDIC_CSR_RRDY
70#define LL_CORDIC_IT_IEN CORDIC_CSR_IEN
79#define LL_CORDIC_FUNCTION_COSINE (0x00000000U)
80#define LL_CORDIC_FUNCTION_SINE ((uint32_t)(CORDIC_CSR_FUNC_0))
81#define LL_CORDIC_FUNCTION_PHASE ((uint32_t)(CORDIC_CSR_FUNC_1))
82#define LL_CORDIC_FUNCTION_MODULUS ((uint32_t)(CORDIC_CSR_FUNC_1 | CORDIC_CSR_FUNC_0))
83#define LL_CORDIC_FUNCTION_ARCTANGENT ((uint32_t)(CORDIC_CSR_FUNC_2))
84#define LL_CORDIC_FUNCTION_HCOSINE ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_0))
85#define LL_CORDIC_FUNCTION_HSINE ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_1))
86#define LL_CORDIC_FUNCTION_HARCTANGENT ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_1 | CORDIC_CSR_FUNC_0))
87#define LL_CORDIC_FUNCTION_NATURALLOG ((uint32_t)(CORDIC_CSR_FUNC_3))
88#define LL_CORDIC_FUNCTION_SQUAREROOT ((uint32_t)(CORDIC_CSR_FUNC_3 | CORDIC_CSR_FUNC_0))
97#define LL_CORDIC_PRECISION_1CYCLE ((uint32_t)(CORDIC_CSR_PRECISION_0))
98#define LL_CORDIC_PRECISION_2CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_1))
99#define LL_CORDIC_PRECISION_3CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
100#define LL_CORDIC_PRECISION_4CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2))
101#define LL_CORDIC_PRECISION_5CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_0))
102#define LL_CORDIC_PRECISION_6CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1))
103#define LL_CORDIC_PRECISION_7CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_2\
104 | CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
105#define LL_CORDIC_PRECISION_8CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3))
106#define LL_CORDIC_PRECISION_9CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_0))
107#define LL_CORDIC_PRECISION_10CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_1))
108#define LL_CORDIC_PRECISION_11CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
109 | CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
110#define LL_CORDIC_PRECISION_12CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_2))
111#define LL_CORDIC_PRECISION_13CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
112 | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_0))
113#define LL_CORDIC_PRECISION_14CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
114 | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1))
115#define LL_CORDIC_PRECISION_15CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\
116 | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1\
117 | CORDIC_CSR_PRECISION_0))
126#define LL_CORDIC_SCALE_0 (0x00000000U)
127#define LL_CORDIC_SCALE_1 ((uint32_t)(CORDIC_CSR_SCALE_0))
128#define LL_CORDIC_SCALE_2 ((uint32_t)(CORDIC_CSR_SCALE_1))
129#define LL_CORDIC_SCALE_3 ((uint32_t)(CORDIC_CSR_SCALE_1 | CORDIC_CSR_SCALE_0))
130#define LL_CORDIC_SCALE_4 ((uint32_t)(CORDIC_CSR_SCALE_2))
131#define LL_CORDIC_SCALE_5 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_0))
132#define LL_CORDIC_SCALE_6 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1))
133#define LL_CORDIC_SCALE_7 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1 | CORDIC_CSR_SCALE_0))
142#define LL_CORDIC_NBWRITE_1 (0x00000000U)
146#define LL_CORDIC_NBWRITE_2 CORDIC_CSR_NARGS
156#define LL_CORDIC_NBREAD_1 (0x00000000U)
160#define LL_CORDIC_NBREAD_2 CORDIC_CSR_NRES
170#define LL_CORDIC_INSIZE_32BITS (0x00000000U)
171#define LL_CORDIC_INSIZE_16BITS CORDIC_CSR_ARGSIZE
180#define LL_CORDIC_OUTSIZE_32BITS (0x00000000U)
181#define LL_CORDIC_OUTSIZE_16BITS CORDIC_CSR_RESSIZE
190#define LL_CORDIC_DMA_REG_DATA_IN (0x00000000U)
191#define LL_CORDIC_DMA_REG_DATA_OUT (0x00000001U)
218#define LL_CORDIC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
226#define LL_CORDIC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
318__STATIC_INLINE
void LL_CORDIC_Config(
CORDIC_TypeDef *CORDICx, uint32_t Function, uint32_t Precision, uint32_t Scale,
319 uint32_t NbWrite, uint32_t NbRead, uint32_t InSize, uint32_t OutSize)
321 MODIFY_REG(CORDICx->
CSR,
324 Function | Precision | Scale |
325 NbWrite | NbRead | InSize | OutSize);
345__STATIC_INLINE
void LL_CORDIC_SetFunction(
CORDIC_TypeDef *CORDICx, uint32_t Function)
366__STATIC_INLINE uint32_t LL_CORDIC_GetFunction(
const CORDIC_TypeDef *CORDICx)
393__STATIC_INLINE
void LL_CORDIC_SetPrecision(
CORDIC_TypeDef *CORDICx, uint32_t Precision)
419__STATIC_INLINE uint32_t LL_CORDIC_GetPrecision(
const CORDIC_TypeDef *CORDICx)
439__STATIC_INLINE
void LL_CORDIC_SetScale(
CORDIC_TypeDef *CORDICx, uint32_t Scale)
458__STATIC_INLINE uint32_t LL_CORDIC_GetScale(
const CORDIC_TypeDef *CORDICx)
472__STATIC_INLINE
void LL_CORDIC_SetNbWrite(
CORDIC_TypeDef *CORDICx, uint32_t NbWrite)
485__STATIC_INLINE uint32_t LL_CORDIC_GetNbWrite(
const CORDIC_TypeDef *CORDICx)
499__STATIC_INLINE
void LL_CORDIC_SetNbRead(
CORDIC_TypeDef *CORDICx, uint32_t NbRead)
512__STATIC_INLINE uint32_t LL_CORDIC_GetNbRead(
const CORDIC_TypeDef *CORDICx)
526__STATIC_INLINE
void LL_CORDIC_SetInSize(
CORDIC_TypeDef *CORDICx, uint32_t InSize)
539__STATIC_INLINE uint32_t LL_CORDIC_GetInSize(
const CORDIC_TypeDef *CORDICx)
553__STATIC_INLINE
void LL_CORDIC_SetOutSize(
CORDIC_TypeDef *CORDICx, uint32_t OutSize)
566__STATIC_INLINE uint32_t LL_CORDIC_GetOutSize(
const CORDIC_TypeDef *CORDICx)
608__STATIC_INLINE uint32_t LL_CORDIC_IsEnabledIT(
const CORDIC_TypeDef *CORDICx)
628__STATIC_INLINE
void LL_CORDIC_EnableDMAReq_RD(
CORDIC_TypeDef *CORDICx)
639__STATIC_INLINE
void LL_CORDIC_DisableDMAReq_RD(
CORDIC_TypeDef *CORDICx)
650__STATIC_INLINE uint32_t LL_CORDIC_IsEnabledDMAReq_RD(
const CORDIC_TypeDef *CORDICx)
661__STATIC_INLINE
void LL_CORDIC_EnableDMAReq_WR(
CORDIC_TypeDef *CORDICx)
672__STATIC_INLINE
void LL_CORDIC_DisableDMAReq_WR(
CORDIC_TypeDef *CORDICx)
683__STATIC_INLINE uint32_t LL_CORDIC_IsEnabledDMAReq_WR(
const CORDIC_TypeDef *CORDICx)
698__STATIC_INLINE uint32_t LL_CORDIC_DMA_GetRegAddr(
const CORDIC_TypeDef *CORDICx, uint32_t Direction)
700 uint32_t data_reg_addr;
702 if (Direction == LL_CORDIC_DMA_REG_DATA_OUT)
705 data_reg_addr = (uint32_t) &(CORDICx->
RDATA);
710 data_reg_addr = (uint32_t) &(CORDICx->
WDATA);
713 return data_reg_addr;
731__STATIC_INLINE uint32_t LL_CORDIC_IsActiveFlag_RRDY(
const CORDIC_TypeDef *CORDICx)
752__STATIC_INLINE
void LL_CORDIC_WriteData(
CORDIC_TypeDef *CORDICx, uint32_t InData)
754 WRITE_REG(CORDICx->
WDATA, InData);
763__STATIC_INLINE uint32_t LL_CORDIC_ReadData(
const CORDIC_TypeDef *CORDICx)
765 return (uint32_t)(READ_REG(CORDICx->
RDATA));
774#if defined(USE_FULL_LL_DRIVER) || defined(__rtems__)
#define CORDIC_CSR_NARGS
Definition: stm32h723xx.h:5739
#define CORDIC_CSR_DMAWEN
Definition: stm32h723xx.h:5733
#define CORDIC_CSR_IEN
Definition: stm32h723xx.h:5727
#define CORDIC_CSR_DMAREN
Definition: stm32h723xx.h:5730
#define CORDIC_CSR_PRECISION
Definition: stm32h723xx.h:5714
#define CORDIC_CSR_RRDY
Definition: stm32h723xx.h:5748
#define CORDIC_CSR_ARGSIZE
Definition: stm32h723xx.h:5745
#define CORDIC_CSR_SCALE
Definition: stm32h723xx.h:5721
#define CORDIC_CSR_FUNC
Definition: stm32h723xx.h:5707
#define CORDIC_CSR_RESSIZE
Definition: stm32h723xx.h:5742
#define CORDIC_CSR_NRES
Definition: stm32h723xx.h:5736
CMSIS STM32H7xx Device Peripheral Access Layer Header File.
COordincate Rotation DIgital Computer.
Definition: stm32h723xx.h:431
__IO uint32_t CSR
Definition: stm32h723xx.h:432
__IO uint32_t WDATA
Definition: stm32h723xx.h:433
__IO uint32_t RDATA
Definition: stm32h723xx.h:434