首页 > 评测 > 除了主频提升,STM32H7还为我们带来了什么?——Nucleo-H7全网首评

除了主频提升,STM32H7还为我们带来了什么?——Nucleo-H7全网首评

H7   STM32   NUCLEO   ST   Cortex-M7   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • 这就是最强ST MCU的评测。

STM32H7的总线框架如下

rId31.jpg

第二个主要的变化是内存映射的改变,STM32H7引入了更大的物理存储空间,相应的内存布局也做了适当的调整,新的AXI总线访问的SRAM空间被加进来了,另外原来在STM32F7上的SRAM1及SRAM2被扩展到SRAM4,即新增了SRAM3及SRAM3访问空间,最后就是原来的DTCM及ITCM空间地址访问范围都加大了。大致的空间比较如下

rId32.jpg

其它一些外设的变化如MDMA(master direct memory access)是新增,EXTI及VDD的变化等就不一一详述了,可以参考官方文档进一步了解。

硬件的变化相应也带来了程序设计上的一些细节调整,好在STM32CUBEMX为我们简化了其中的许多细节,在接下来的软件评测部分为详细介绍。

接下来上个电,准备一根Micro USB转接线,连接电脑给开发板上电。默认的固件用到了Adafruit 1.8 TFT Shield,手头没有,只能看灯闪啊闪,按下USER按键,3个用户LED依次切换,同时闪烁频率也会变化。下次有机会得准备一块Adafruit的屏,似乎NUCLEO的新产品都使用了这个扩展板,就是下面这个

rId33.jpg

看起来蛮高大上,有LCD,还有SD卡,另外还配置了一个游戏摇杆,固件库的示例有很多都是基于该扩展板的。

接下来要使用STM32CUBEMX来构建一个演示工程,点个灯,问声好!也算是MCU界的Hello world程序。

启动STM32CUBEMX,选择STM32H743ZI MCU,查看原理图,LD2连接的是PB7,UART3连接的分别是PD8及PD9,基本设置大家都耳熟能详,此处就不赘述了。

需要注意的是,开发板MCU的时钟源来自ST-LINK上的时钟的MCO输出,固定是8MHz,所以在CUBEMX里设置H7的时钟源时要选择BYPASS,时钟源的配置如下

rId34.png

前面提到了H7硬件的一些变化,其中就包括D1、D2及D3的划分,所以这里的时钟源也多了几个东西。一是HPRE Prescaler,其次是DxPPRE的划分,分别对应不同区域的时钟输出,具体外设的时钟设定,还需要参考实际的应用,不过似乎目前官网上还找不到STM32H7的DM及RM,估计稍晚应该会放出来。

Hello world的主要代码如下

rId35.jpg

编译、上传代码后,在终端窗口里会看到输出的Hello, STM32H7信号,LD2也开始闪烁!

这不是重点,这个工程接下来将作为跑CoreMark程序的框架,关于CoreMark的移植,请参考ST官方的文档,说得很详细了。笔者将以前移植的东西保存在github上,只需要做几处简单的更改就可以移植到ST的各系MCU上,也算是减轻农民负担作了一件实事。

测试结果如下

rId36.jpg

优化参数为-O3 -Otime,看到测试得分为1625,与官方宣称的2020差距甚大,这是在MDK上编译得到的测试结果,根据以前的实验,在IAR上编译并优化后测试的结果与官方宣称的结果非常接近。

开发板上还集成了ETH接口,在NUCLEO上算是值得一试的好东西了!毕竟MCU不上网,就好似鸟儿没翅膀。

HAL库里有个示例,使用LWIP来搭建一个简单的HTTP SERVER,该DEMO位于固件库的Application目录下,如下

rId37.jpg

偷个懒吧,毕竟从头开始建立一个HTTP SERVER程序的工作量可不小,就算是使用CUBEMX来帮忙,也不是件易事。检查下代码发现默认打开了DHCP配置,一行代码都不用改,爽!

直接打开LWIP工程,编译,上传到开发板,打开终端串口,等半天,没有看到获取IP地址的信息!仔细检查下源代码,原来根本没有配置串口输出信息的功能。看来ST的工程师也审美疲劳了,忘记加上串口输出信息了,要知道使用DHCP来获取IP地址,如果不知道设备获取的IP地址,那可真抓瞎了。

  • 本文系21ic原创,未经许可禁止转载!

网友评论