【经验】如何验证不同Flash对灵动微微控制器执行程序性能的影响
【经验】灵动微电子MM32F5系列微控制器QSPI Flash及2nd Bootloader引导加载程序总结及注意事项 描述了如何将一个样例工程下载到QSPI Flash并运行,那么就会有一个新的问题:将应用程序存储在QSPI Flash、片内Flash以及片内SRAM上,执行的效果又如何?本章将通过在不同Flash中执行相同的测试程序,记录其执行程序所花费的时间,验证不同Flash对微控制器执行程序性能的影响。
在进行 Flash 速度验证前,我们需要知道如何获取各 Flash 的速度:
QSPI Flash 访问速度可通过 QSPI 的 SCK 波特率直接求出。
片内 Flash 的访问速度可通过 DataSheet 手册或寄存器配置得到。
通常,片内 SRAM (系统时钟速度访问)的访问速度与系统时钟速度保持一致。
若要验证在不同 Flash 中程序的执行速度,还需考虑以下几点:
验证程序中要包含适量的小循环,从而展现 ICACHE 和 DCACHE 对执行程序带来的性能提升。
验证程序中要包含适量的长跳转,使 CPU 需要重新访问 Flash 获取指令和数据,从而展现不同 Flash 对执行程序速度带来的影响。
验证程序要足够复杂,且 code size 要足够大,尽量消除偶然性因素,从而能够模拟真实使用场景,使验证结果更加可信。
验证程序应尽量使用通用的算法应用,可以在多平台中进行适配,且能够进行横向比较。
验证环境
MCU F5270/F5280
测试所用开发板
POKT-F5270 (MM32F5277E9PV),外扩 QSPI Flash
POKT-F5280 (MM32F5287L9PV),合封 QSPI Flash
开发工具
MDK5.37(ARM Compiler: v6.18)
MCU F5270/F5280 配置
System Clock:120MHz
AHB Clock:120MHz
APB1 Clock:60MHz
APB2 Clock:60MHz
ICACHE: 开启
DCACHE: 开启
FPU: 开启 (单精度)
片内 SRAM
Base:0x30000000
Speed:120MHz(1 访问周期 + 0 等待周期)
片内 Flash
Base:0x08000000
Speed:24MHz(1 访问周期 + 4 等待周期)
QSPI Flash
Base:0x90000000
存放数据的 RAM base:0x20000000 (with DTCM),在测试用例中使用另外的 RAM 存放程序
QSPI Flash
测试所用开发板:
型号:W25Q128JVSIQ,FM25Q16A
SCK波特率:30MHz (MM32F5270 only,120MHz AHB 时钟 4 分频) 与 60MHz (MM32F5280 only,120MHz AHB 时钟 2 分频)
受外界环境(线路不等长,阻抗不匹配等因素)和 GPIO 电平翻转速度(电平上升下降沿所需时间)影响,片外 QSPI Flash难以在 SCK 波特率 60MHz 的环境下读取到正确的数据,因此 60MHz 验证只在 MM32F5280 上进行。
其余验证程序均在 POKT-F5270 开发板上进行运行。
SPI 模式:SPI 模式 3 (CPOH = 1, CPHA = 0)
POKT-F5270 (MM32F5277E9PV),外扩 QSPI Flash
POKT-F5280 (MM32F5287L9PV),合封 QSPI Flash
工作模式:QPI 模式(各通信阶段线宽皆为四线)下进行 Fast Read
指令线宽:4-line
指令位宽:8-bit
地址线宽:4-line
地址位宽:24-bit
空指令周期数:2-sck_cycles
数据线宽:4-line
交互方式:
由交互方式可知,无论向 QSPI Flash 读取多少字节数据,读取数据前都会有 10 个 SCK 时钟准备数据。
Arm CMSIS-DSP FFT 验证
FFT (快速傅里叶变换),是一种能够将一段离散的波形数据转换为频谱数据的算法。
CMSIS-DSP 中 FFT 计算的 API,具有良好的可移植性,可在 ARM 内核的芯片中进行横向对比,具有可信性,且它的 FFT 计算涉及到大量的循环和跳转等操作,用例的 code size 足够大,计算方法足够复杂,可充分展现 CPU 和 Flash 之间配合,适合用于当前各 Flash 对微控制器性能影响测试。
验证方法
使用 Arm CMSIS-DSP FFT 验证方法时,可指定一段波形数据,通过 FFT 进行一次正向运算,得出频谱数据,再将频谱数据进行一次 FFT 反向运算,得出原始的波形数据。
使用 SysTick 定时器记录时间,由于进行一次正向运算和一次反向运算所需的时间较短,因此循环多次(1000次),统计计算所需的时间。计算所需的时间越短,表明在该 Flash 上执行程序的性能越好,记录完一次时间后,调整程序的优化等级,再次进行验证。
验证用例简介
用例中主要使用函数 fft_test_init_f32() 与 fft_test_run_f32() 执行 FFT 转换。
fft_test_init_f32()
对一块 float32_t 类型的buffer进行初始化,生成一段波峰为1,波数为100,采样点共1024个的波形数据。
fft_test_run_f32()
初始化 FFT,对 buffer 中的内容进行正向 FFT 转换,将波形数据转换为频谱数据,替换 buffer 中原有的数据;
再对 buffer 中的内容进行逆向 FFT 转换,将频谱数据转换为波形数据,替换 buffer 中原有的数据;
循环正向 FFT 转换和逆向 FFT 转换,循环次数为 test_times 次。
Arm CMSIS-DSP FFT 用例的验证方法
调用 fft_test_init_f32() 函数对一块 float32_t 类型的 buffer 进行初始化。
开启 SysTick 定时器,每毫秒产生一次中断,实现计时功能。
记录开始验证的时间,调用 fft_test_run_f32() 函数,test_times 为 1000。
记录验证结束的时间,打印验证花费的时间。
验证结果
在 QSPI Flash(60MHz与30MHz),片内 SRAM 和片内 Flash 上运算 Arm CMSIS-DSP FFT 的性能数据及代码变量如表1所示。
此处需注意,由于浮点数记录数据时会有精度问题,经过 1000 轮 FFT 转换后的波形数据与 FFT 转换前的波形数据相比,会有轻微变化,属正常现象。
表1 各 Flash 运行 FFT 的性能数据对比
以 -ofast 优化为例,片内 SRAM 的运算时长为基准单位,各 Flash 进行 FFT 运算所需时长对比如图1所示。
图1 各 Flash 的 FFT 运算速度比较 (-ofast)
验证程序
Arm CMSIS-DSP FFT 测试程序包含三种优化等级程序:
o0 文件夹
编译优化选项为 -o0 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。
ofast 文件夹
编译优化选项为 -ofast 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。
oz 文件夹
编译优化选项为 -oz image size 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。当程序运行在片内 SRAM 或 QSPI Flash 时,需要 bootlader 进行引导,bootloader文件夹中提供三种环境下的 bootloader:
pokt-f5270_bootloader_qspi_sckdiv2_mdk
验证程序执行在 QSPI Flash 上,且需要 SCK 时钟为 AHB 时钟的二分频(AHB 时钟为 120MHz 时 SCK 波特率为 60MHz)。
pokt-f5270_bootloader_qspi_sckdiv4_mdk
验证程序执行在 QSPI Flash 上,且需要 SCK 时钟为 AHB 时钟的四分频(AHB 时钟为 120MHz 时 SCK 波特率为 30MHz)。
pokt-f5270_bootloader_sram_mdk
测试程序执行在片内 SRAM 上,该 bootloader 仅实现引导 CPU 执行片内 SRAM 上的程序,不实现加载程序到片内 SRAM 的功能。下载本 bootloader 后,可使用如 JLink 等工具,将验证程序加载到片内 SRAM 中。即使微控制器发生复位,片内 SRAM 中的程序也不会被擦除。
Mbed-TLS RSA1024 验证
RSA1024 是一种非对称加密算法,常用于网络通信时的数据加密。Mbed-TLS RSA1024 计算量大,包含大量循环,跳转等操作,且其为纯应用代码,便于移植,计算方法复杂,可用于当前各 Flash 对微控制器性能影响测试。
验证方法
指定公钥和私钥,对一段指定的数据进行 RSA1024 加密和解密。使用 SysTick 定时器记录时间,由于进行一次加密和解密的时间较短,需将一组加密与解密循环多次 (10次),记录所需时间。计算所需的时间越短,表明在该 Flash 上执行程序的性能越好,记录完一次时间后,调整优化等级,再次进行验证,不得使用专用的加解密硬件外设协助计算。
验证用例简介
用例中主要使用函数 rsa_test_init() 与 rsa_test_run() 执行数据加密。
rsa_test_init()
对存放解密数据的 buffer1 进行初始化,存放原始数据。
对存放加密数据的 buffer2 进行初始化,填充 0x00。
加载 RSA1024 公钥和私钥。
rsa_test_run()
将存放解密数据的 buffer1 中的内容进行加密,并将加密后的数据存放到 buffer2 中。
将存放加密数据的 buffer2 中的内容进行解密,并将解密后的数据存放到 buffer1 中。
循环以上操作 test_times 次。
验证方法
调用 rsa_test_init() 函数对一块 float32_t 类型的buffer进行初始化。
开启 SysTick 定时器,每毫秒产生一次中断,实现计时功能。
记录开始验证的时间,调用 rsa_test_run() 函数,test_times 为 10。
记录验证结束的时间,打印验证花费的时间。
验证结果
在 QSPI Flash(60MHz与30MHz),片内 SRAM 和片内 Flash 运行 Mbed-TLS RSA1024 程序的性能数据,如表2所示。
表2 各 Flash 运行 Mbed-TLS RSA1024 的性能数据
以 -ofast 优化为例,片内 SRAM 的运算时长为基准单位,各 Flash 进行 RSA1024 运算所需时长对比如图2所示。
图2 RSA1024 运算速度对比 (-ofast)
验证程序
Mbed-TLS RSA1024 测试程序包含三种优化等级程序:
o0 文件夹
编译优化选项为 -o0 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。
ofast 文件夹
编译优化选项为 -ofast 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。
oz 文件夹
编译优化选项为 -oz image size 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。当程序运行在片内 SRAM 或 QSPI Flash 时,需要 bootlader 进行引导,三种环境下的 bootloader 结构与 Arm CMSIS-DSP FFT 验证程序中对 bootloader 的介绍相同。
需要注意,MbedTLS RSA1024 用例未使用 MicroLIB库
验证时发现,使用 MicroLIB 后,在片内 SRAM 中执行 calloc 函数无法申请内存空间,影响 RSA1024 运算,因此在工程配置选项中选择Options for Target ... -> Target 取消勾选 Use MicroLIB 。
为使用 printf() 函数打印验证结果,在工程配置选项中选择 Manage Run-Time Environment -> Compiler -> I/O 勾选 STDERR , STDIN , STDOUT 。程序配置如图3所示。
图3 Manage Run-Time Environment 配置
Helix MP3 Decoder 验证
Helix MP3 解码库作为一款开源的 MP3 解码组件,常在多媒体应用中使用。Helix MP3 Decoder为纯应用代码,便于移植,且其在进行 MP3 解码的过程中,需要进行大量的循环和长跳转操作,适合用于当前各 Flash 对微控制器性能影响测试。
验证方法
使用 Helix MP3 Decoder 验证方法,指定一段 MP3 文件,将其文件中的原始数据存放在待测试的 Flash 中。
使用 Helix MP3 解码库将该 MP3 文件的原始数据解码为 PCM 格式。
使用 SysTick 定时器记录时间,由于指定的 MP3 文件较小,且 Helix MP3 解码速度较快,因此循环多次(10次),统计计算所需的时间。
计算所需的时间越短,表明在该 Flash 上执行程序的性能越好。完成一次时间统计后,通过调整程序优化等级,再次进行验证。
验证用例简介
用例中主要使用函数 mp3_dec_test_run() 执行 MP3 解码。
mp3_dec_test_run()
初始化 Helix MP3 Decoder。
循环寻找下一个 MP3 的同步帧的起始位置,并开始解码这一帧 MP3 原始数据,直至 MP3 文件全部解码。
释放 Helix MP3 Decoder。
循环上述的 MP3 解码过程,循环次数为 test_times 次。
验证方法
开启 SysTick 定时器,每毫秒产生一次中断,实现计时功能。记录开始验证的时间,调用 mp3_dec_test_run() 函数,test_times 为 10。记录验证结束的时间,打印验证花费的时间。
验证结果
在 QSPI Flash(60MHz,30MHz),片内 SRAM 和片内 Flash 中运行 Helix MP3 Decoder 所获取的性能数据,如表3所示。
表3 各 Flash 运行 Helix MP3 Decoder 的性能数据
以 -ofast 优化为例,片内 SRAM 的运算时长为基准单位,各 Flash 进行 Helix MP3 Decoder 运算所需时长对比,如图4所示。
图4 mp3 dec test 运算速度对比 (-ofast)
验证程序
Helix MP3 Decoder 测试程序包含三种优化等级程序:
o0 文件夹
编译优化选项为 -o0 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。
ofast 文件夹
编译优化选项为 -ofast 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。
oz 文件夹
编译优化选项为 -oz image size 的验证程序,包含片内 Flash,片内 SRAM 和 QSPI Flash 三种环境的工程。
当程序运行在片内 SRAM 或 QSPI Flash 时,需要 bootlader 进行引导,三种环境下的 bootloader 结构与 Arm CMSIS-DSP FFT 验证程序部分介绍的相同。
总结
本文通过在 QSPI Flash,片内 Flash 与片内 SRAM 中分别运行测试工程 Arm CMSIS-DSP FFT、Mbed-TLS RSA1024 与 Helix MP3 Decoder,获取微控制器性能数据,从而对比在不同 Flash 位置的执行速度的差异。
通过对比上述验证数据可知:
不同型号 QSPI Flash 的访问速度受 SCK 波特率影响,当访问 QSPI Flash 的方法一致时,不同型号的 QSPI Flash 访问速度一样。
同一优化选项下,使用不同验证程序,不同 Flash 位置的执行速度存在一定差异。
MM32F5270 系列芯片具备ICACHE和DCACHE,验证执行速度比较小的程序,说明具备良好的时间局部性和空间局部性,具有较高的 CACHE 命中率,减少了访问 Flash 所花费的时间;验证执行速度比较大的程序,说明执行程序时,进行了较多较大范围的跳转操作,需不断访问 Flash,刷新 CACHE,造成执行速度变慢。
当然,即使关闭 ICACHE 和 DCACHE,执行速度比也是会存在一定差异的,这是由于 QSPI Flash 的访问方式中规定了不论读取多少字节的数据,都会包含一个指令阶段,一个地址阶段和一个空指令阶段,需要花费 10 个 SCK 时钟周期,因此造成读取2n字节数据花费的时间和n字节数据花费的时间,不是简单的二倍关系,造成执行速度比存在一定差异。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由Goulart转载自灵动MM32MCU公众号,原文标题为:mm32-2nd-bootloader技术白皮书(7)——性能评估,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
Keil分散加载文件浅析
分散加载文件(scatter file)是一个文本文件,用于描述 ARM 链接器生成映像文件所需要的信息,在一些应用场景中嵌入式系统可能会使用分散加载。本章节简要介绍了分散加载文件的基本概念和语法,旨在对分散加载文件有初步认识。
灵动微电子MM32F0160系列MCU FlexCAN-FD通信应用指南
MM32F0160系列MCU具有一个 FlexCAN 模块,该模块遵循 ISO 11898-1 标准、 CAN FD 和 CAN 2.0B 协议规范,不仅兼容传统CAN,还支持CAN FD模式。本章节初步学习使用MM32F0160 FlexCAN-FD接口实现CAN FD通信,相关例程参考灵动官网的LibSamples或在此基础上修改。
使用灵动MM32F5270 MCU UART配置实现LIN通信
本文主要简述MM32F5270 UART是如何实现LIN通信的。从LIN驱动程序、 主机程序、从机程序和验证等方面来讲代码实现。
灵动凭借MM32SPIN0230/080G/060G电机控制MCU获“最佳电机控制器解决方案供应商”荣誉
2024年11月21日,在2024电机控制先进技术研讨会(秋季),“2024第五届电机控制技术市场表现奖”年度评选活动上,MindMotion灵动凭借多年在电机控制领域的优秀表现,荣获“最佳电机控制器解决方案供应商”奖,该奖项旨在通过业界共同推荐、评选出电机控制行业内市场表现优秀,具有技术和创新能力的企业。
MindMotion(灵动微)MM32系列32位MCU选型指南
目录- 公司介绍及产品应用领域 第二代M0产品 G系列产品 / 第二代M3产品 / 第二代M33产品 / 第二代电机专用MCU 第二代电机SOC产品 / AEC-Q100 / 第二代低功耗产品 第一代M0产品 第一代M3产品 / 第一代M33产品 / 第一代电机专用MCU / 第一代电机SOC产品 / 第一代低功耗产品
型号- MM32G0163D4PV,MM32L0XX,MM32F0144C6PM,MM32F5230,MM32SPIN580C,MM32G0020,MM32G0140,MM32L073PF,MM32F0133C4Q,MM32SPIN080GN,MM32SPIN560CM,MM32SPIN023C,MM32F0133C4P,MM32F5287L8PV,MM32SPIN533AM,MM32F0162D7P,MM32F0121C6P,MM32SPIN0230,MM32F0163D4Q,MM32SPIN080C,MM32F0141C1T,MM32L062NT,MM32F0020B1N,MM32F0144C1TV,MM32F5330,MM32G0001,MM32G0120,MM32F0144C1TM,MM32F0163D7P,MM32SPIN030CN,MM32G0121C1TV,MM32SPIN07PF,MM32F0010A1TV,MM32SPIN05PFOP,MM32SPIN0230B1TV,MM32SPIN37PSD,MM32G0001A6T,MM32F3270,MM32F0121C4P,MM32F5277E9PV,MM32F5287L9PV,MM32F0121C4Q,MM32F5333D6PV,MM32SPIN0280DAPV,MM32F0163D6P,MM32F0121C4N,MM32SPIN080G,MM32F0144C4PM,MM32SPIN560,MM32F0144C4PV,MM32F5280,MM32SPIN06NT,MM32F0140,MM32SPIN560C,MM32F0020,MM32G5333D6QV,MM32F0162D4Q,MM32F0273D6P,MM32F0050C1TV,MM32SPIN0230B3NV,MM32SPIN06PF,MM32G0144C4QV,MM32SPIN0280,MM32L052NT,MM32F5270,MM32F0144C4P,MM32F5277E8PV,MM32F031C6T6,MM32F0130,MM32F0010,MM32F0020B1TV,MM32F5333D7PV,MM32G0144C4PV,MM32SPIN080CN,MM32F0144C4Q,MM32SPIN060G,MM32L0136C7P,MM32F0133C7P,MM32SPIN05NW,MM32F5331D3NV,MM32SPIN05NT,MM32F0040B1T,MM32G0001A6T1V,MM32SPIN06PT,MM32F0120,MM32F0162D6P,MM32F5331D3NM,MM32F003NW,MM32G0160,MM32SPIN27NF,MM32F0163D4QM,MM32SPIN05PF,MM32F031,MM32F3273G6P,MM32F0163D4QV,MM32L0136B6P,MM32G0001A1TV,MM32F0133C6P,MM32SPIN0280D7PV,MM32F5277E7PV,MM32F0144C6P,MM32SPIN222C,MM32F0144C6PV,MM32F0010A6T,MM32G0001A1T,MM32F3273G7P,MM32L0130,MM32G0001A1N,MM32SPIN05PT,MM32G0121C4PV,MM32F0010A1T,MM32F5233D7PV,MM32SPIN27PF,MM32F0010A1N,MM32G5330,MM32SPINEBK,MM32SPIN07,MM32F3273G8P,MM32SPIN160C,MM32SPIN06,MM32SPIN0230B1NV,MM32L0136C6P,MM32SPIN05,MM32F0040B1N,MM32L0020,MM32F0050,MM32SPIN0280D6PV,MM32SPIN533,MM32F031K6U6,MM32F3273G9P,MM32F0163D6PM,MM32SPIN040C,MM32G0020B1T,MM32F003,MM32SPIN37,MM32F0163D6PV,MM32G0020B1N,MM32F0273D8P,MM32F0160,MM32L0136C3T,MM32F0040,MM32G0001A1NV,MM32SPIN0280D6QV,MM32F0144C1T,MM32F103CBT6,MM32F5233D6PV,MM32F0144C4QM,MM32F3273E6P,MM32SPIN27PQ,MM32SPIN27PS,MM32SPIN27PT,MM32L0136C4N,MM32SPIN27,MM32F0020B1NV,MM32F0270,MM32G0121C4QV,MM32F031F6U6,MM32F0273D7P,MM32F003TW,MM32G0144C1TV,MM32F3273E7P,MM32G0163D6PV,MM32F0163D7PM,MM32F0141B1T,MM32SPIN030C,MM32F0163D7PV,MM32F0131C7P,MM32F103,MM32SPIN05TW,MM32F031Y6Y6,MM32F0141C4P,MM32F0141C4Q,MM32F0141C4N,MM32F031K6T6,MM32F0010A1NV,MM32F0131C6P,MM32SPIN422C,MM32SPIN0280D4PV,MM32F0020B1T,MM32L0020B1T,MM32F103RBT6,MM32L0020B1N,MM32F031F6P6,MM32F0121C1N,MM32F0050C1NV,MM32F5333D4QM,MM32G0001A6TV,MM32SPIN360C,MM32,MM32F5333D4QV,MM32F0141C6P,MM32F0141B4P,MM32F0131C4P,MM32F0131C4Q,MM32SPIN0230B3TV,MM32SPIN533A,MM32SPIN033A,MM32F5287L7PV,MM32F5233D4QV
MindMotion MM32H5480 Triumphs with “2024 Hardcore MCU Chip Award“
MindMotion Microelectronics, as a frontrunner in the domestic market for general-purpose 32-bit MCU products and solutions, proudly secured the “2024 Hardcore MCU Chip Award“ for its high-performance product, the MM32H5480.
【IC】灵动新推出32位MCU MM32F0120,主频高达72MHz,提供64KB Flash和8KB RAM
灵动微电子发布的MM32F0120,搭载Cortex M0内核,主频高达72MHz,提供64KB Flash和8KB RAM,最高支持48pin封装。适用于屏显控制、电动玩具、电源管理、马达控制、无线快充等多种应用场合。
【IC】“灵动·星”系列MM32高性能MCU产品搭载Star-MC1提供强劲内核动力,性能提升20%
“灵动·星”系列 MM32 高性能 MCU 产品,搭载安谋科技(Arm China)Star-MC1 内核性能,其1.5 DMIPS / MHz,提升 20% ,4.02 CoreMark / MHz,提升20% 。目前包含 4 个子系列: MM32F3,灵动·天枢 MM32F5,灵动·玉衡 MM32G5,灵动·天玑 MM32H5,为用户提供灵活、丰富的选择。
【IC】灵动发布全新入门级32位MCU MM32G0001系列,内置时钟全温度范围内偏差不超过±2%
灵动股份推出全新超值型MM32G0001系列MCU。2023年初,灵动首次发布了其主打高性价比的MM32G系列,目前已陆续推出了G0140,G0160和G5330系列产品。为进一步丰富MM32G系列产品组合,灵动和上下游合作伙伴通力合作,打造出全新入门级超值型MM32G0001系列MCU。
【经验】灵动MindSDK搭建Keil MDK开发环境指南
本文介绍基于Windows操作系统构建嵌入式系统开发环境过程中需要使用的主要软件Keil MDK,并对一些需要特别关注的要点重点说明。Keil MDK是灵动官方的软件开发平台MindSDK支持的主要编译工具之一。
【IC】灵动微电子高性能通用32位MCU产品MM32H5480荣获“2024年度硬核MCU芯片奖”
近日,第六届硬核芯生态大会在深圳举办,同期2024年度硬核中国芯获奖榜单正式发布。作为国内领先的本土通用32位MCU产品及解决方案供应商,MindMotion灵动微电子凭借高性能产品MM32H5480斩获“2024年度硬核MCU芯片奖”。
【经验】基于MM32F0163D7P的USB Audio Class(UAC)音频设备移植教程
在上一节我们在MM32F0163D7P 平台上成功的移植了TinyUSB,基于这个平台,今天我们来实现一个 uac2_headset 音频设备,这个设备支持基础的录音和放音功能,如果要支持音量调节/静音功能,还需要再添加一个 HID 变成复合设备。
MM32F0160的FlexCAN FD位时间采样点的计算
FlexCAN模块是一个通信控制器,扩展了CAN FD功能,遵循ISO 11898-1标准、CAN FD和CAN 2.0B协议规范。 CAN协议主要被设计用作车载串行总线,满足实时处理,带宽要求,车辆在电磁干扰环境下的可靠操作,该模块支持标准和扩展帧,支持最大64字节有效负载,传输速率高达 8Mbps,并且具有非常灵活的用于传输和接收的邮箱系统和RxFIFO接收机制。
灵动微电子扎根张江造“芯”,打造本土32位MCU知名品牌
灵动微电子成立于2011年,2016年进军MCU市场,2019年积极向工业、大家电、汽车等领域发力,目前已涵盖消费电子、电机与电源、家电、汽车、计算机与通信、工业控制等应用领域,客户群体包括飞利浦、小米、汇川、海尔、海信、美的等,是中国本土领先的通用32位MCU 产品及解决方案供应商。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论