打印
[开发工具]

NUCLEO-F446RE 评测

[复制链接]
1301|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
NUCLEO-F446RE 评测

    上周非常高兴地收到 NUCLEO-F446RE 开发板, 打开资料, 这是个非常强劲的 Cortex-M4 代浮点处理的 STM32F446RE CPU,可达 180MHz 的主频, 和 225MDIPS 的运算能力.还有其他强劲的功能让人颇感激动.不过除了引出的 IO口, 板上资源除了一个 ST-Debug, 就两个按钮, 一个指示灯. 显得少了一点.
    具体的功能和细节不多讲了, 因为手册上很详细. 我记得 STM32 的 MCU 都有很强的频率富余. 可以看我 F303 测试 https://bbs.21ic.com/icview-379066-1-1.html; F407 的测试 https://bbs.21ic.com/icview-293157-1-1.html; 而 F107 我也测试跑到了130MHz以上. 那么这个标称 180Mhz 的 MCU 会不会测试出超过 300MHz 的成绩呢? 让我们拭目以待. 另外我也想测试一下MCU配置对性能还有无影响 https://bbs.21ic.com/icview-364202-1-1.html;
再趁着这个阅兵假期, 我也来阅一下 F446的手册.
    本开发板的软件包是个 stm32cubef4.zip 文件. 打开一看, 里面基本都是基于 HAL 库的软件代码, 找几个库代码看了一下, 和以前的 StdPeriph 外设库完全不同,从手册看, 很多外设地址和寄存器都是兼容的, 所以想先借用以前的代码, 直接换到 F446 上执行. 编译, 下载, 调试运行都正常了, 蛮高兴的, 不过后来却来了问题, 费了一天多的时间, 没有搞定. 启用 SysTick 后, 单步调试中systick溢出了多次都不进入中断, 但连续运行就进入 HardFault, 异常后的 PC 地址竟然是 0x04030200. 用 Systick 是记录时钟数最有效的办法, 好像跳不开这个办法.
    想先得到一个测试结果, 换 MDK 5.14, 只得用 HAL 库了, 不过代码中的寄存器操作代码却把我缠住了, 不熟悉这个 HAL 库, 好像真的不支持原来的寄存器定义了吗?
    该睡觉了, 待续...
沙发
icecut| | 2015-9-6 09:06 | 只看该作者
cube 配合 cubemx 软件来自动生成代码.不用关注寄存器

使用特权

评论回复
板凳
wahahaheihei| | 2015-9-6 09:22 | 只看该作者
en ,如果超过标准的180M,那是不是就是叫超频了

使用特权

评论回复
地板
airwill|  楼主 | 2015-9-11 00:47 | 只看该作者
使用 HAL 库, 折腾了几个晚上. 今天总算跑起来了.
为了不至于其他的因素影响最高频率的表现, 我把 APB2 设置成了2分频,  APB1 设置成了 4 分频. FLASH  的等待时间也设置成了 11. 另外:
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  RCC_OscInitStruct.PLL.PLLM = 16;
  RCC_OscInitStruct.PLL.PLLN =360;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 2;
  RCC_OscInitStruct.PLL.PLLR = 2;

目的是每 1Mhz 的递增.
为了避免 PLL 锁频错误导致的计算错误, 使用 RTC 时钟来统计 CPU 的时钟 (SysTick 的时钟数).
开始!  从 180Mhz开始了... 190...200...210... 217, 停止了.
复位再开始 ... 218 停止了.
复位再开始 ... 219 停止了.
这个结果好像比较令人失望?!
先上个测试照片 (208MHz)

睡觉, 明天再研究

使用特权

评论回复
5
戈卫东| | 2015-9-11 02:00 | 只看该作者
不可能只有这么点富余吧。。。。。。。。

使用特权

评论回复
6
戈卫东| | 2015-9-11 02:01 | 只看该作者
有可能是这个板不够好

使用特权

评论回复
7
airwill|  楼主 | 2015-9-11 07:05 | 只看该作者
戈卫东 发表于 2015-9-11 02:00
不可能只有这么点富余吧。。。。。。。。

上面4楼描述有误, 是每加一次 0.5MHz.
从手册看,  PLLN 到达432 以上会不稳定, 那么我减小 PLLM , 把 PLLN 降下来, 到稳定的数值后, 会升到多少频率呢?

使用特权

评论回复
8
airwill|  楼主 | 2015-9-11 21:20 | 只看该作者
设置
RCC_OscInitStruct.PLL.PLLM = 8;
  RCC_OscInitStruct.PLL.PLLN =180;
这样每加一次 PLLN, 提升 1MHz.  还是测到最高 219MHz;
那么 APB2 的分频设置对这个频率有影响吗? 将 APB2 设置成了1分频, 测得最高频率为 214MHz. 看来还是有些影响的.
总结, 本次测试超频能力, STM32F446 的性能并不高, 只有 20% 甚至都不足的情况.
    另外, 关于 HAL 库的一点看法, 以前我只是感觉这个库象个玩的工具. 居然现在直接驱动库都不提供了, 看来 ST 对 HAL 的期望很高, 但使用中包括 MX 集成工具还有些缺陷, 比如我选择和设置了 RTC 引脚, 但却加入驱动库文件, 时钟配置工具很多都点不了, 还不能完全使用. 从以前的外设库移植到 HAL 库, 还是有不少改动, 不过对寄存器操作基本还是支持的.
(本测试只对我手头的 NUCLEO F446RE.

使用特权

评论回复
9
gaoyang9992006| | 2015-9-11 21:29 | 只看该作者
超频个10%还是比较稳定的。太多了,就超过了设计的硬件响应速度能力了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎进入 TI 模拟技术论坛!

556

主题

17724

帖子

884

粉丝