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

目录

前沿

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.mzph.cn/news/672519.shtml

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

相关文章

跳过mysql密码并重置密码 shell脚本

脚本 目前只是验证了5.7 版本是可以的,8.多的还需要验证 以下是一个简单的Shell脚本,用于跳过MySQL密码设置并重置密码: #!/bin/bash yum install psmisc -y# 停止MySQL服务 sudo service mysqld stop# 跳过密码验证 sudo mysqld --skip-g…

每日一题来啦!请查收~(至少是其他数字两倍,两个数组的交集)

今天要写的题目有哪些呢&#xff1f; 747. 至少是其他数字两倍的最大数 - 力扣&#xff08;LeetCode&#xff09; int dominantIndex(int* nums, int numsSize) {int max0;maxnums[0];int index0;for(int i1;i<numsSize;i){if(nums[i]>max){maxnums[i];indexi;i;//找出最…

C程序训练:二分查找法的应用之2

本文来自&#xff1a;C程序训练&#xff1a;二分查找法的应用之2 在《C程序训练&#xff1a;二分查找法的应用》一文中介绍了利用二分查找计算某个区间中数的个数&#xff0c;本文介绍利用二分查找法计算数列中出现单个数字的位置。题目描述如下。 题目描述&#xff1a;一维整…

51单片机基础:定时器

1.定时器介绍 51单片机通常有两个定时器&#xff1a;定时器 0/1&#xff0c;好一点的可能有定时器3。 在介绍定时器之前我们先科普下几个知识&#xff1a; 1&#xff0c;CPU 时序的有关知识 ①振荡周期&#xff1a;为单片机提供定时信号的振荡源的周期&#xff08;晶振周期或…

VSCode无法启动:Waiting for server log...

问题基本情况 [13:30:20.720] > code 1.86.0 (commit 05047486b6df5eb8d44b2ecd70ea3bdf775fd937) [13:30:20.724] > Running ssh connection command... /var/fpwork/reiss/vscdata/server/cplane/.vscode-server/code-05047486b6df5eb8d44b2ecd70ea3bdf775fd937 comman…

Linux系统调试课:Linux错误码介绍

文章目录 一、错误码二、错误码返回案例三、使用 goto 语句沉淀、分享、成长,让自己和他人都能有所收获!😄 📢错误代码由内核或用户空间应用程序(通过errno变量)解释。错误处理在软件开发中非常重要,而不仅仅是在内核开发中。幸运的是,内核提供的几种错误,几乎涵盖了可…

6.1810: Operating System Engineering 2023 <Lab9: mmap>

一、本节任务 二、Lab: mmap (hard) 2.1 mmap 介绍 mmap(2) 系统调用能将文件或者设备映射到内存中&#xff0c;返回映射区域的起始地址。 #include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset); int munmap(void …

【Mysql】整理

Mysql整理与总结 整理Mysql的基本内容供回顾。 参考&#xff1a; [1]. 掘金.MySQL三大日志(binlog,redolog,undolog)详解 [2]. Javaguide.MySQL三大日志(binlog、redo log和undo log)详解

c语言贪食蛇游戏

演示视频 目录 一.概述 二.游戏开始前 修改控制台程序标题和大小 Win32 API GetStdHandle函数 GetConsoleCursorInfo函数和SetConsoleCursorInfo函数 SetConsoleCursorPosition函数 游戏开篇界面处理 创建地图 蛇身节点以及食物节点初始化 蛇身的初始化 整体蛇节点…

【学习笔记】TypeScript学习笔记1 --TypeScript中的类型

文章目录 TS总的变量类型References TS总的变量类型 备注&#xff1a; 如果一个变量设置为了any 类型之后相当于变量关闭了TS的类型检测 let d: any; d 10; d hello;//unknown表示的是未知类型&#xff0c;实际是上一个安全的any,unknown类型的变量不能直接赋值给其他变量le…

【Linux】基于管道进行进程间通信

进程间通信 一、初识进程间通信1. 进程间通信概念2. 进程间通信分类 二、管道1. 管道概念2. 管道原理3. 匿名管道4. 匿名管道系统接口5. 管道的特性和情况6. 匿名管道的应用&#xff08;1&#xff09;命令行&#xff08;2&#xff09;进程池 7. 命名管道&#xff08;1&#xff…

Linux------命令行参数

目录 前言 一、main函数的参数 二、命令行控制实现计算器 三、实现touch指令 前言 当我们在命令行输入 ls -al &#xff0c;可以查看当前文件夹下所有文件的信息&#xff0c;还有其他的如rm&#xff0c;touch等指令&#xff0c;都可以帮我们完成相应的操作。 其实运行这些…

【语音合成】中文-多情感领域-16k-多发音人

模型介绍 语音合成-中文-多情感领域-16k-多发音人 框架描述 拼接法和参数法是两种Text-To-Speech(TTS)技术路线。近年来参数TTS系统获得了广泛的应用&#xff0c;故此处仅涉及参数法。 参数TTS系统可分为两大模块&#xff1a;前端和后端。 前端包含文本正则、分词、多音字预…

【C++】构造函数、初始化列表,析构函数,拷贝构造函数,运算符重载

注&#xff1a;本博客图片来源于学习笔记: 学习笔记https://gitee.com/box-he-he/learning-notes 完整思维导图请前往该博主码云下载。 目录 注&#xff1a;本博客图片来源于学习笔记: 学习笔记https://gitee.com/box-he-he/learning-notes 完整思维导图请前往该博主码云下载…

2024无参考图像的清晰度评价方法

无参考图像质量评价算法 无参考图像质量评价是指参考图像不存在的情况下&#xff0c;直接计算失真图像的视觉质量。根据无参考图像质量评价模型在计算图像视觉质量时是否需要图像的主观分数来进行训练&#xff0c;无参考图像质量评价算法可分为基于监督学习的无参考图像质量评价…

2024-02-06 TCP/UDP work

1. 画出TCP三次握手和四次挥手的示意图&#xff0c;并且总结TCP和UDP的区别 三次握手&#xff1a; 4次挥手&#xff1a; tcp/udp区别 TCP 1. 稳定&#xff0c;提供面向连接的&#xff0c;可靠的数据传输服务 2. 传输过程中&#xff0c;数据无误、数据无丢失、数据无失序、…

IDEA 配置以及一些技巧

1. IDEA设置 1.1 设置主题 1.2 设置字体和字体大小 1.3 编辑区的字体用ctrl鼠标滚轮可以控制大小 1.4 自动导包和优化多余的包 1.5 设置编码方式 1.6 配置 maven 1.7 设置方法形参参数提示 1.8 设置控制台的字体和大小 注意&#xff1a;设置控制台字体和大小后需要重启IDEA才会…

第1章 认识Flask

学习目标 了解Flask框架&#xff0c;能够说出Flask框架的发展史以及特点 熟悉隔离Python环境的创建方式&#xff0c;能够独立在计算机上创建隔离的Python环境 掌握Flask的安装方式&#xff0c;能够独立在计算机上安装Flask框架 掌握PyCharm配置隔离环境的方式&#xff0c;能…

【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;http://t.csdnimg.cn/eCa5z 目录 命名空间 命名空间的定义 命名空间的使用 命名空间的嵌套使用 C输入&输出 std命名空间的使用惯例&…

C语言第二十弹---指针(四)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1、字符指针变量 2、数组指针变量 2.1、数组指针变量是什么&#xff1f; 2.2、数组指针变量怎么初始化 3、⼆维数组传参的本质 4、函数指针变量 4.1…