OTG -- STM32 OTG驱动代码下载及简述(三)

news2024/11/16 15:47:28

目录

前沿

1 STM32 OTG标准库的获取

2 设备模式代码匹配开发板

2.1 OTG FS全速代码修改

2.2 OTG HS代码修改

2.2.1 OTG HS外部高速PHY运行在高速模式代码修改

2.2.2 OTG HS外部高速PHY运行在全速模式代码修改

2.2.3 OTG HS内部全速PHY运行在全速模式代码修改


前沿

前面对STM32F407 OTG模块及ULPI接口进行了简单的讲解,现在针对ST提供的标准库进行简单讲解,主要针对标准库的获取和标准库的使用进行讲解,更多USB相关信息请查看:USB专栏

1 STM32 OTG标准库的获取

通过ST官网,ST OTG代码下载链接,获取OTG代码,按照要求填写邮箱即可下载。

下载之后,解压,打开《Project》目录,有以下的例程,分为设备模式例程、主机模式例程和主机/设备模式模式例程。

2 设备模式代码匹配开发板

我们这里只讲解设备模式下CDC类的代码,其它代码类似,想要了解更多关于USB相关的信息,建议读者查看博主的USB专栏。

2.1 OTG FS全速代码修改

1. 首先使用keil打开《VCP_Loopback》工程,因为我们是STM32F407的开发板,所以选择配置如下,选择《STM324xG-EVAL_USBD-FS》子工程(这里我们先选择全速设备,全速设备也就是OTG FS模块,使用PA11和PA12作为USB的通信引脚,不需要外接PHY):

2. 修改系统时钟源,打开《system_stm32f4xx.c》文件,修改《PLL_M》宏定义,改为8,再打开《stm32f4xx.h》文件,修改《HSE_VALUE》宏定义,改为8000000(因为博主使用的是8M的HSE)。

3. 下载程序,如果板子ok,需要保证PA9引脚有5V或3.3V电压,那么能够在设备管理器查看到COM设备。

2.2 OTG HS代码修改

OTG HS模块分为两种模式:

  • 内部全速PHY模式
  • 外部高速PHY模式

外部高速PHY又分为两种模式(外部高速PHY支持高速模式):

  • 外部高速PHY运行在全速模式
  • 外部高速PHY运行在高速模式

具体细节可以查看博主的前两篇文章,对这些接口有一个简单的讲解,也足够初学者进行学习了。

2.2.1 OTG HS外部高速PHY运行在高速模式代码修改

1. 选择《STM324xG-EVAL_USBD-HS》子工程,如下:

2. 按照OTG FS模式修改系统时钟源。

3. 下载程序,如果板子ok,需要通过ULPI接口外挂USB3318或者USB3300芯片,那么能够在设备管理器查看到COM设备,此设备是一个高速设备。

2.2.2 OTG HS外部高速PHY运行在全速模式代码修改

在《2.2.1 OTG HS外部高速PHY运行在高速模式代码修改》章节的基础上,只需要修改一个地方,就能实现外部高速PHY运行在全速模式,修改如下:

2.2.3 OTG HS内部全速PHY运行在全速模式代码修改

 1. 选择《STM324xG-EVAL_USBD-HS》子工程,如下:

2. 按照OTG FS模式修改系统时钟源。

3. 把宏定义《USE_ULPI_PHY》改为《USE_EMBEDDED_PHY》,如下图所示:

4. 编译运行,此时不需要外接PHY,只是此时USB的信号引脚为PB14和PB15,并且PB13需要3.3V或者5V供电,那么能够在设备管理器查看到COM设备,此设备是一个全速设备。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1430354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 组建和卸载raid1、raid0详细操作

组raid的最好是相同容量和型号的硬盘,否则会有木桶效应 linux下组raid有很多细节 一、安装raid软件 deb包 apt-get install mdadm或dnf包 dnf install mdadm二、组raid1-镜像,组raid0-并列 raid1和raid0只有在madam命令时一点点不同,其他…

python 下载腾讯在线文档

