DRIVER.c 3.4 KB

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