BLE 4.1 協議棧串口DMA模式

藍牙 BLE BLE-CC254x-1.4.1.43908協議棧串口默認是串口0,RX和TX引腳分別是P0_2和P0_3,硬件板子改板成串口0的Alt2方式,即RX和TX引腳分別是P1_4和P1_5。如圖:
這裏寫圖片描述
需要修改協議棧的部分代碼纔可以使用串口0 Alt2方式傳輸數據。
1.Option-c/c++ Compiler Preprocessor-Defined symbols添加宏編譯定義:
HAL_UART=TRUE
xPOWER_SAVING
2._hal_uart_dma.c文件裏面對HalUARTInitDMA串口初始化函數,改爲Alt. 2方式。

#if (HAL_UART_DMA == 1)
 // PERCFG &= ~HAL_UART_PERCFG_BIT;    // Set UART0 I/O to Alt. 1 location on P0.
  PERCFG |= HAL_UART_PERCFG_BIT;     // Set UART1 I/O to Alt. 2 location on P1.
#endif

還要修改相關串口硬件引腳和寄存器:

#if    (HAL_UART_DMA == 1)
#define PxSEL                      P1SEL
#define HAL_UART_PERCFG_BIT        0x01         // USART0 on P0, Alt-1; so clear this bit.
#define HAL_UART_PRIPO             0x00         // USART0 priority over UART1.
#define HAL_UART_Px_CTS            0x04//0x10         // Peripheral I/O Select for CTS flow control.
#define HAL_UART_Px_RTS            0x08//0x20         // Peripheral I/O Select for RTS must be manual.
#define HAL_UART_Px_SEL            0x30//0x0C         // Peripheral I/O Select for Rx/Tx.

3.在NPI_InitTransport初始化函數裏面確認波特率和關掉流控:

#if !defined( NPI_UART_FC )
#define NPI_UART_FC                   FALSE
#endif

4.在初始化函數中添加串口回調函數;

 NPI_InitTransport(NpiSerialCallback);
 //NPI_WriteTransport("123\n",4);

這樣就實現了uart0 alt2方式傳輸數據,不過這樣修改了串口數據有時候有亂碼的現象存在,最後查證亂碼的情況是因爲DMA的傳輸速度快跟串口的不匹配,適當加個延時就可以了。

更多技術文章瀏覽請關注:

百家號:
https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh

頭條號:
https://www.toutiao.com/c/user/8115738721/#mid=1646025109246987

發佈了39 篇原創文章 · 獲贊 20 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章