基于微控制器MM32F5333D7P的USB接口TinyUSB应用指南:Host设备的移植和U盘文件读写

2023-10-31 MindMotion(灵动微)微信公众号
MCU,微控制器,MM32F5330,MM32F5333D7P MCU,微控制器,MM32F5330,MM32F5333D7P MCU,微控制器,MM32F5330,MM32F5333D7P MCU,微控制器,MM32F5330,MM32F5333D7P

1、基本介绍


灵动微电子推出的MM32F5330微控制器搭载了由安谋科技授权的Armv8-M架构“星辰”STAR-MC1处理器,最高工作频率可达180MHz。内置了128KB Flash,32KB SRAM,并集成了丰富的I/O端口和外设模块,包括ADC,DAC,模拟比较器,高级定时器,通用定时器,基础定时器和低功耗定时器,还包含通信接口如I2C,I3C从机,SPI或I2S,UART,USART,低功耗UART,集成了内部PHY的USB 2.0全速Device/Host控制器,以及FlexCAN-FD接口。


  • 180MHz“星辰” STAR-MC1 处理器,内置单精度浮点运算单元 FPU,支持DSP 扩展

  • 128KB Flash,32KB SRAM,集成丰富的 I/O 端口和外设模块

  • 4 个UART,1 个 USART,1 个 LPUART

  • 1 个集成内部 PHY 的 USB 2.0

  • 1 个 FlexCAN-FD 接口

  • 2 个 I2C,1 个 I3C 从机,3 个 SPI 或 I2S

  • 2 个 3MSPS 12 位的 ADC, 1 个 12 位的 DAC

  • 2 个 16 位 Adv Timer, 6 个 GP Timer,1 个 LP Timer

  • 工作电压:1.8V ~ 5.5V

  • 工作温度范围:-40℃ ∼ +105℃

  • 封装形式:LQFP64/48,QFN32


TinyUSB 是一个用于嵌入式系统的开源跨平台 USB 主机/设备协议栈,源码是托管在GitHub上面,地址是:https://github.com/hathach/tinyusb。


2、TinyUSB Host基本移植介绍


之前我们有讲过TinyUSB Device的移植,本期我们就来介绍一下Host设备的移植。同样的我们介绍的移植修改是基于TinyUSB examples\host下已经有参考示例的设备。将TinyUSB 从GitHub上克隆下来,example\host文件夹里面就有对应的示例,本次我们以msc_file_explorer为示例演示如何移植一个host设备。


图1 TinyUSB  Host示例


将tinyusb 目录下examples\host\msc_file_explorer下的对应三个文件copy到例程TinyUSB_Host_MSC工程目录文件夹里面。


图2 TinyUSB  msc_file_explore文件


图3  TinyUSB_Host_MSC工程目录


MM32F5333有两个PLL,PLL1可以设置高主频180M给CPU和其他外设使用,PLL2可以单独配置给USB使用。增加一个USB时钟配置函数void USB_DeviceClockInit(void)和void SetPLL2ToUSB_HSE_96M(void),PLL2配置96M 选择PLL2输入二分频到USB。有使用TU_LOG做串口输出,可以使能CFG_TUSB_DEBUG 为需要的输出等级,同时将#define tu_printf    printf 改到串口输出,Keil Options->Target 勾选Use MicroLIB,并实现重定向函数。


