ST意法半导体
登录
直播中
tr4578
8年用户
922经验值
擅长:模拟技术
私信
关注
[问答]
有没有人让USB在STM32L552上作为VCP运行?
开启该帖子的消息推送
VCP
有没有人让 USB 在
STM32
L552 上作为 VCP 运行?
我们在通过 VCP 将 USB 连接到 PC 的情况下运行系统时遇到问题。我们使用 MXCube 5.6.1 版并使用 USB VCP 创建了一个小项目。VDD-USB Pin接3.3V,系统启动,但PC端检测不到USB。
我们之前将 USB 作为 VCP 在其他几个处理器(STM32F4、STM32F7、STM32H7)上工作,没有任何问题。但是在 L552 上肯定有一些不同的东西在使用相同的固件处理和硬件布局时不起作用。
回帖
(1)
江璐
2022-12-28 16:27:37
我们为任何感兴趣的人提供了一个可行的解决方案:
硬件条件是:
VDDUSB 引脚连接到 3.3V 电源(固定电源)
USB-Mode is FS Device only,没有OTG,没有USB-C
在 CubeMX 配置中执行以下操作:
在 NVIC 配置中为 PVD/PVM1/...激活中断
在项目管理器的高级设置页面上,为 MX_USB_Device_Init 激活“不生成函数调用”
在 USB 设置中选择“不支持链接电源管理”
1) 上电时,在 GPIOS 等初始化完成后,调用以下例程“DoInitUSB”,它为 PVM1(用于 USB)配置 PVM(外设电压监控)中断,如下所示:
无效 DoInitUSB(无效)
{
static int bInit = TRUE;
PWR_PVMTypeDef sConfigPVM;
sConfigPVM.PVMType = PWR_PVM_1;
sConfigPVM.Mode = PVM_MODE_IT | PVM_RISING_EDGE | PVM_FALLING_EDGE;// 创建电源检测中断
HAL_PWREx_ConfigPVM(&sConfigPVM);
//激活周边电压监测
HAL_PWREx_EnablePVM1();
// 激活 USB 电源
HAL_PWREx_EnableVddUSB();
// 等待 2 毫秒
平行延迟(PARA_DELAY_1MS);
平行延迟(PARA_DELAY_1MS);
//检查USB插头是否连接:
if (READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == 0) // 电源高于 1.2 伏
{
HAL_PWREx_EnableVddUSB();
如果(bInit)
{
MX_USB_Device_Init();
b初始化=假;// 上电后只做一次
}
bPowerIsOn = TRUE;
}
别的
{
HAL_PWREx_DisableVddUSB();
bPowerIsOn = 假;
}
}
2) 包括以下回调 fpr PVM 中断:
无效 HAL_PWREx_PVM1Callback()
{
if (READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == 0) // 电源高于 1.2 伏
{
HAL_PWREx_EnableVddUSB();
如果(bInit)
{
MX_USB_Device_Init();
b初始化=假;
}
bPowerIsOn = TRUE;
}
else // 电源低于 1.2 伏
{
HAL_PWREx_DisableVddUSB();
bPowerIsOn = 假;
}
}
我希望这个设置可以帮助其他人!
我们为任何感兴趣的人提供了一个可行的解决方案:
硬件条件是:
VDDUSB 引脚连接到 3.3V 电源(固定电源)
USB-Mode is FS Device only,没有OTG,没有USB-C
在 CubeMX 配置中执行以下操作:
在 NVIC 配置中为 PVD/PVM1/...激活中断
在项目管理器的高级设置页面上,为 MX_USB_Device_Init 激活“不生成函数调用”
在 USB 设置中选择“不支持链接电源管理”
1) 上电时,在 GPIOS 等初始化完成后,调用以下例程“DoInitUSB”,它为 PVM1(用于 USB)配置 PVM(外设电压监控)中断,如下所示:
无效 DoInitUSB(无效)
{
static int bInit = TRUE;
PWR_PVMTypeDef sConfigPVM;
sConfigPVM.PVMType = PWR_PVM_1;
sConfigPVM.Mode = PVM_MODE_IT | PVM_RISING_EDGE | PVM_FALLING_EDGE;// 创建电源检测中断
HAL_PWREx_ConfigPVM(&sConfigPVM);
//激活周边电压监测
HAL_PWREx_EnablePVM1();
// 激活 USB 电源
HAL_PWREx_EnableVddUSB();
// 等待 2 毫秒
平行延迟(PARA_DELAY_1MS);
平行延迟(PARA_DELAY_1MS);
//检查USB插头是否连接:
if (READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == 0) // 电源高于 1.2 伏
{
HAL_PWREx_EnableVddUSB();
如果(bInit)
{
MX_USB_Device_Init();
b初始化=假;// 上电后只做一次
}
bPowerIsOn = TRUE;
}
别的
{
HAL_PWREx_DisableVddUSB();
bPowerIsOn = 假;
}
}
2) 包括以下回调 fpr PVM 中断:
无效 HAL_PWREx_PVM1Callback()
{
if (READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == 0) // 电源高于 1.2 伏
{
HAL_PWREx_EnableVddUSB();
如果(bInit)
{
MX_USB_Device_Init();
b初始化=假;
}
bPowerIsOn = TRUE;
}
else // 电源低于 1.2 伏
{
HAL_PWREx_DisableVddUSB();
bPowerIsOn = 假;
}
}
我希望这个设置可以帮助其他人!
举报
更多回帖
rotate(-90deg);
回复
相关问答
VCP
关于
STM32L552
的功耗问题
2023-08-07
170
STM32L552
如何交换闪存组?
2022-12-01
191
请问
STM32L552
CE的
USB
_FS接口电源要求是什么?
2023-02-03
207
如何
让
STM32L
0358-disco板的
USB
CDC正常工作呢?
2023-01-04
140
有没有人
举例说明如何检查代码是否
在
ESP-01
上
运行
?
2023-05-16
216
有没有人
在ESP8266
上
运行
C++?
2023-06-09
151
在
STM32L
431
上
使用TSC的简单3按钮触摸键会出错
有没有人
经历过这种情况
2022-12-06
195
有没有人
用
USB
PIC打印任何东西
2020-05-13
1125
有没有人
在
STM32
F413上得到一个SD卡的工作示例呢?
2023-01-04
201
有没有人
试过
让
STM8
L
在
5V下稳定
运行
?
2018-10-31
2403
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分