需求:
STM32F103C8T6单片机在进入待机模式后可同时使用PA0按键唤醒,闹钟定时中断唤醒,低功耗蓝牙发送数据唤醒,且PA0在正常工作模式下依旧可以作为按键使用。
思考实现步骤:
这三个功能分开实现倒是没有什么问题,但要让其在一个产品上同时实现则需要有一定的硬件支持才行。以下是针对这个问题解决的一些拙见。
首先,我们需要了解的是,要想PA0引脚和闹钟定时中断都能唤醒单片机那么就需要将单片机PA0引脚引出的线接一个下拉电阻,之后接上按键和3.3V,因为单片机的PA0引脚唤醒需要一个上升沿,当然这样的话PA0平时作为按键输入的话,就需要是上升沿检测按键输入了。电路大致如下:
KeyConfirm接到单片机PA0引脚上。
其次,我们需要了解低功耗蓝牙(CC2640R2FRSM)的使用方法以及各个引脚的功能说明,其中CTS引脚为数据发送信号输出引脚,就是当蓝牙有数据发送该引脚就输出0,没数据发送就是输出1。如果想用蓝牙发送数据来唤醒单片机,就需要利用CTS引脚输出的信号来模拟PA0按下实现一个上升沿。但是只有单片机待机后蓝牙才能通过CTS唤醒,如果在设备正常运转时蓝牙发送数据相当于按键按下的话就会造成按键输出错误值的问题,综上所述,我们的需求是:在单片机待机时能通过蓝牙CTS引脚唤醒,当单片机工作在正常环境下时,单片机无法通过CTS引脚唤醒,只能当作平常的按键使用。
根据需求硬件电路设置思路大致为:
使用蓝牙CTS引脚与非门链接,当蓝牙CTS有数据发送时为0通过非门输入,输出为1(3.3V),与P-MOS集电极相连接,栅级接一个或门,或门一个输入单片机引脚信号,另一个输入GND,当单片机处于待机模式时,switch引脚被下拉电阻拉低,MOS的栅级为低电平。蓝牙有数据发送,CTS引脚输出0,MOS的源级为高电平, U(S)>U (G),MOS导通,PA0检测到上升沿,单片机唤醒。单片机醒后,将switch引脚拉高,U(S)=U(G),MOS截至。之后单片机能够正常使用PA0的按键功能了。
以上是电路分享,谢谢观看。