void SetPLL2ToUSB_HSE_96M(void)
{
    RCC->CR &= ~RCC_CR_PLL2ON_Msk;

    /* Reset PLL2SRC, PLL2PDIV, PLL2MUL, PLL2DIV bits */
    RCC->PLL2CFGR &= ~RCC_PLL2CFGR_PLL2SRC_Msk;
    RCC->PLL2CFGR &= ~RCC_PLL2CFGR_PLL2PDIV_Msk;
    RCC->PLL2CFGR &= ~RCC_PLL2CFGR_PLL2MUL_Msk;
    RCC->PLL2CFGR &= ~RCC_PLL2CFGR_PLL2DIV_Msk;

    /* Config pll clock source*/
    RCC->PLL2CFGR |= (0x01U << RCC_PLL2CFGR_PLL2SRC_Pos);

    /* set PLL2 CP Current Control Signals */
    RCC->PLL2CFGR &= ~RCC_PLL2CFGR_PLL2ICTRL_Msk;

    if (HSE_VALUE >= 8000000)
    {
        RCC->PLL2CFGR |= (0x03 << RCC_PLL2CFGR_PLL2ICTRL_Pos);
    }
    else
    {
        RCC->PLL2CFGR |= (0x01 << RCC_PLL2CFGR_PLL2ICTRL_Pos);
    }

    RCC->PLL2CFGR |= ((0x17 << RCC_PLL2CFGR_PLL2MUL_Pos) | (0x01 << RCC_PLL2CFGR_PLL2DIV_Pos));

    /* Enable PLL2 */
    RCC->CR |= (0x01U << RCC_CR_PLL2ON_Pos);

    /* Wait till PLL2 is ready */
    while ((RCC->CR & RCC_CR_PLL2RDY_Msk) == 0)
    {
        __ASM("nop");                  /* __NOP(); */
    }
}


void USB_DeviceClockInit(void) 
{
    /* Select USBCLK source */
    RCC->CFGR |= 1 << 19;              //USB CLK SEL PLL2

    RCC->CFGR &= ~(0x03 << 22);
    RCC->CFGR |= 0x01 << 22;

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_USB_FS, ENABLE);
}


添加tuh_hcd_port.c 接口函数文件。


图4  Keil添加tuh_hcd_port.c文件


移植修改和之前Device设备基本流程一致,Keil工程按如下文件树添加对应文件。


图5  Keil工程添加对应.c文件


工程文件树如下:

1.TinyUSB_Host_MSC

2.     │

3.     ├─APP

4.     │    main.c

5.     │    mm32f5330_it.c

6.     │    platform.c

7.     │    msc_app.c

8.     │    tinyusb_msc_file_explorer.c

9.     │    tuh_hcd_port.c

10.   │

11.   ├─TinyUSB 

12.   │    tusb.c 

13.   │    tusb_fifo.c

14.   │    hub.c

15.   │    usbh.c

16.   │    msc_host.c

17.   │

18.   └─FATFS

19.          ff.c

20.          ffsystem.c

21.          ffunicode.c


在tusb_config.h文件里面添加#define CFG_TUSB_MCU OPT_MCU_MM32F533X Tusb_mcu.h 文件里面增加:

//------------- MindMotion -------------//
#elif TU_CHECK_MCU(OPT_MCU_MM32F016X)
  #define TUP_DCD_ENDPOINT_MAX    8

#elif TU_CHECK_MCU(OPT_MCU_MM32F327X)
  #define TUP_DCD_ENDPOINT_MAX    16 

#elif TU_CHECK_MCU(OPT_MCU_MM32F533X)
  #define TUP_DCD_ENDPOINT_MAX    16


在while(1)循环里面添加tuh_task(); 然后解决基本的编译问题后烧录板子插入U盘,将printf接上串口调试助手即可测试。

void TinyUSB_MSC_File_Explorer_Sample(void)
{
    printf("\r\nTest %s \r\n", __FUNCTION__);

    TinyUSB_Device_Configure();

    while (1)
    {
        // tinyusb host task
        tuh_task();
    }
}


插入和拔出U盘都能看到”A MassStorage device is mounted”和”A MassStorage device is unmounted” 证明已经成功读取到U盘。


图6  插入和拔出U盘串口log打印


3、U盘基本的文件读写测试

基于上述两点我们已经能通过USB设备识别到U盘了,同时TinyUSB lib\fatfs\source里面也提供了FatFs 文件操作的接口,下面我们就基于这些文件操作接口函数对U盘里面的文件进行读写操作测试。


图7  ff.c  FatFs 文件操作函数接口


