DRIVER.c 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /********************************************************************************
  2. **** Copyright (C), 2019, Fortior Technology Co., Ltd. ****
  3. ********************************************************************************
  4. File Name : DRIVER.c
  5. Author : Bruce HW&RD
  6. Date : 2019-03-29
  7. Description : .C file function description
  8. Version : 1.0
  9. Function List :
  10. Record :
  11. 1.Date : 2019-03-29
  12. Author : Bruce HW&RD
  13. Modification: Created file
  14. ********************************************************************************/
  15. #include "AddFunction.h"
  16. #include "Driver.h"
  17. #include "Parameter.h"
  18. #include "customer.h"
  19. #include "FU68xx_5_MCU.h"
  20. /*****************************************************************************
  21. Function : Driver_Init
  22. Description : Driver初始化
  23. Input : void
  24. Output : None
  25. Return :
  26. Others :
  27. Record
  28. 1.Date : 20190329
  29. Author : Bruce HW&RD
  30. Modification: Created function
  31. *****************************************************************************/
  32. void Driver_Init(void)
  33. {
  34. DRV_ARR = PWM_VALUE_LOAD ; // 载波频率的周期值
  35. DRV_DTR = PWM_LOAD_DEADTIME; // 死区时间
  36. DRV_DR = 0;
  37. DRV_CMR = 0x0abf; //UH/VH/WH UL/VL/WL 互补
  38. DRV_OUT = 0x00; //空闲电平,默认高电平有效
  39. /*驱动有效电平和空闲电平*/
  40. #if (PWM_Level_Mode == High_Level)
  41. {
  42. ClrBit(PI_CR, HINV); // 反相关闭
  43. ClrBit(PI_CR, LINV); // 反相关闭
  44. }
  45. #elif (PWM_Level_Mode == Low_Level)
  46. {
  47. SetBit(PI_CR, HINV); // 反相打开
  48. SetBit(PI_CR, LINV); // 反相打开
  49. }
  50. #elif (PWM_Level_Mode == UP_H_DOWN_L)
  51. {
  52. ClrBit(PI_CR, HINV); // 反相关闭
  53. SetBit(PI_CR, LINV); // 反相打开
  54. }
  55. #elif (PWM_Level_Mode == UP_L_DOWN_H)
  56. {
  57. SetBit(PI_CR, HINV); // 反相打开
  58. ClrBit(PI_CR, LINV); // 反相关闭
  59. }
  60. #endif //end PWM_Level_Mode
  61. // SetBit(DRV_SR , FGIE); //FG中断使能 0-->Disable 1-->Enable
  62. /*清中断标志位,使能中断,配置比较值,设置中断优先级*/
  63. ClrBit(DRV_SR, DCIF); //清除DRV中断标志位
  64. /**************************************************
  65. DRV比较匹配中断模式
  66. 当计数值等于DRV_COMR时,根据DCIM的设置判断是否产生中断标记
  67. 00:不产生中断 01:上升方向
  68. 10:下降方向 11:上升/下降方向
  69. *************************************************/
  70. SetBit(DRV_SR, DCIM1);
  71. ClrBit(DRV_SR, DCIM0);
  72. /*设置DRV计数器的比较匹配值,当DRV计数值与COMR相等时,根据DRV_SR寄存器的DCIM是否产生比较匹配事件*/
  73. DRV_COMR = (PWM_VALUE_LOAD >> 3);
  74. SetBit(IP0, PDRV1);
  75. SetBit(IP0, PDRV0);
  76. ClrBit(DRV_SR, DCIP); //0-->1个计数周期产生中断 1-->2个计数周期产生中断
  77. ClrBit(DRV_CR, FOCEN);
  78. /* MESEL为0,ME模块工作在BLDC模式
  79. MESEL为1,ME模块工作在FOC/SVPWM/SPWM模式*/
  80. SetBit(DRV_CR, MESEL);
  81. SetBit(DRV_CR, DRVEN); //计数器使能 0-->Disable 1-->Enable
  82. ClrBit(DRV_CR, DRPE); //计数器比较值预装载使能 0-->Disable 1-->Enable
  83. SetBit(DRV_CR, DRVOE); //Driver输出使能0-->Disable 1-->Enable
  84. }