4.5 SOF检测和唤醒配置 USART帧开始检测可以在检测到开始比特时从待机休眠状态唤醒CPU。在待机休眠模式,内部快速启动晶振必须选为GCLK_SERCOMx_CORE作为时钟源。 在应用程序进入到待机休眠模式后,PC终端按一个字符将从休眠中唤醒设备并且在终端上显示字符。 这个应用只使用一个SAM D21 Xplained Pro 通过EDBG连接到PC终端。这里只有SERCOM3被使用。
下列配置是从基本配置应用程序修改的: /* 8-bit, Even parity one stop bit 8 bits, Transmitter, receiver enabled Start of frame detection enabled */ SERCOM3->USART.CTRLB.reg = SERCOM_USART_CTRLB_CHSIZE(0x0) | SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_RXEN | SERCOM_USART_CTRLB_SFDE; 。通过设置SFDE比特-帧开始检测使能,一但检测到RxD线上的开始位设备将从休眠唤醒。 下面的表是SFDE的唤醒设置: 。system_set_sleepmode(SYSTEM_SLEEPMODE_STANDBY)函数将设置设备休眠模式为待机休眠模式 。STANDBY休眠模式允许非常代的电源功耗 。在待机休眠模式所有的时钟将停止除了那些保持运行的,如果需要运行模式通过ONDMAND比特设置 。如果在Conf_clocks.h文件中CONF_CLOCK_OSC8M_ON_DEMAND位被设置为true,然后需要的时钟将提供。到达支持时钟它将花费时钟的启动延时。 。在SOF检测应用中,CONF_CLOCK_OSC8M_ON_DEMAND位将被设置为false用来避免从休眠模式中唤醒设备时丢失了第一个字符。 。这个应用使能RXC和RXS中断 。当开始状态被在RxD线上检测到RXS标志置1并且帧开始检测被使能 。这个应用只使用了SERCOM3来处理-EDBG USART 布尔类型的变量rx_started 用来标识中断。初始值被设为false。
|