【STM32】STM32F103系列USB大坑 二

在使用USB的时候发现单独只初始化USB是可以识别到但是开启某些功能之后就不正常了

💡 冲突的核心原因

STM32F103系列中,USB和CAN模块共享了以下关键资源,导致它们无法同时使用:

1.​专用的512字节SRAM缓冲区​:

USB和CAN模块共用一块512字节的专用SRAM​ 作为数据收发缓冲区。这块内存被两个模块互斥访问,无法同时为两者服务。当CAN和USB同时尝试访问时,会导致数据混乱或通信失败。

2.​中断源和FIFO冲突​:

USB和CAN的中断源和FIFO(先入先出队列)在芯片内部是共用的,这进一步加剧了功能上的冲突。

3.​引脚冲突 (PA11 & PA12)​​:

USB和CAN1默认使用了相同的GPIO引脚。

•​USB​ 必须使用 ​PA11 (D-)​​ 和 ​PA12 (D+)​。

•​CAN1​ 的默认引脚也是 ​PA11 (RX)​​ 和 ​PA12 (TX)​。

因此,如果你在设计电路时没有注意,直接将CAN设备接在PA11和PA12上,同时又使用了USB,那么从物理层面上这两个外设就已经短路了,必然无法工作。

外设功能必需引脚

USB D- ​PA11​

USB D+ ​PA12​

CAN1RX​PA11​ (默认)

CAN1TX​PA12​ (默认)

💡 解决方案与替代方案

虽然STM32F103C8T6上无法完美同时使用USB和CAN,但你可以根据项目需求考虑以下方案:

1.​使用替代型号(推荐)​​

选择在设计上就解决了此冲突的芯片,这是最根本的解决方案:

•​STM32F105/107系列​:这些是STM32F1系列中的"互联型"产品,内部结构经过重新设计,USB和CAN是独立的模块,可以同时使用。

•​极海半导体 APM32E103​:一款与STM32F103高度兼容的国产芯片,​通过增加一个USBD切换寄存器,实现了USB和CAN的共存​。如果你的项目必须基于这个芯片架构,这是一个非常好的选择。

2.​分时复用​

如果您的应用对实时性要求不高,可以在软件上实现分时复用。即同一时间内只开启一个功能(如CAN),完成后关闭它,再开启另一个功能(如USB)。但这需要复杂的软件调度,并且无法实现真正的实时通信,仅适用于特定场景。

3.​引脚重映射(仅解决引脚冲突)​​

这个方案只能解决上述的第三个原因(引脚冲突)​,但无法解决最根本的SRAM缓冲区冲突。

你可以将CAN1的引脚重映射到其他GPIO上(如PB8, PB9),以避免与USB的物理引脚短路。

c 复制代码
// 示例代码:重映射CAN1引脚到PB8, PB9
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);

​请注意​:即使重映射了引脚,​USB和CAN仍然共享512字节的SRAM,因此同时使用时通信仍会失败。此方法仅适用于不同时使用的情况。

4.​使用外部控制器​

这是一种较为复杂的方案,即使用另一块MCU或专用的USB转CAN桥接芯片来处理其中一种通信,然后通过UART/SPI等协议与主STM32芯片交换数据。这会增加成本和设计复杂度。

相关推荐
@晓凡7 小时前
keil5找不到下载器
stm32
Devlab8 小时前
LVGL设计大师——网页版anyui来了!!
嵌入式硬件·物联网·低代码·ui·iot
Dr.kangder11 小时前
嵌入式面试总结(十五)——异常处理
单片机·面试·职场和发展·系统架构·嵌入式
zlinear数据采集卡13 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛1392462567313 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
Rocktech_ruixun15 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
振南的单片机世界15 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件
Lzh编程小栈16 小时前
【嵌入式底层】SPI超透彻详解:通信原理、四线结构、四种模式、寄存器底层 + 面试全集
c语言·stm32·单片机·面试·职场和发展
Rocktech_ruixun16 小时前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
水果里面有苹果16 小时前
28-DRV8825PWPR步进电机驱动器
单片机