ST意法半导体
直播中

邹俩珍

8年用户 1113经验值
私信 关注
[问答]

STM32F407的两个USB口能否分别实现读卡器和读U盘的功能以及硬件IIC读写AT24C02?

需求如下:
1.OTS_FS(PA 11,PA12)实现TF卡的读卡器功能,
2.OTS_HS(PB14,PB15)实现读写U盘功能
3.硬件IIC(PB8,PB9)读写AT24C02,硬件IIC是否有BUG?
以上是否有相关的库例程?
谢谢!

回帖(2)

谭丽

2025-3-11 15:01:06
两个模块是独立的,自然可以各做各的事情。


硬件I2C去读24c芯片,当然可以,库里都有现存的API函数可以调用。


查询方式、中断方式、DMA方式的都有。


RepositorySTM32Cube_FW_F4_V1.28.1ProjectsSTM32F4-DiscoveryExamplesI2C
举报

h1654155275.5741

2025-3-12 17:40:37

在STM32F407微控制器上,你可以实现你所描述的功能。以下是对你需求的详细分析和建议:


1. OTS_FS (PA11, PA12) 实现TF卡的读卡器功能



  • USB FS (Full Speed):STM32F407的USB FS接口可以通过PA11 (USB_DM) 和 PA12 (USB_DP) 来实现。你可以使用STM32的HAL库或者标准外设库来实现USB Mass Storage Class (MSC) 功能,从而将TF卡模拟为一个USB存储设备。

  • 库例程:ST提供了USB MSC的例程,你可以参考 STM32Cube_FW_F4_V1.x.xProjectsSTM324xG_EVALApplicationsUSB_DeviceMSC_Standalone 这个例程。你可以根据这个例程来修改,使其支持TF卡的读写。


2. OTS_HS (PB14, PB15) 实现读写U盘功能



  • USB HS (High Speed):STM32F407的USB HS接口可以通过PB14 (USB_DM) 和 PB15 (USB_DP) 来实现。USB HS接口可以通过外部PHY芯片(如USB3300)来实现高速USB通信。

  • 库例程:ST提供了USB HS的例程,你可以参考 STM32Cube_FW_F4_V1.x.xProjectsSTM324x9I_EVALApplicationsUSB_HostMSC_Standalone 这个例程。你可以根据这个例程来修改,使其支持U盘的读写。


3. 硬件IIC (PB8, PB9) 读写AT24C02



  • I2C接口:STM32F407的I2C1接口可以通过PB8 (SCL) 和 PB9 (SDA) 来实现。你可以使用STM32的HAL库或者标准外设库来实现I2C通信。

  • 硬件I2C的BUG:STM32F4系列的硬件I2C在某些情况下可能会遇到问题,尤其是在高负载或复杂的通信场景中。ST已经发布了相关的勘误表(Errata Sheet),建议你查看最新的勘误表以确认是否存在影响你应用的问题。通常情况下,可以通过合理的配置和软件处理来规避这些问题。

  • 库例程:ST提供了I2C的例程,你可以参考 STM32Cube_FW_F4_V1.x.xProjectsSTM324xG_EVALExamplesI2CI2C_EEPROM 这个例程。你可以根据这个例程来修改,使其支持AT24C02的读写。


总结:



  • USB FS:可以使用PA11和PA12实现TF卡的读卡器功能。

  • USB HS:可以使用PB14和PB15实现U盘的读写功能。

  • I2C:可以使用PB8和PB9实现AT24C02的读写,但需要注意硬件I2C的潜在问题。


相关库例程:



  • USB FS MSCSTM32Cube_FW_F4_V1.x.xProjectsSTM324xG_EVALApplicationsUSB_DeviceMSC_Standalone

  • USB HS MSCSTM32Cube_FW_F4_V1.x.xProjectsSTM324x9I_EVALApplicationsUSB_HostMSC_Standalone

  • I2C EEPROMSTM32Cube_FW_F4_V1.x.xProjectsSTM324xG_EVALExamplesI2CI2C_EEPROM


你可以从ST的官方网站下载 STM32Cube_FW_F4 库,里面包含了大量的例程和库函数,帮助你快速实现这些功能。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分