
USB
巨大八爪鱼
喜欢Win32和STM32编程
展开
-
【方法】20脚的STM32F042F6单片机只有32KB的Flash和6KB的SRAM,移植HAL库里面的USB大容量存储设备(MSC)时,如何读写页大小为4KB的W25Q128存储器?
STM32F042F6单片机的USB自带了内部的1.5kΩ上拉电阻,所以电路上只需要接两个22Ω的电阻就可以。程序运行时使能内部的上拉电阻,主机就能检测到USB设备。/* Private variables ---------------------------------------------------------*/// 本配置文件的主要任务是建立hpcd, 将hpcd->pData和main.c中的husbd关联// 并将usbd_core.c里面用到的USBD_LL_xxx函数与原创 2020-06-20 18:53:31 · 1923 阅读 · 0 评论 -
【USB】STM32F107VC单片机上完全用寄存器实现的USB OTG Device模式的大容量存储设备
本程序是从STM32F103C8的从USB上移植过来的:https://blog.youkuaiyun.com/ZLK1214/article/details/78972484本程序的目的是为了演示STM32 USB OTG寄存器的使用方法以及SCSI命令的处理流程,程序只实现了基本的磁盘读写功能。该USB设备使用了3个端点:ENDP0(Control型端点),EP1_IN和EP1_OUT(Bulk型端点)。由于时间关系, 下面的无关紧要的功能还没做:SCSI_REQUEST_SENSE命令只实现了返回"磁盘原创 2020-06-07 23:52:27 · 2237 阅读 · 0 评论 -
【解决方案】STM32单片机实现USB DFU IAP在线烧写程序的功能,但JumpToApplication跳转到用户程序时出现HardFault错误的解决办法
跳转代码如下:/* DFU工具下载的子程序虽然起始地址不是0x08000000 (由项目属性Target选项卡中的IROM1配置) 但是也可以在Keil中直接下载程序, 而且还能使用ST-Link进行程序调试 只要在DFU主程序中禁用CRC校验就行 请确保system_stm32xxxx.c中设置的SCB->VTOR刚好等于程序的起始地址*/#define CRCEN 1 // 若想要直接在Keil中下载并用ST-Link调试子程序, 则需要在主程序中禁用CRC校验#def原创 2020-06-03 00:00:57 · 2213 阅读 · 0 评论 -
【解决方案】STM32F103C8单片机运行CubeMX生成的CDC虚拟串口的程序,设备能枚举成功但不能启动的解决办法
这是因为USB的描述符出了问题。Win10系统下不需要装任何驱动就能使用USB虚拟串口,但更低版本的系统比如Win7则必须要安装ST官方提供的VCP驱动:STM32 Virtual COM Port Driver(STSW-STM32102)。在Windows 7下,usbd_desc.c中的设备描述符USBD_DeviceDesc的bDeviceClass和bDeviceSubClass可以为0,但USBD_VID必须为0x0483,USBD_PID必须为0x5740,否则无法匹配上安装的VCP驱原创 2020-05-28 22:45:38 · 2979 阅读 · 0 评论 -
【解决方案】STM32F107VC单片机下运行STM32CubeMX生成的USB_OTG Mass Storage工程,无法识别USB设备的解决办法
这是因为:CubeMX生成的代码里面,没有响应OTG_FS_IRQn中断。USB设备模式的电路如下。该电路适合所有的STM32型号。红框部分为上拉电阻,STM32F1(如STM32F103和STM32F107)才需要这部分电路,而STM32F4就可以不要。这是因为STM32F4的USB_OTG_GCCFG寄存器里面有NOVBUSSENS这一位,可以打开内部的上拉电阻,而STM32F1却没有。当PE1(可以选择其他I/O口)为低电平时使能上拉电阻,主机认为USB设备已插入。当PE1为高电平时,主机认为原创 2020-05-28 00:11:58 · 4782 阅读 · 0 评论