首先识别到U盘我们先用f_mount 对U盘挂载,挂载成功之后使用f_getfree得到当前U盘空间等相关信息。

    printf("test f_getfree:\r\n");
    fatfsCode = f_getfree((char const *)&driverNumberBuffer[0], (DWORD *)&freeClusterNumber, &fs);
    if (fatfsCode)
    {
        printf("error\r\n");
        return false;
    }
    if (fs->fs_type == FS_FAT12)
    {
        printf("    FAT type = FAT12\r\n");
    }
    else if (fs->fs_type == FS_FAT16)
    {
        printf("    FAT type = FAT16\r\n");
    }
    else
    {
        printf("    FAT type = FAT32\r\n");
    }
    printf("    bytes per cluster = %d; number of clusters=%lu \r\n", fs->csize * 512, fs->n_fatent - 2);
    printf("    The free size: %dKB, the total size:%dKB\r\n", (freeClusterNumber * (fs->csize) / 2),
             ((fs->n_fatent - 2) * (fs->csize) / 2));


根据那些操作接口函数我们可以对U盘里面的文件进行读写操作,创建删除文件/文件夹,插入U盘后测试打印log如下:


图8  f_readdir 读取并列出U盘文件信息串口log打印


图9  U盘文件读写操作串口log打印


基于 MM32F5333D7P 的USB 接口 TinyUSB应用测试功能正常,测试在MM32F5330上能够实现对U盘里面的文件进行读写操作,创建删除文件/文件夹等操作。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由ll转载自MindMotion(灵动微)微信公众号,原文标题为:灵动微课堂 (第274讲)|基于MM32F5333D7P的USB接口TinyUSB应用:Host设备的移植和U盘文件读写,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

灵动微电子MM32F0160系列MCU FlexCAN-FD通信应用指南

MM32F0160系列MCU具有一个 FlexCAN 模块,该模块遵循 ISO 11898-1 标准、 CAN FD 和 CAN 2.0B 协议规范,不仅兼容传统CAN,还支持CAN FD模式。本章节初步学习使用MM32F0160 FlexCAN-FD接口实现CAN FD通信,相关例程参考灵动官网的LibSamples或在此基础上修改。

2024-01-07 -  设计经验 代理服务 技术支持 批量订货

使用灵动MM32F5270 MCU UART配置实现LIN通信

本文主要简述MM32F5270 UART是如何实现LIN通信的。从LIN驱动程序、 主机程序、从机程序和验证等方面来讲代码实现。

2024-02-23 -  设计经验 代理服务 技术支持 批量订货

基于MM32F5270 MCU初步学习移植FreeRTOS

FreeRTOS是一个RTOS类的嵌入式实时操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。本系列微课堂基于MM32F5270 MCU初步学习使用FreeRTOS开发。

2024-08-30 -  设计经验 代理服务 技术支持 批量订货

【IC】灵动微电子高性能通用32位MCU产品MM32H5480荣获“2024年度硬核MCU芯片奖”

近日,第六届硬核芯生态大会在深圳举办,同期2024年度硬核中国芯获奖榜单正式发布。作为国内领先的本土通用32位MCU产品及解决方案供应商,MindMotion灵动微电子凭借高性能产品MM32H5480斩获“2024年度硬核MCU芯片奖”。

2024-10-18 -  原厂动态 代理服务 技术支持 批量订货

MindMotion(灵动微) MCU选型表

32位高性能,高性价比MCU,Core核心有M0、M0+、2XM0、M3、STAR-MC1,Flash存储容量范围 16KB~2048KB,RAM存储容量范围 2KB~128KB,工作电压:1.8~48V,CPU频率(MHz):48~180MHz,GPIO 端口数(个):6~86,LQFP/TSSOP/QFN等多种封装形式。

产品型号
品类
内核
管脚数(个)
工作温度(℃)
CPU频率(MHz)
工作电压(V)
GPIO 端口数(个)
Flash(KB)
SRAM (KB)
封装/外壳/尺寸
MM32F0163D7PV
32位MCU
M0
64
-40℃~105℃
96MHz
2.0~5.5V
57
128KB
16KB
LQFP64

选型表  -  MindMotion 立即选型

【IC】灵动新推出32位MCU MM32F0120,主频高达72MHz,提供64KB Flash和8KB RAM

灵动微电子发布的MM32F0120,搭载Cortex M0内核,主频高达72MHz,提供64KB Flash和8KB RAM,最高支持48pin封装。适用于屏显控制、电动玩具、电源管理、马达控制、无线快充等多种应用场合。

