RTEMS 6.1-rc7
Loading...
Searching...
No Matches
stm32h7xx_ll_cordic.h
Go to the documentation of this file.
1
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32H7xx_LL_CORDIC_H
21#define STM32H7xx_LL_CORDIC_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32h7xx.h"
29
34#if defined(CORDIC)
35
41/* Private variables ---------------------------------------------------------*/
42
43/* Private constants ---------------------------------------------------------*/
44
45/* Private macros ------------------------------------------------------------*/
46
47/* Exported types ------------------------------------------------------------*/
48
49/* Exported constants --------------------------------------------------------*/
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)
200/* Exported macro ------------------------------------------------------------*/
218#define LL_CORDIC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
219
226#define LL_CORDIC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
236/* Exported functions --------------------------------------------------------*/
237
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)
320{
321 MODIFY_REG(CORDICx->CSR,
324 Function | Precision | Scale |
325 NbWrite | NbRead | InSize | OutSize);
326}
327
345__STATIC_INLINE void LL_CORDIC_SetFunction(CORDIC_TypeDef *CORDICx, uint32_t Function)
346{
347 MODIFY_REG(CORDICx->CSR, CORDIC_CSR_FUNC, Function);
348}
349
366__STATIC_INLINE uint32_t LL_CORDIC_GetFunction(const CORDIC_TypeDef *CORDICx)
367{
368 return (uint32_t)(READ_BIT(CORDICx->CSR, CORDIC_CSR_FUNC));
369}
370
393__STATIC_INLINE void LL_CORDIC_SetPrecision(CORDIC_TypeDef *CORDICx, uint32_t Precision)
394{
395 MODIFY_REG(CORDICx->CSR, CORDIC_CSR_PRECISION, Precision);
396}
397
419__STATIC_INLINE uint32_t LL_CORDIC_GetPrecision(const CORDIC_TypeDef *CORDICx)
420{
421 return (uint32_t)(READ_BIT(CORDICx->CSR, CORDIC_CSR_PRECISION));
422}
423
439__STATIC_INLINE void LL_CORDIC_SetScale(CORDIC_TypeDef *CORDICx, uint32_t Scale)
440{
441 MODIFY_REG(CORDICx->CSR, CORDIC_CSR_SCALE, Scale);
442}
443
458__STATIC_INLINE uint32_t LL_CORDIC_GetScale(const CORDIC_TypeDef *CORDICx)
459{
460 return (uint32_t)(READ_BIT(CORDICx->CSR, CORDIC_CSR_SCALE));
461}
462
472__STATIC_INLINE void LL_CORDIC_SetNbWrite(CORDIC_TypeDef *CORDICx, uint32_t NbWrite)
473{
474 MODIFY_REG(CORDICx->CSR, CORDIC_CSR_NARGS, NbWrite);
475}
476
485__STATIC_INLINE uint32_t LL_CORDIC_GetNbWrite(const CORDIC_TypeDef *CORDICx)
486{
487 return (uint32_t)(READ_BIT(CORDICx->CSR, CORDIC_CSR_NARGS));
488}
489
499__STATIC_INLINE void LL_CORDIC_SetNbRead(CORDIC_TypeDef *CORDICx, uint32_t NbRead)
500{
501 MODIFY_REG(CORDICx->CSR, CORDIC_CSR_NRES, NbRead);
502}
503
512__STATIC_INLINE uint32_t LL_CORDIC_GetNbRead(const CORDIC_TypeDef *CORDICx)
513{
514 return (uint32_t)(READ_BIT(CORDICx->CSR, CORDIC_CSR_NRES));
515}
516
526__STATIC_INLINE void LL_CORDIC_SetInSize(CORDIC_TypeDef *CORDICx, uint32_t InSize)
527{
528 MODIFY_REG(CORDICx->CSR, CORDIC_CSR_ARGSIZE, InSize);
529}
530
539__STATIC_INLINE uint32_t LL_CORDIC_GetInSize(const CORDIC_TypeDef *CORDICx)
540{
541 return (uint32_t)(READ_BIT(CORDICx->CSR, CORDIC_CSR_ARGSIZE));
542}
543
553__STATIC_INLINE void LL_CORDIC_SetOutSize(CORDIC_TypeDef *CORDICx, uint32_t OutSize)
554{
555 MODIFY_REG(CORDICx->CSR, CORDIC_CSR_RESSIZE, OutSize);
556}
557
566__STATIC_INLINE uint32_t LL_CORDIC_GetOutSize(const CORDIC_TypeDef *CORDICx)
567{
568 return (uint32_t)(READ_BIT(CORDICx->CSR, CORDIC_CSR_RESSIZE));
569}
570
586__STATIC_INLINE void LL_CORDIC_EnableIT(CORDIC_TypeDef *CORDICx)
587{
588 SET_BIT(CORDICx->CSR, CORDIC_CSR_IEN);
589}
590
597__STATIC_INLINE void LL_CORDIC_DisableIT(CORDIC_TypeDef *CORDICx)
598{
599 CLEAR_BIT(CORDICx->CSR, CORDIC_CSR_IEN);
600}
601
608__STATIC_INLINE uint32_t LL_CORDIC_IsEnabledIT(const CORDIC_TypeDef *CORDICx)
609{
610 return ((READ_BIT(CORDICx->CSR, CORDIC_CSR_IEN) == (CORDIC_CSR_IEN)) ? 1U : 0U);
611}
612
628__STATIC_INLINE void LL_CORDIC_EnableDMAReq_RD(CORDIC_TypeDef *CORDICx)
629{
630 SET_BIT(CORDICx->CSR, CORDIC_CSR_DMAREN);
631}
632
639__STATIC_INLINE void LL_CORDIC_DisableDMAReq_RD(CORDIC_TypeDef *CORDICx)
640{
641 CLEAR_BIT(CORDICx->CSR, CORDIC_CSR_DMAREN);
642}
643
650__STATIC_INLINE uint32_t LL_CORDIC_IsEnabledDMAReq_RD(const CORDIC_TypeDef *CORDICx)
651{
652 return ((READ_BIT(CORDICx->CSR, CORDIC_CSR_DMAREN) == (CORDIC_CSR_DMAREN)) ? 1U : 0U);
653}
654
661__STATIC_INLINE void LL_CORDIC_EnableDMAReq_WR(CORDIC_TypeDef *CORDICx)
662{
663 SET_BIT(CORDICx->CSR, CORDIC_CSR_DMAWEN);
664}
665
672__STATIC_INLINE void LL_CORDIC_DisableDMAReq_WR(CORDIC_TypeDef *CORDICx)
673{
674 CLEAR_BIT(CORDICx->CSR, CORDIC_CSR_DMAWEN);
675}
676
683__STATIC_INLINE uint32_t LL_CORDIC_IsEnabledDMAReq_WR(const CORDIC_TypeDef *CORDICx)
684{
685 return ((READ_BIT(CORDICx->CSR, CORDIC_CSR_DMAWEN) == (CORDIC_CSR_DMAWEN)) ? 1U : 0U);
686}
687
698__STATIC_INLINE uint32_t LL_CORDIC_DMA_GetRegAddr(const CORDIC_TypeDef *CORDICx, uint32_t Direction)
699{
700 uint32_t data_reg_addr;
701
702 if (Direction == LL_CORDIC_DMA_REG_DATA_OUT)
703 {
704 /* return address of RDATA register */
705 data_reg_addr = (uint32_t) &(CORDICx->RDATA);
706 }
707 else
708 {
709 /* return address of WDATA register */
710 data_reg_addr = (uint32_t) &(CORDICx->WDATA);
711 }
712
713 return data_reg_addr;
714}
715
731__STATIC_INLINE uint32_t LL_CORDIC_IsActiveFlag_RRDY(const CORDIC_TypeDef *CORDICx)
732{
733 return ((READ_BIT(CORDICx->CSR, CORDIC_CSR_RRDY) == (CORDIC_CSR_RRDY)) ? 1U : 0U);
734}
735
752__STATIC_INLINE void LL_CORDIC_WriteData(CORDIC_TypeDef *CORDICx, uint32_t InData)
753{
754 WRITE_REG(CORDICx->WDATA, InData);
755}
756
763__STATIC_INLINE uint32_t LL_CORDIC_ReadData(const CORDIC_TypeDef *CORDICx)
764{
765 return (uint32_t)(READ_REG(CORDICx->RDATA));
766}
767
774#if defined(USE_FULL_LL_DRIVER) || defined(__rtems__)
779ErrorStatus LL_CORDIC_DeInit(const CORDIC_TypeDef *CORDICx);
780
784#endif /* USE_FULL_LL_DRIVER */
785
794#endif /* defined(CORDIC) */
795
800#ifdef __cplusplus
801}
802#endif
803
804#endif /* STM32H7xx_LL_CORDIC_H */
#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