CC2540串口唤醒的问题
时间:10-02
整理:3721RD
点击:
#if (HAL_UART_ISR == 1) HAL_ISR_FUNCTION(port0Isr, P0INT_VECTOR) #else HAL_ISR_FUNCTION(port1Isr, P1INT_VECTOR) #endif { HAL_ENTER_ISR(); HalUARTResume(); if (dmaCfg.uartCB != NULL) { dmaCfg.uartCB(HAL_UART_DMA-1, HAL_UART_RX_WAKEUP); } PxIFG = 0; PxIF = 0; HAL_EXIT_ISR(); } #endif
这段代码,是GPIO中断唤醒后切换成串口的操作。我想问的是,唤醒需要单独的一个脉冲吗?还是说直接发送一个串口字节,就能够根据起始位什么的边沿唤醒,切换成串口后还能接收到正确的数据?也就是说对数据发送端有没有什么要求。另外,虽然这里要求定义HAL_UART_ISR == 1,为什么还是用DMA完成的串口接收。
串口唤醒一般有两种方式
1)根据UART RX电平来触发中断
在休眠时,设置RX脉冲中断(上升沿或者下降沿),然后主机MCU发送串口数据时,RX管脚跳变会唤醒BLE芯片
为了适配BLE唤醒时间,一般先发送一串前导码,确定唤醒BLE后,再发送真正的数据
2)另外使用一个管脚,比如CSR流控脚
这个就是简单的外部中断,没什么可说的
具体使用哪种方式,看你UART是否启用了流控