1.USB Resume信号
USB设备进入挂起状态之后,将由Resume信号进行唤醒。Resume信号可以由USB主机发起,也可以由USB设备本身触发,但是只有USB主机可以结束Resume信号。
(1)主机在挂起设备后可通过翻转数据线上的极性并保持20ms来唤醒设备,并以低速EOP信号结尾。
(2)如果设备支持远程唤醒,设备可向主机发起远程唤醒请求,前提是设备已进入idle状态至少5ms,设备会驱动总线进入K状态,如下图,K状态必须维持1ms-15ms之内,此信号会在1ms内被主机接管,主机会继续驱动唤醒信号直到20ms,并以低速EOP信号结尾。
2.USB远程唤醒的方式
当主机控制器进入挂起后,所有设备是没办法向主机提交数据的,那主机是怎样知道设备的唤醒请求呢?答案是通过电信号。如下图(usb_20.pdf Page-333),设备需要生成一个1ms-15ms的K状态电信号(这里例子为10ms),hub会在1ms内捕获到该信号(此时设备其实就可以停止驱动K状态了),hub会进行和设备相同的操作把此信号传递给主机控制器,主机控制器对唤醒操作进行接管,主机会继续驱动唤醒信号直到20ms,并以低速EOP信号结尾,完成对设备的唤醒操作。如果是一个鼠标设备的话,休眠的系统有时会被恢复,其实这里大家可以看做是设备给主机系统发送一个IO中断信号,主机系统检测到后可以实现一系列的后续操作。
3.J状态和K状态
J状态 LS(低速) 差分0
FS(全速) 差分1
K状态 LS(低速) 差分1
FS(全速) 差分0
4.STM32 USB设备远程唤醒机制详解。
首先我们以我自己设计的STM32 USB鼠标例子来分析。
1.USB外设需支持远程唤醒操作。
USB外设必须支持远程唤醒功能,当然STM32F103 USB外设符合USB2.0全速设备的技术规范,所以支持远程唤醒的功能。
2.USB设备描述符设置远程唤醒。
USB设备配置描述符设备属性中必须Bit5必须为1(remote wake-up)。
STM32F103鼠标设备配置描述符源代码如下,从0数第7个字节0xE0(1110000b),标识设备是自供电且具有远程唤醒功能。
3.STM32 USB设备远程唤醒代码剖析。
实现的功能就是STM32按下一个按键后,STM32 USB设备发送一次远程。
1、STM32引脚输入电平的范围是ALVC, 输入小于0,输入大于2V算高电平,LV 、ALVT中 8V算低电平。
2、 5V CMOS、 HC、 AHC、 AC中, 输入大于3.5V算高电平 | | 输入小于1.5V算低电平;
3、 5V TTL 、ABT 、AHCT、 HCT、 ACT中 , 输入大于2V算高电平 | | 输入小于0.8V算低电平;
4、STM32的IO管脚有两种:TTL和CMOS,所有管脚都兼容TTL和CMOS电平。也就是说,从输入识别电压上看,所有管脚(不管是TTL管脚还是CMOS管脚)都可以识别TTL或CMOS电平。下面是摘自STM32数据手册的有关数据:
拓展资料
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform) 。按内核架构分为不同产品:
主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)
参考资料:百度百科-STM32。
不能。
Android系统需要百兆以上的处理器和数十兆的RAM空间。标准Linux需要处理器具有MMU(存储器管理单元)。STM32满足不了这两点要求,所以STM32上是无法跑Android的。
STM32是M系列,属于低成本设计,不带MMU控制器,不可能运行Linuxuc,μClinux不算Linux的。因此基于STM平台且满足实时控制要求操作系统,只有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和rt-thread。
扩展资料:
STM32L 系列产品基于超低功耗的 ARM Cortex-M4处理器内核,采用意法半导体独有的两大节能技术:130nm 专用低泄漏电流制造工艺和优化的节能架构,提供业界领先的节能性能。
该系列属于意法半导体阵容强大的 32 位 STM32 微控制器产品家族,该产品家族共有 200余款产品,全系列产品共用大部分引脚、软件和外设,优异的兼容性为开发人员带来最大的设计灵活性。
STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能,瞄准超低成本预算的应用。该系列微控制器缩短了采用 8 位和 16 位微控制器的设备与采用 32 位微控制器的设备之间的性能差距,能够在经济型用户终端产品上实现先进且复杂的功能。
参考资料来源:百度百科-stm32。
原则:STM32 的USB时钟不能超过48MHZ,因此如果时钟源为72MHZ,就需要进行1.5分频:RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);如果时钟源为48MHZ,则进行1分频即可:RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div1); STM32的时钟树如下:
stm32f10x_it.c是相关外设中断函数文件。
stm32f10x_rcc.c是处理内部时钟相关函数文件。
异同,都是库函数,为用户对方便调用!