STM32芯片内部集成了USB外设,大大减轻了USB电路的设计负担,只需设计USB接口电路,就可以实现基于STM32芯片的电路板的USB通信设计。(本文将具体讲述基于STM32F103RBT6芯片的USB设计)本文为硬件篇。
首先,我们来认识一下STM32F103RBT6芯片。 其中USB相关引脚为PA11(D-),PA12(D+)引脚。就是通过这两个引脚实现STM32F103RBT6的USB通讯。
图1 STM32F103RBT6芯片引脚图
其次,我们简单来认识一下USB的构造(以A型公口、B型母口为例)
图2 USB A型公口
图3 USB B型母口
表1 USB接口引脚说明
1 VCC(+5VDC)
2 D-(data-)
3 D+(data+)
4 GND(Ground)
(5.6引脚为外壳引脚、起固定和减低干扰作用)
最后,我们来看看USB接口电路的设计。
图4 USB接口电路
其中:
1.USB上拉电压接在D+线上,所以本设计USB实现全速通讯
1.USBLC6-2P6是一个ESD芯片,为了防止USB接口受到雷击时毁坏主芯片。
2.Q1为一个开关芯片,可以为mos管、或三极管。本人采用nmos管时,DS间有一个0.7V的压差,所以USB的上拉电压为2.5V左右,虽然也能用,但毕竟不完美。我不知道是不是所有Mos管都这样。下一步我将换成偏置电阻晶体管试试,效果将在后面的日志中描述。当开关开启时,PC开始枚举该USB设备。
3.USB的VCC引脚可以接板上电源、也可以不接。当不接时,PC机为USB接口供电,在本设计中使用了一个跳线来决定是否接板上电源。
总结:
基于STM32F103芯片的电路板实现USB功能的电路是很简单的,也可以在网上找到很多资源。希望本文能对正在设计相关电路的朋友有所帮助。
关键字:STM32 USB设计
引用地址:
STM32 USB设计--硬件篇
推荐阅读最新更新时间:2024-03-16 15:13
STM32开发笔记80: 在构造函数中调用延时函数应注意的问题
单片机型号:STM32L053R8T6 W5500驱动程序完成后,运行时,单片机死机。W5500驱动程序先前已经在项目中具体应用过,运行的比较稳定。这次移植后,没有做改动,但是单片机运行时死机。 此项目与先前项目的不同点在于,项目中有FreeRTOS操作系统运行,原先的项目没有,最后将问题聚焦于W5500的构造函数上,如下程序所示: CW5500::CW5500(void):CSpi() { //uint8_t memsize = {{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}}; //注册相关的函数 reg_wizchip_cris_cbfunc(w5500_cris_enter
[单片机]
STM32 GPIO的配置
1STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出) ① 浮空输入_IN_FLOATING ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP ⑦ 复用功能的推挽输出_AF_PP ⑧ 复用功能的开漏输出_AF_OD 1.1I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动
[单片机]
STM32 SRAM启动的 KeiL 配置
简介:BOOT 引脚改成从SRAM 启动,即 BOOT0=1,BOOT1=1 如果使用ST提供的库函数 3.5 打开(system_stm32f10x.c) #define VECT_TAB_SRAM 2.x 可以通过调用函数切换中断向量表的指向。 2.x 可以通过调用以下两个函数切换中断向量表的指向。 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00); NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); KEIL 的配置 (SYM32F103C8T6 (64kFlash/20kSram);
[单片机]
STM32 V3.5固件库下SysTick的使用
SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15)。在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的 滴答 中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统 心跳 的节律。 Cortex-M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的
[单片机]
STM32 休眠模式下如何喂狗?
在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起的故障,低功耗模式是为了在CPU不需要继续运行时进入到休眠模式用以节省电能。其中独立看门狗的时钟由独立的RC振荡器(STM32F10x一般为40kHz)提供,即使在主时钟出现故障时,也仍然有效,因此可以在停止和待机模式下工作。而且独立看门狗一旦启动,除了系统复位,它不能再被停止。但这样引发的一个问题是当MCU进入到低功耗模式后由于CPU停止运行无法喂狗,会导致系统频繁复位。那如何解决这个问题呢,难道独立看门狗和低功耗模式没法同时使用? 一个很好的方式是在休眠模式下通过RTC定时唤醒来喂狗,喂完够在进入继续进入到休眠模式。比如看门狗复
[单片机]
STM32的看门狗配置详情解说
stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。独立看门狗有自己独立的40Khz时钟,不存在使能问题;而窗口看门狗使用的是PCLK1时钟,需要先使能时钟。以下是关于看门狗的具体说明: ①独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。 ②窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。 显而易见的是,独立看门狗比较简单,容易理解。这里,主要对窗口看门狗的详细含义作具体说明。 窗口看门狗介绍: 看门狗的上窗口就是配置寄存器WW
[单片机]
ucOS学习笔记(5)——一步一步移植ucOS到STM32
这两天看了下keil的编译连接相关文档得到以下一些信息: 1.关于AREA--AREA是arm汇编中的段标志,它代表一个段的开始。所谓段是指一个独立的,被命名的,不可分割一组代码或者数据,一个单独的代码段是一个应用功能的最小单元。原文如下 sections are independent, named, indivisible seqnces of code or data. A single code section is the minimum required to prod? an application 。 2.关于ENTRY--ENDTRY英文原意是入口的意思,在汇编语言中它代表了一个代码段中被执行的第一条指令的位置。如
[单片机]
stm32定时器优先级
什么是优先级 优先级是具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。 stm32定时器优先级 STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备。每个中断通道都具备自己
[单片机]