yc_lpm.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "yc_lpm.h"
  2. #include "yc11xx_gpio.h"
  3. unsigned short HIBERNATE_FLAG=0x0000;
  4. void Lpm_LockLpm(uint16_t lpmNum)
  5. {
  6. uint16_t temp;
  7. temp =( HREADW(M0_LPM_REG))|lpmNum;
  8. HWRITEW(M0_LPM_REG,temp);
  9. }
  10. void Lpm_unLockLpm(uint16_t lpmNum)
  11. {
  12. uint16_t temp;
  13. temp =( HREADW(M0_LPM_REG))&(~lpmNum);
  14. HWRITEW(M0_LPM_REG,temp);
  15. }
  16. bool Lpm_CheckLpmFlag()
  17. {
  18. return NONE_LPM_FLAG == HREADW(M0_LPM_REG);
  19. }
  20. void Lpm_ClearLpmFlag()
  21. {
  22. HWRITEW(M0_LPM_REG,0);
  23. }
  24. void Lpm_enter()
  25. {
  26. HWRITE(mem_lpm_mode,0x01);
  27. }
  28. void Lpm_exit()
  29. {
  30. HWRITE(mem_lpm_mode,0x00);
  31. }
  32. void Lpm_Set_Interval(uint16_t gap)
  33. {
  34. HWRITEW(mem_lpm_interval,gap);
  35. }
  36. void Lpm_Set_Conn_Interval(uint16_t gap)
  37. {
  38. HWRITEW(mem_time_wake_gap,gap);
  39. }
  40. void BT_GpiosetBeforlpm()
  41. {
  42. uint8_t i;
  43. for(i=GPIO_0;i<GPIO_MAX_NUM;i++)
  44. {
  45. if (i == (HREAD(mem_qspi_gpio_ncs)&GPIO_NUM_MASK)
  46. || i == (HREAD(mem_qspi_gpio_sck)&GPIO_NUM_MASK)
  47. || i == (HREAD(mem_qspi_gpio_io0)&GPIO_NUM_MASK)
  48. || i == (HREAD(mem_qspi_gpio_io1)&GPIO_NUM_MASK)
  49. || i == (HREAD(mem_qspi_gpio_io2)&GPIO_NUM_MASK)
  50. || i == (HREAD(mem_qspi_gpio_io3)&GPIO_NUM_MASK) )
  51. {
  52. continue;
  53. }
  54. else
  55. {
  56. GPIO_SetGpioMultFunction(i,GPCFG_PULLDOWN);
  57. }
  58. }
  59. }
  60. void Bt_ActionBeforeLpm()
  61. {
  62. BT_GpiosetBeforlpm();
  63. }
  64. void Bt_ActionBeforeHibernate()
  65. {
  66. BT_GpiosetBeforlpm();
  67. }