import requests""" 1. 手动到chrome获取下载请求 2. 获取excel的动态id 3. 拼出excel的下载链接 4. 下载 """class Excel:def __init__(self):self.cookie_string ""self.headers {"authority": "docs.qq.com"…

中缀转后缀

概念 什么是后缀表达式? 后缀表达式,其实就是一个中缀表达式 AOB > ABO (A、B是式子、O 为运算符),将运算符向后放 中转后举例 中缀表达式:(a b)* c - (d / c) 首先&#xff…

CANoe学习笔记—关于cfg工程界面的分类

创建一个工程过程中,如何规划好界面设置,对于后续使用和维护起到了非常好的作用。故整理下 1:首先规划好大致结构图 CANoe中工程的规划Trace界面ConfigurationBuildInToolControlDiagnosticPanel预留 当然:此格式不是固定的&…

高级FPGA开发之基础协议PCIe

基础协议之PCIe部分 一、TLP包的包头 在PCIe的系统中,tlp包的包头的结构有许多部分是相似的,通过掌握这些常规的包头,能帮助理解在PCIe总线上各个设备之间如何进行数据的收发。 通用的字段 通用字段作用Fmt决定了包头是3DW还是3DW&#xff…

20240203在WIN10下配置stable-diffusion-webui.git

20240203在WIN10下配置stable-diffusion-webui.git 2024/2/3 11:55 【结论:在WIN10下,生成512x512分辨率的图像,大概需要9秒钟!】 【结论:在Ubuntu20.04.6下,生成512x512分辨率的图像,大概需要1…

Unity 图片不改变比例适配屏幕

Unity 图片不改变比例适配屏幕 前言项目场景布置代码编写添加并设置脚本效果 前言 遇到一个要让图片适应相机大小,填满屏幕,但不改变图片比例的需求,记录一下。 项目 场景布置 代码编写 创建AdaptiveImageBackground脚本 using System.C…

Unity项目从built-in升级到URP(包含早期版本和2023版本)

unity不同版本的升级URP的方式不一样,但是大体流程是相似的 首先是加载URP包 Windows -> package manager,在unity registry中找到Universal RP 2023版本: 更早的版本: 创建URP资源和渲染器​​ 有些版本在加载时会自动创建&#…

【全网独创】2024美赛E题33页成品论文+1-4问完整代码数据助攻

E题社区抗灾能力综合评估与决策模型研究 摘要:社区抗灾能力的提升对于灾害风险管理至关重要。本研究基于机器学 习方法,构建了社区抗灾能力预测模型,以评估社区在灾害事件中的表现。首先, 我们采用梯度提升树模型对社区基础设施、…

Node.js 模块化

一、介绍 1.1 什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他 模块使用 1…

【Java程序设计】【C00240】基于Springboot的班级综合测评管理系统(有论文)

基于Springboot的班级综合测评管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的班级综合测评管理系统 本系统分为学生功能模块、管理员功能模块以及教师功能模块。 管理员功能模块:管理员功能…

windows下安装go

下载golang Go 官网下载地址: https://golang.org/dl/ Go 官方镜像站(推荐): https://golang.google.cn/dl/ 选择安装包 验证有没有安装成功 查看 go 环境 说明 : Go1.11 版本之后无需手动配置环境变量&#xff0c…

Vue 环境准备

1.安装vscode https://code.visualstudio.com/ 2.安装开发vue所需插件: Vetur —— 语法高亮、智能感知、Emmet等 包含格式化功能, AltShiftF (格式化全文),CtrlK CtrlF(格式化选中 代码,两…

【Matplotlib】figure方法之图形的保存

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:matplotlib 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

前端学习笔记 | 响应式网页+Boostrap

一、响应式网页 一套代码适应多端 1、媒体查询media(条件){css} max-width 小于等于max-width生效min-width 【案例】左侧隐藏 因为CSS的层叠性,书写顺序:max-width从大到小;min-width从小到大。 【媒体查询完整写法】 在html中link用于不同…

SpringBoot实战项目第一天

环境搭建 后端部分需要准备: sql数据库 创建SpringBoot工程,引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构,并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…

大规模机器学习简介

1. 非线性回归问题 1.1 问题描述 我们有一组实验数据,每个实验都给出了输入和输出对 (Xn, Yn)。每个输入 是空间中的一个点,每个输出 是 空间中的一个点。这些数据点被假设为独立同分布(i.i.d)。 我们的目标是找到一个函数 fw&…

Power Designer的使用 创建数据库表模型

几年前用过PowerDesigner,好几年没用,有点忘记了,在这里记个笔记,需要的时候翻一翻 PowerDesigner版本16.5 下面的例子是以MySQL数据库为准 生成C#实体类 一 安装 1.1 安装 不让放网盘链接,审核通不过。。。。 …

前端学习之路(5) vue样式穿透

前言 vue的style中设置scoped属性后,组件实现样式私有化。 但是该组件又使用的其他组件库时(vant,elementui,自定义等),该组件的style中的样式,优先级低,不生效,这个时候需要使用样式穿透(作用得更深)。 一、scoped底…

深度学习技巧应用35-L1正则化和L2正则在神经网络模型训练中的应用

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用35-L1 正则化和L2正则在神经网络模型训练中的应用。L1正则化和L2正则化是机器学习中常用的两种正则化方法,用于防止模型过拟合并提高模型的泛化能力。这两种正则化方法通过在损失函数中添加惩罚项来控制模型的复杂性。…