mathtool.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. #include "typedefine.h"
  25. /************************************************************************
  26. Compiler Directives (N/A)
  27. *************************************************************************/
  28. #ifdef _MATHTOOL_C_
  29. #define _MATHTOOL_EXT
  30. #else
  31. #define _MATHTOOL_EXT extern
  32. #endif
  33. /************************************************************************
  34. Definitions & Macros (#define ...)
  35. *************************************************************************/
  36. #define SINTABSIZE 256 + 1
  37. #define ARCTANTABSIZE 16
  38. #define SINCOS_DEFAULT \
  39. { \
  40. 0, 0 \
  41. } // Default value of SINCOS_DEFAULT
  42. #define ARCTAN_IN_DEFAULT \
  43. { \
  44. 0, 0 \
  45. } // Default value of ARCTAN_IN
  46. /************************************************************************
  47. TypeDefs & Structure defines
  48. *************************************************************************/
  49. typedef struct
  50. { // Outputs of sin-cos table
  51. SWORD swSinPu; // Q15 Output SIN
  52. SWORD swCosPu; // Q15 Output COS
  53. } SINCOS; // Struct of sin&cos
  54. typedef struct
  55. { // Outputs of LPF
  56. UWORD uwKx; // Q15
  57. SLONG_UNION slY; // Q?+Q16
  58. } LPF_OUT; // Struct of LPF_OUT
  59. typedef struct
  60. {
  61. SWORD swAlphaPu; // Alpha axis component
  62. SWORD swBetaPu; // Beta axis component
  63. } ARCTAN_IN;
  64. /************************************************************************
  65. Constant Table
  66. *************************************************************************/
  67. /************************************************************************
  68. Exported Variables (Start definitions w/ _MATHTOOL_EXT)
  69. *************************************************************************/
  70. #ifdef _MATHTOOL_C_
  71. _MATHTOOL_EXT SINCOS mth_stSinCosPu = SINCOS_DEFAULT;
  72. _MATHTOOL_EXT ARCTAN_IN mth_stArctanIn = ARCTAN_IN_DEFAULT;
  73. #else
  74. _MATHTOOL_EXT SINCOS mth_stSinCosPu;
  75. _MATHTOOL_EXT ARCTAN_IN mth_stArctanIn;
  76. #endif
  77. /************************************************************************
  78. Exported Function Call Prototypes (Start definitions w/ _MATHTOOL_EXT)
  79. *************************************************************************/
  80. #ifdef _MATHTOOL_C_
  81. _MATHTOOL_EXT void mth_voSinCos(UWORD angle, SINCOS *v);
  82. _MATHTOOL_EXT void mth_voLPFilterCoef(ULONG ulLpfTime_us, ULONG ulExeFreq, UWORD *uwLPFCof);
  83. _MATHTOOL_EXT void mth_voLPFilter(SWORD swLpfIn, LPF_OUT *out);
  84. _MATHTOOL_EXT SLONG mth_slSqrt(SLONG slInput);
  85. _MATHTOOL_EXT SLONG mth_slRamp(SLONG slInput, SLONG slDelta, SLONG slOutputLimit);
  86. _MATHTOOL_EXT SWORD mth_voArctan(ARCTAN_IN *in);
  87. #else
  88. _MATHTOOL_EXT void mth_voSinCos(UWORD angle, SINCOS *v);
  89. _MATHTOOL_EXT void mth_voLPFilterCoef(ULONG ulLpfTime_us, ULONG ulExeFreq, UWORD *uwLPFCof);
  90. _MATHTOOL_EXT void mth_voLPFilter(SWORD swLpfIn, LPF_OUT *out);
  91. _MATHTOOL_EXT SLONG mth_slSqrt(SLONG slInput);
  92. _MATHTOOL_EXT SLONG mth_slRamp(SLONG slInput, SLONG slDelta, SLONG slOutputLimit);
  93. _MATHTOOL_EXT SWORD mth_voArctan(ARCTAN_IN *in);
  94. #endif
  95. /************************************************************************
  96. RAM ALLOCATION: N/A
  97. *************************************************************************/
  98. /************************************************************************
  99. Flag Define (N/A)
  100. *************************************************************************/
  101. /************************************************************************/
  102. #endif
  103. /*************************************************************************
  104. Copyright (c) 2011 Welling Motor Technology(Shanghai) Co. Ltd.
  105. All rights reserved.
  106. *************************************************************************
  107. End of this File (EOF):
  108. Do not put anything after this part!
  109. *************************************************************************/