目前共有3篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
371 2
STM32 USB传输数据所使用的寄存器
一派掌門 二十級
1樓 發表于:2024-4-29 19:55

STM32F103里面的从USB,收发数据靠的是读写512字节的PMA(Packet Memory Area),其地址为0x40006000~0x400063fd。第0个字节是0x40006000,第1个字节是0x40006001;第2个字节是0x40006004,第3个字节是0x40006005;第4个字节是0x40006008,第5个字节是0x40006009……以此类推,直到第511个字节0x400063fd。

 

而STM32F107里面的USB OTG,收发数据靠的是1.25KB的DFIFO。定义:

#define USB_OTG_FS_PERIPH_BASE               0x50000000UL
#define USB_OTG_FIFO_BASE                    0x00001000UL
#define USB_OTG_FS_DFIFO ((USB_OTG_DFIFOTypeDef *)(USB_OTG_FS_PERIPH_BASE + USB_OTG_FIFO_BASE))
 
typedef struct
{
  uint32_t DFIFO;
  uint32_t RESERVED[1023];
} USB_OTG_DFIFOTypeDef;

则接收数据始终是读取USB_OTG_FS_DFIFO->DFIFO寄存器(相当于USB_OTG_FS_DFIFO[0].DFIFO),而发送数据是写USB_OTG_FS_DFIFO[端点号].DFIFO寄存器。

一派掌門 二十級
2樓 發表于:2024-4-29 19:56

STM32F107VC单片机下运行STM32CubeMX生成的USB_OTG Mass Storage工程,无法识别USB设备的解决办法:https://blog.csdn.net/ZLK1214/article/details/106393457

 
一派掌門 二十級
3樓 發表于:2024-4-29 19:58
STM32 USB_OTG里面的DFIFO寄存器的分布确实很复杂。
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:371 回複數:2
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2024-4-29 19:58
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。