AMP.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /* --------------------------- (C) COPYRIGHT 2021 Fortiortech ShenZhen -----------------------------
  2. File Name : AMP.c
  3. Author : Fortiortech Appliction Team
  4. Version : V1.0
  5. Date : 2021-04-11
  6. Description : This file contains .C file function used for Motor Control.
  7. ----------------------------------------------------------------------------------------------------
  8. All Rights Reserved
  9. ------------------------------------------------------------------------------------------------- */
  10. #include <definition.h>
  11. #include <Myproject.h>
  12. void AMP_Init(void)
  13. {
  14. #if (Shunt_Resistor_Mode == Single_Resistor)
  15. {
  16. /* ----AMP 端口模拟功能设置---- */
  17. #if (HW_AMP_MODE == AMP_NOMAL) //外部放大
  18. {
  19. SetBit(P3_AN, P31); //AMP0 Pin设置为模拟模式 +
  20. SetBit(P3_AN, P30); //AMP0 Pin设置为模拟模式 -
  21. SetBit(P2_AN, P27); //AMP0 Pin设置为模拟模式 O
  22. SetBit(AMP_CR0, AMP0EN); //AMP0 Enable
  23. ClrBit(AMP_CR1, AMP0_GAIN2);
  24. ClrBit(AMP_CR1, AMP0_GAIN1);
  25. ClrBit(AMP_CR1, AMP0_GAIN0);
  26. }
  27. #else // 内部PGA双端差分输入
  28. {
  29. SetBit(P3_AN, P31); //AMP0 Pin设置为模拟模式 +
  30. SetBit(P3_AN, P30); //AMP0 Pin设置为模拟模式 -
  31. SetBit(P2_AN, P27); //AMP0 Pin设置为模拟模式 O
  32. ClrBit(AMP_CR0, AMP0M_GND); // 禁止运放反向输入端内部接地
  33. SetBit(AMP_CR0, AMP0EN); //AMP0 Enable
  34. #if (HW_AMPGAIN == AMP2x)
  35. {
  36. ClrBit(AMP_CR1, AMP0_GAIN2);
  37. ClrBit(AMP_CR1, AMP0_GAIN1);
  38. SetBit(AMP_CR1, AMP0_GAIN0);
  39. }
  40. #elif (HW_AMPGAIN == AMP4x)
  41. {
  42. ClrBit(AMP_CR1, AMP0_GAIN2);
  43. SetBit(AMP_CR1, AMP0_GAIN1);
  44. ClrBit(AMP_CR1, AMP0_GAIN0);
  45. }
  46. #elif (HW_AMPGAIN == AMP8x)
  47. {
  48. ClrBit(AMP_CR1, AMP0_GAIN2);
  49. SetBit(AMP_CR1, AMP0_GAIN1);
  50. SetBit(AMP_CR1, AMP0_GAIN0);
  51. }
  52. #elif (HW_AMPGAIN == AMP16x)
  53. {
  54. SetBit(AMP_CR1, AMP0_GAIN2);
  55. ClrBit(AMP_CR1, AMP0_GAIN1);
  56. ClrBit(AMP_CR1, AMP0_GAIN0);
  57. }
  58. #endif
  59. }
  60. #endif
  61. }
  62. #else // 双 三电阻采样
  63. {
  64. SetBit(P1_AN, P16); //AMP1 Pin设置为模拟模式 +
  65. SetBit(P1_AN, P17); //AMP1 Pin设置为模拟模式 -
  66. SetBit(P2_AN, P20); //AMP1 Pin设置为模拟模式 O
  67. SetBit(P2_AN, P21); //AMP2 Pin设置为模拟模式 +
  68. SetBit(P2_AN, P22); //AMP2 Pin设置为模拟模式 -
  69. SetBit(P2_AN, P23); //AMP2 Pin设置为模拟模式 O
  70. ClrBit(P2_OE, P23); //P23_OE需要强制为0,禁止DA1输出至PAD
  71. SetBit(P3_AN, P31); //AMP0 Pin设置为模拟模式 +
  72. SetBit(P3_AN, P30); //AMP0 Pin设置为模拟模式 -
  73. SetBit(P2_AN, P27); //AMP0 Pin设置为模拟模式 O
  74. SetBit(AMP_CR0, AMP0EN); //AMP0 Enable
  75. SetBit(AMP_CR0, AMP1EN); //AMP1 Enable
  76. SetBit(AMP_CR0, AMP2EN); //AMP2 Enable
  77. // SetBit(AMP_CR0, AMP0M_GND); // 禁止运放反向输入端内部接地
  78. // SetBit(AMP_CR0, AMP12M_GND); // 禁止运放反向输入端内部接地
  79. #if (HW_AMP_MODE == AMP_NOMAL) //外部放大
  80. {
  81. ClrBit(AMP_CR1, AMP0_GAIN2);
  82. ClrBit(AMP_CR1, AMP0_GAIN1);
  83. ClrBit(AMP_CR1, AMP0_GAIN0);
  84. ClrBit(AMP_CR1, AMP_PH_GAIN2);
  85. ClrBit(AMP_CR1, AMP_PH_GAIN1);
  86. ClrBit(AMP_CR1, AMP_PH_GAIN0);
  87. }
  88. #else
  89. {
  90. #if (HW_AMPGAIN == AMP2x)
  91. {
  92. ClrBit(AMP_CR1, AMP0_GAIN2);
  93. ClrBit(AMP_CR1, AMP0_GAIN1);
  94. SetBit(AMP_CR1, AMP0_GAIN0);
  95. ClrBit(AMP_CR1, AMP_PH_GAIN2);
  96. ClrBit(AMP_CR1, AMP_PH_GAIN1);
  97. SetBit(AMP_CR1, AMP_PH_GAIN0);
  98. }
  99. #elif (HW_AMPGAIN == AMP4x)
  100. {
  101. ClrBit(AMP_CR1, AMP0_GAIN2);
  102. SetBit(AMP_CR1, AMP0_GAIN1);
  103. ClrBit(AMP_CR1, AMP0_GAIN0);
  104. ClrBit(AMP_CR1, AMP_PH_GAIN2);
  105. SetBit(AMP_CR1, AMP_PH_GAIN1);
  106. ClrBit(AMP_CR1, AMP_PH_GAIN0);
  107. }
  108. #elif (HW_AMPGAIN == AMP8x)
  109. {
  110. ClrBit(AMP_CR1, AMP0_GAIN2);
  111. SetBit(AMP_CR1, AMP0_GAIN1);
  112. SetBit(AMP_CR1, AMP0_GAIN0);
  113. ClrBit(AMP_CR1, AMP_PH_GAIN2);
  114. SetBit(AMP_CR1, AMP_PH_GAIN1);
  115. SetBit(AMP_CR1, AMP_PH_GAIN0);
  116. }
  117. #elif (HW_AMPGAIN == AMP16x)
  118. {
  119. SetBit(AMP_CR1, AMP0_GAIN2);
  120. ClrBit(AMP_CR1, AMP0_GAIN1);
  121. ClrBit(AMP_CR1, AMP0_GAIN0);
  122. SetBit(AMP_CR1, AMP_PH_GAIN2);
  123. ClrBit(AMP_CR1, AMP_PH_GAIN1);
  124. ClrBit(AMP_CR1, AMP_PH_GAIN0);
  125. }
  126. #endif
  127. }
  128. #endif
  129. }
  130. #endif
  131. }