2024-09-11 -  产品 代理服务 技术支持 批量订货

灵动微电子扎根张江造“芯”,打造本土32位MCU知名品牌

灵动微电子成立于2011年,2016年进军MCU市场,2019年积极向工业、大家电、汽车等领域发力,目前已涵盖消费电子、电机与电源、家电、汽车、计算机与通信、工业控制等应用领域,客户群体包括飞利浦、小米、汇川、海尔、海信、美的等,是中国本土领先的通用32位MCU 产品及解决方案供应商。

2024-09-19 -  原厂动态 代理服务 技术支持 批量订货

【IC】灵动发布全新入门级32位MCU MM32G0001系列,内置时钟全温度范围内偏差不超过±2%

灵动股份推出全新超值型MM32G0001系列MCU。2023年初,灵动首次发布了其主打高性价比的MM32G系列,目前已陆续推出了G0140,G0160和G5330系列产品。为进一步丰富MM32G系列产品组合,灵动和上下游合作伙伴通力合作,打造出全新入门级超值型MM32G0001系列MCU。

2023-07-01 -  新产品 代理服务 技术支持 批量订货

New Milestone! Following the Success of MM32G0001, MindMotion Launches the Next-Level, High-Value MCU – MM32F0120

MindMotion Microelectronics is excited to announce the official launch of its next-level MCU, the MM32F0120. In 2023, MindMotion‘s entry-level MCU, MM32G0001, made a huge impact with its cost-performance ratio, comparable to or even surpassing 8/16-bit MCUs, earning high praise in the market.

2024-09-14 -  产品 代理服务 技术支持 批量订货

灵动发布全新MM32F0160系列MCU,72MHz主频,支持1路高达12.5 Mbps的I3C从机接口

灵动股份发布全新MM32F0160 系列 MCU,其搭载72MHz Arm® Cortex-M0处理器,内置128KB Flash,16KB RAM,配备高速ADC、USB、CAN-FD、I3C等丰富的模拟和通信资源,适用于工业物联网设备、PC外设、电子门锁、医疗和保健设备、个人手持设备、游戏娱乐等多种应用场景。

2023-06-27 -  新产品 代理服务 技术支持 批量订货

灵动MM32SPIN⸺专注电机控制的MCU和SOC

型号- SPIN080G,MM32SPIN030C,SPIN360C,MM32SPIN06NT,SPIN033A,SPIN590G,MM32SPIN560C,MM32SPIN05PT,MM32SPIN580C,MM32SPIN05TW,SPIN0260,MM32SPIN27PF,MM32SPINEBK,MM32SPIN0230B3NV,MM32SPIN080GN,MM32SPIN06PF,SPIN02XX,MM32SPIN07,MM32SPIN0280,MM32SPIN160C,SPIN533A,MM32SPIN,MM32SPIN560CM,SPIN27,MM32SPIN023C,MM32SPIN06,MM32SPIN05,MM32SPIN0230B1NV,MM32SPIN422C,MM32SPIN0280D4PV,MM32SPIN0280D6PV,SPIN060G,SPIN0250,SPIN080C,SPIN222C,SPIN0290,SPIN040C,MM32SPIN080CN,MM32SPIN0230,MM32SPIN060G,MM32SPIN080C,SPIN0230,MM32SPIN040C,SPIN56XX,MM32SPIN37,MM32SPIN05NW,SPIN580C,SPIN160C,SPIN023C,MM32SPIN05NT,MM32SPIN06PT,MM32SPIN0280D6QV,MM32SPIN360C,SPIN0280,SPIN495C,MM32SPIN030CN,MM32SPIN27NF,SPIN560C,SPIN05XX,MM32SPIN07PF,SPIN07,SPIN06,MM32SPIN05PF,MM32SPIN27PQ,MM32SPIN0230B3TV,SPIN5630,MM32SPIN05PFOP,MM32SPIN27PS,MM32SPIN27PT,MM32SPIN0230B1TV,MM32SPIN37PSD,SPIN05,MM32SPIN533A,MM32SPIN033A,MM32SPIN27,MM32SPIN0280D7PV,MM32SPIN222C,SPIN080X,SPIN422C,MM32SPIN0280DAPV,SPIN030C,MM32SPIN080G

