mathtool.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: mathtool.h
  4. Partner Filename: mathtool.c
  5. Description: The header file of mathtool.c
  6. Complier: IAR Embedded Workbench for ARM 7.80, IAR Systems.
  7. CPU TYPE : GD32F3x0
  8. *************************************************************************
  9. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  10. All rights reserved.
  11. *************************************************************************
  12. *************************************************************************
  13. Revising History (ECL of this file):
  14. ************************************************************************/
  15. /************************************************************************
  16. Beginning of File, do not put anything above here except notes
  17. Compiler Directives:
  18. *************************************************************************/
  19. #ifndef MATHTOOL_H
  20. #define MATHTOOL_H
  21. /************************************************************************
  22. Modules used (included header files)
  23. *************************************************************************/
  24. /************************************************************************
  25. Compiler Directives (N/A)
  26. *************************************************************************/
  27. #ifdef _MATHTOOL_C_
  28. #define _MATHTOOL_EXT
  29. #else
  30. #define _MATHTOOL_EXT extern
  31. #endif
  32. /************************************************************************
  33. Definitions & Macros (#define ...)
  34. *************************************************************************/
  35. #define SINTABSIZE 256 + 1
  36. #define ARCTANTABSIZE 16
  37. #define SINCOS_DEFAULT \
  38. { \
  39. 0, 0 \
  40. } // Default value of SINCOS_DEFAULT
  41. #define ARCTAN_IN_DEFAULT \
  42. { \
  43. 0, 0 \
  44. } // Default value of ARCTAN_IN
  45. /************************************************************************
  46. TypeDefs & Structure defines
  47. *************************************************************************/
  48. typedef struct
  49. { // Outputs of sin-cos table
  50. SWORD swSinPu; // Q15 Output SIN
  51. SWORD swCosPu; // Q15 Output COS
  52. } SINCOS; // Struct of sin&cos
  53. typedef struct
  54. { // Outputs of LPF
  55. UWORD uwKx; // Q15
  56. SLONG_UNION slY; // Q?+Q16
  57. } LPF_OUT; // Struct of LPF_OUT
  58. typedef struct
  59. {
  60. SWORD swAlphaPu; // Alpha axis component
  61. SWORD swBetaPu; // Beta axis component
  62. } ARCTAN_IN;
  63. /************************************************************************
  64. Constant Table
  65. *************************************************************************/
  66. /************************************************************************
  67. Exported Variables (Start definitions w/ _MATHTOOL_EXT)
  68. *************************************************************************/
  69. #ifdef _MATHTOOL_C_
  70. _MATHTOOL_EXT SINCOS mth_stSinCosPu = SINCOS_DEFAULT;
  71. _MATHTOOL_EXT ARCTAN_IN mth_stArctanIn = ARCTAN_IN_DEFAULT;
  72. #else
  73. _MATHTOOL_EXT SINCOS mth_stSinCosPu;
  74. _MATHTOOL_EXT ARCTAN_IN mth_stArctanIn;
  75. #endif
  76. /************************************************************************
  77. Exported Function Call Prototypes (Start definitions w/ _MATHTOOL_EXT)
  78. *************************************************************************/
  79. #ifdef _MATHTOOL_C_
  80. _MATHTOOL_EXT void mth_voSinCos(UWORD angle, SINCOS *v);
  81. _MATHTOOL_EXT void mth_voLPFilterCoef(ULONG ulLpfTime_us, ULONG ulExeFreq, UWORD *uwLPFCof);
  82. _MATHTOOL_EXT void mth_voLPFilter(SWORD swLpfIn, LPF_OUT *out);
  83. _MATHTOOL_EXT SLONG mth_slSqrt(SLONG slInput);
  84. _MATHTOOL_EXT SLONG mth_slRamp(SLONG slInput, SLONG slDelta, SLONG slOutputLimit);
  85. _MATHTOOL_EXT SWORD mth_voArctan(ARCTAN_IN *in);
  86. #else
  87. _MATHTOOL_EXT void mth_voSinCos(UWORD angle, SINCOS *v);
  88. _MATHTOOL_EXT void mth_voLPFilterCoef(ULONG ulLpfTime_us, ULONG ulExeFreq, UWORD *uwLPFCof);
  89. _MATHTOOL_EXT void mth_voLPFilter(SWORD swLpfIn, LPF_OUT *out);
  90. _MATHTOOL_EXT SLONG mth_slSqrt(SLONG slInput);
  91. _MATHTOOL_EXT SLONG mth_slRamp(SLONG slInput, SLONG slDelta, SLONG slOutputLimit);
  92. _MATHTOOL_EXT SWORD mth_voArctan(ARCTAN_IN *in);
  93. #endif
  94. /************************************************************************
  95. RAM ALLOCATION: N/A
  96. *************************************************************************/
  97. /************************************************************************
  98. Flag Define (N/A)
  99. *************************************************************************/
  100. /************************************************************************/
  101. #endif
  102. /*************************************************************************
  103. Copyright (c) 2011 Welling Motor Technology(Shanghai) Co. Ltd.
  104. All rights reserved.
  105. *************************************************************************
  106. End of this File (EOF):
  107. Do not put anything after this part!
  108. *************************************************************************/