藍牙 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