2024/4/30  - MINDMOTION  - 商品及供应商介绍

基于灵动MM32F0130微控制器的智能插排方案,实现远程开关控制、定时开关、随时了解家电设备的使用状况

智能插座又可以称为WIFI插座,在普通插座的功能基础上延伸了许多功能,如防雷击,防短路,防过载,防漏电,配合智能手机的APP应用,可以实现远程开关控制、定时开关、随时了解家电设备的使用状况。基于灵动MM32F0130微控制器的插排,具有以下特点:-内置Timer进行解码红外输入-通过串口与云端连接,进行远程控制,以及电量监控等-通过I2C与计量芯片通讯,进行异常检测,过流,过/欠压等保护

2024-03-13 -  应用方案 代理服务 技术支持 批量订货

【经验】灵动微电子MM32F0160微控制器开源项目:如何实现一套低成本带RGB灯效的机械键盘

灵动的软件与系统工程SE团队,基于带有 USB 外设模块的 MM32F0160 微控制器,实现了一套低成本带RGB灯效的机械键盘。这里将设计机械键盘的全过程开源出来,感兴趣的开发者,可以向灵动申请 MM32F0160 微控制器的样片,复刻一把自己专属的机械键盘,也可以继续进行二次开发,实现更加有趣的作品。

2023-07-01 -  设计经验 代理服务 技术支持 批量订货

基于MM32F5270 MCU的Ethernet实现LwIP协议栈移植

LwIP是轻量化的TCP/IP协议,由瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。本文基于搭载了MM32F5277E9P MCU的开发板 PLUS-F5270 V2.0进行实现LwIP协议栈移植。

2024-08-30 -  设计经验 代理服务 技术支持 批量订货
展开更多

电子商城

查看更多

品牌:MindMotion

品类:高性能MCU

价格:

现货: 0

品牌:MindMotion

品类:高性能MCU

价格:

现货: 0

品牌:MindMotion

品类:电机专用SOC

价格:¥8.2805

现货: 285

品牌:MindMotion

品类:32位MCU

价格:¥7.7125

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.2617

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥3.7500

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.9500

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥10.6250

现货: 160

品牌:MindMotion

品类:高性能MCU

价格:¥14.6125

现货: 90

品牌:MindMotion

品类:电机专用MCU

价格:¥2.5706

现货: 25

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:MindMotion

品类:32位MCU

价格:¥5.9400

现货:19,996

品牌:MindMotion

品类:32位MCU

价格:¥2.3800

现货:6,427

品牌:RENESAS

品类:16-BIT MCU

价格:¥5.5190

现货:910,635

品牌:RENESAS

品类:MCU

价格:¥5.1500

现货:200,000

品牌:RENESAS

品类:microcontroller

价格:¥2.8532

现货:188,410

品牌:恒烁

品类:MCU

价格:¥1.0800

现货:154,600

品牌:Advanced Digital Chips

品类:MCU

价格:¥6.6000

现货:100,000

品牌:RENESAS

品类:MCU

价格:¥5.8041

现货:86,925

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥7.3800

现货:76,715

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥15.3000

现货:75,000

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

工控触摸一体机定制

提供7~27寸工控机定制,支持嵌⼊式/ 壁挂式 /桌⾯式/悬挂式等安装方式,采用纯平⾯板IP65防尘防⽔等级,莫⽒7级硬度触摸屏,兼容多种操作系统:组态软件/安卓/XP/win7/8/10/Linux等,支持主板、接⼝、外观、⽀架、刷卡器、⾝份证阅读器、LOGO、⻨克⻛、系统、电池、蓝⽛、4G/5G、摄像头、GPS系统、⼆维码扫描器、指纹等特殊应⽤场景定制

最小起订量: 1台 提交需求>

散热风扇定制

可定制风扇尺寸覆盖18x18x04mm~165x165x25mm,随散热器大小而定制;风扇转速范围:1000 RPM~16500 RPM。支持DC风扇,直流风扇轴流风机,鼓风机以及电脑笔记本风扇等产品定制。

最小起订量: 500pcs 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面