api_sys.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #ifndef _API_SYS_H_
  2. #define _API_SYS_H_
  3. #define IRQ_TMR1_VECTOR 4
  4. #define IRQ_TMR2_VECTOR 5
  5. #define IRQ_IRRX_VECTOR 6
  6. #define IRQ_UART_VECTOR 14
  7. #define IRQ_TMR3_VECTOR 16
  8. #define IRQ_TMR4_VECTOR 17
  9. #define IRQ_TMR5_VECTOR 18
  10. #define IRQ_PORT_VECTOR 26
  11. #define IRQ_SPI_VECTOR 20
  12. #define IRQ_I2C_VECTOR 30
  13. #define SW_RST_DC_IN 1
  14. #define SW_RST_QTEST_NORMAL 2
  15. #define SW_RST_QTEST_ONLY_PAIR 3
  16. #define SW_RST_FLAG 4 //不管什么情况,直接复位
  17. #define SW_RST_DAC_SYNC 5 //DAC sync
  18. #if HLW_UI
  19. #define SW_RST_CLEAR_PAIRLIST 6
  20. #endif // HLW_UI
  21. typedef void (*isr_t)(void);
  22. //clk_out type
  23. enum {
  24. DBG_CLK_NO,
  25. DBG_CLK_XOSC,
  26. DBG_CLK_XOSC_32K,
  27. DBG_CLK_OSC32K,
  28. DBG_CLK_PLL0DIV2,
  29. DBG_CLK_XOSC_X2CLK,
  30. DBG_CLK_PLL1DIV2,
  31. DBG_CLK_RC2M,
  32. DBG_CLK_RTC_RC2M,
  33. DBG_CLK_SYS_CLK,
  34. DBG_CLK_BT_CLK,
  35. DBG_CLK_PLL_TS_CLKO,
  36. DBG_CLK_DAC_CLKPP,
  37. DBG_CLK_TKA_OUT,
  38. };
  39. void sys_clk_output(u32 type, u32 mapping); //输出时钟, mapping参考CLKOMAP_xx
  40. extern u16 tmr5ms_cnt;
  41. int64_t __divdi3(int64_t num, int64_t den);
  42. int mul_r(int x, int y, int frat);
  43. int s_abs(int x);
  44. u32 sys_get_rc2m_rtc_clk(void);
  45. void sys_set_tmr_enable(bool tmr5ms_en, bool tmr1ms_en);
  46. void sys_set_tmr_tick(bool tick_en);
  47. u32 sys_get_rand_key(void);
  48. void sys_run_loop(void);
  49. void xosc_init(void);
  50. bool sys_irq_init(int vector, int pr, isr_t isr); //初始化一个中断, pr为优先级
  51. u16 get_random(u16 num); //获取[0, num-1]之间的随机数
  52. void sys_clk_output(u32 type, u32 mapping); //输出时钟 type: 0->xosc26m, 1->x26m_13m, 2->12m, 3->24m
  53. u16 convert_uni2gbk(u16 code, u32 addr, u32 len); //输入utf16, 返回gbk编码, 找不到编码,使用'□'
  54. u8 utf8_char_size(u8 code); //返回UTF8占用几字节
  55. u16 utf8_convert_to_unicode(u8 *in, u8 char_size); //UTF-8转成UTF-16 LE编码
  56. u32 sys_rst_init(bool wko10s_rst);
  57. void sw_reset_kick(u8 source);
  58. u8 sw_reset_source_get(void);
  59. void set_uart0_baud(u32 baud);
  60. void set_uart1_baud(u32 baud);
  61. void set_uart1_baud_rc2m_clk(u32 baud);
  62. void sys_pe4_power_gate_set(u8 on); //PE4供电开关
  63. bool bt_get_ft_trim_value(void *rf_param);
  64. void fs_lock(void);
  65. void fs_unlock(void);
  66. bool spiflash_read_kick(void *buf, u32 addr, uint len);
  67. bool spiflash_read_wait(void);
  68. void spiflash_lock(void);
  69. void spiflash_unlock(void);
  70. #define anc_alg_enter_critical() fs_lock()
  71. #define anc_alg_exit_critical() fs_unlock()
  72. //lv0: just sleep
  73. //lv1: sleep with nomal xosc
  74. //lv2: sleep with lowpwr xosc
  75. //lv3: sleep with lowpwr buck
  76. //lv4: sleep with lowpwr ldo
  77. void sys_sleep_proc_lv(u8 lpclk_type, uint level);
  78. void sys_sleep_proc_lv0(void);
  79. u8 crc8_maxim(u8 *buf, u8 length);
  80. extern const u8 crc8_tbl[256];
  81. extern const uint16_t libs_version;
  82. #define LIBS_VERSION libs_version
  83. //vusb 5v reset
  84. #define vusb_reset_set_time(nsec) {VBRSTCON = ((nsec * 33) << 20);} //vusb delay n second
  85. #define vusb_reset_kick_mode(x) {VBRSTCON = (VBRSTCON & ~(1<<30)) | ((x)<<30);} //0:vusb HW kick, 1:soft kick
  86. #define vusb_reset_soft_start_kick() {RTCCPND |= BIT(30);} // soft start kick
  87. #define vusb_reset_clr() {RTCCPND = 3 << 28;} //clr counter and pending, disable
  88. #define vusb_reset_en(x) {RTCCON = (RTCCON & ~(1<<6)) | ((x)<<6);} //0:reset disable, 1:reset enable
  89. //vusb 4s reset
  90. #define vusb4s_reset_is_recover() ((bool)(RTCCON12 & (3 << 30))) //VUSB拔出后是否恢复4S复位功能标志
  91. #define vusb4s_reset_recover_clr() RTCCON10 = BIT(31) //清除恢复4S复位功能标志
  92. #define vusb4s_reset_dis() RTCCON12 |= 3 << 2;vusb4s_reset_recover_clr() //关闭VUSB4S复位
  93. #define vusb4s_reset_en() vusb4s_reset_recover_clr(); RTCCON12 &= ~(3 << 2); RTCCON11 |= BIT(4) //打开VUSB4S复位和拔出恢复功能
  94. #define vusb4s_reset_clr_cnt() RTCCON10 = BIT(15) //清除VUSB4S计数
  95. #endif // _API_SYS_H_