微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540串口唤醒的问题

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是否启用了流控

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top