bsp_huart.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #include "include.h"
  2. #include "api.h"
  3. #if HUART_EN
  4. void sco_huart_tx_done(void);
  5. AT(.com_huart.text)
  6. void huart_tx_done_cb(void)
  7. {
  8. #if ANC_ALG_DUMP_EN || BT_SCO_DUMP_TX_EN
  9. sco_huart_tx_done();
  10. #endif
  11. }
  12. AT(.com_huart.text)
  13. void huart_rx_done_cb(void)
  14. {
  15. if(eq_rx_buf[0] == 0xF5 && eq_rx_buf[1] == 0xA0 && eq_rx_buf[2] == 0xA5 && eq_rx_buf[3] == 0x96 && eq_rx_buf[4] == 0x87 && eq_rx_buf[5] == 0x5A){
  16. WDT_RST();
  17. while(1);
  18. }
  19. #if EQ_DBG_IN_UART
  20. if(bsp_eq_rx_done(eq_rx_buf)){
  21. return;
  22. }
  23. #endif
  24. #if ANC_ALG_DBG_EN
  25. if (bsp_anc_alg_dbg_rx_done(eq_rx_buf, 0)) {
  26. return;
  27. }
  28. #endif // ANC_ALG_DBG_EN
  29. #if (CHARGE_BOX_INTF_SEL == INTF_HUART)
  30. charge_box_packet_huart_recv(eq_rx_buf);
  31. #endif
  32. #if QTEST_EN /*&& (TEST_INTF_SEL == INTF_HUART)*/
  33. if(QTEST_IS_ENABLE()) {
  34. qtest_packet_huart_recv(eq_rx_buf);
  35. }
  36. #endif
  37. #if IODM_TEST_EN && (TEST_INTF_SEL == INTF_HUART)
  38. iodm_packet_huart_recv(eq_rx_buf);
  39. #endif
  40. #if ONEMORE_SPP_TEST_EN
  41. onemore_hq51_uart_reveice_data_handle(eq_rx_buf);
  42. #endif
  43. }
  44. void bsp_huart_init(void)
  45. {
  46. huart_t huart0;
  47. #if IODM_TEST_EN
  48. u32 baud_rate = 9600;
  49. #else
  50. u32 baud_rate = 1500000;
  51. #endif // IODM_TEST_EN
  52. #if (BT_DUMP_6M_EN && BT_SCO_DUMP_TX_EN)
  53. baud_rate = 6000000;
  54. #endif
  55. if (xcfg_cb.huart_sel == HUART_TR_PA7) {
  56. if (UART0_PRINTF_SEL == PRINTF_PA7) {
  57. FUNCMCON0 = 0x0f << 8;
  58. }
  59. } else if (xcfg_cb.huart_sel == HUART_TR_PB2) {
  60. if (UART0_PRINTF_SEL == PRINTF_PB2) {
  61. FUNCMCON0 = 0x0f << 8;
  62. }
  63. } else if (xcfg_cb.huart_sel == HUART_TR_PB3) {
  64. if (UART0_PRINTF_SEL == PRINTF_PB3) {
  65. FUNCMCON0 = 0x0f << 8;
  66. }
  67. }
  68. if((xcfg_cb.huart_sel == HUART_TR_VUSB)){
  69. if(!sys_cb.vusb_uart_flag){
  70. PWRCON0 |= BIT(30); //Enable VUSB GPIO
  71. #if (CHARGE_BOX_INTF_SEL == INTF_HUART) || (QTEST_EN /*&& (TEST_INTF_SEL == INTF_HUART)*/)
  72. baud_rate = 9600;
  73. #endif
  74. xcfg_cb.chg_inbox_pwrdwn_en=0; //入仓耳机关机
  75. sys_cb.vusb_uart_flag = 1;
  76. }else{
  77. return;
  78. }
  79. }
  80. memset(eq_rx_buf, 0, EQ_BUFFER_LEN);
  81. memset(&huart0, 0x00, sizeof(huart0));
  82. huart0.rx_port = xcfg_cb.huart_sel;
  83. huart0.tx_port = xcfg_cb.huart_sel;
  84. huart0.rxisr_en = 1;
  85. huart0.txisr_en = 1;
  86. huart0.rxbuf = eq_rx_buf;
  87. huart0.rxbuf_size = EQ_BUFFER_LEN;
  88. huart_init(&huart0, baud_rate);
  89. }
  90. #else
  91. void bsp_huart_init(void) {}
  92. #endif
  93. u8* huart_get_rxbuf(u16 *len)
  94. {
  95. *len = EQ_BUFFER_LEN;
  96. return eq_rx_buf;
  97. }
  98. #if BT_FCC_TEST_EN || LE_BQB_RF_EN
  99. ALIGNED(4)
  100. u8 huart_buffer[128];
  101. void bt_uart_init(void)
  102. {
  103. huart_t huart0;
  104. memset(&huart0, 0x00, sizeof(huart0));
  105. #if LE_BQB_RF_EN
  106. huart0.rx_port = HUART_TR_PB3;
  107. huart0.tx_port = HUART_TR_PB4;
  108. huart0.rxbuf_loop = 1;
  109. huart0.rxbuf = huart_buffer;
  110. huart0.rxbuf_size = 128;
  111. huart_init(&huart0, 9600);
  112. #else
  113. huart0.rx_port = xcfg_cb.huart_sel;
  114. huart0.tx_port = xcfg_cb.huart_sel;
  115. huart0.txisr_en = 0;
  116. huart0.rxbuf_loop = 1;
  117. huart0.rxbuf = huart_buffer;
  118. huart0.rxbuf_size = 128;
  119. huart_init(&huart0, 1500000);
  120. #endif
  121. }
  122. void bt_uart_exit(void)
  123. {
  124. }
  125. #endif