STM32H7系列的单片机是ST这几年新推的一个系列,主频都比较高,适合做一些复杂的应用。H7系列的浮点运算性能也是比较强悍的,可以胜任一些信号处理的任务,当然做一些多媒体处理也是不在话下的。
点此移步系列文章目录
在这里博主使用了一个价格非常便宜的STM32H750VBT6,这个是一个100Pin的芯片。H750系列仅拥有128Kbyte的Flash空间,但是可用的RAM空间还是比较大的,有864Kbyte(总共是1M)。
当然作为一个Cortex M7内核的处理器自然支持一些指令缓存(ICache)和数据缓存(DCache),这里面就需要注意Cache一致性的问题。
H750外设是比较丰富的,CubeMX一打开可以看到一长串乱七八糟的外设看起来就有点头疼,但是随着对H7的熟悉这些外设都会称为产品设计的得力助手,以下捡出一些有代表性的分享一下。
在这里特别提到了SDIO,因为这个和其他系列的真不一样。
可以看到STM32H7系列的SDIO最高支持UHS-I的卡,这个在其他系列里面是没有的。这是什么样一个概念,大家可以看以下下表
标准 | 速度 | 说明 |
---|---|---|
Class 2 | 读写速度 最低 2Mbyte/s | 老标准 |
Class 4 | 读写速度 最低 4Mbyte/s | 老标准 |
Class 6 | 读写速度 最低 6Mbyte/s | 老标准 |
Class 10 | 读写速度 最低 10Mbyte/s | 老标准 |
UHS-I | 读写速度 最高 104Mbyte/s | 新标准,H7支持 |
UHS-II | 读写速度 最高 312Mbyte/s | 新标准,H7不支持 |
UHS-III | 读写速度 最高 624Mbyte/s | 新标准,H7不支持 |
读写速度提上来了可玩性当然也有了很大提升。当然H7的性能也为这些拓展应用提供了强有力的保障,尽管相比A系列的或者是某些MIPS处理器、RISC处理器而言性能还是比较鸡肋的,但是不管怎么说,在成本敏感的产品上面H750还是很香的。
注意H7支持UHS-I需要外部电路的支持,UHS-I卡子是1.8V电平。但是不管怎么说聊胜于无。
这种高性能的外设通常而言都有一个非常讨厌的毛病:眼花缭乱的配置搞得大家一脸懵逼。但是得益于HAL库的高度封装,这个SDIO使用起来非常简单,再加上H7系列的SDIO有一个专属的DMA通道,使用起来简直比Arduino还Arduino。
博主手上有几张SDHC,SDXC的卡片,实测SDHC C4的卡片速度大概保持在 5MB/s写,11MB/s读,SDXC配合外部硬件做到了45MB/s写,96MB/s读。当然带上文件系统以后速度就不会这么快了
HRTIM是一个全新的定时器,全名高分辨率定时器。这个定时器在STM32F334、H74/H75、G47/G48系列里面都有。这个定时器的优势在于能定制几乎所有想要的波形,同时连带了各种触发信号:ADC触发、DAC触发、比较器触发,这个用在数字电源上面就非常香了。
不过遗憾的是H7系列的HRTIM相比F334、G47、G48的HRTIM就有些捉襟见肘了
可以看到另外几款通过一些特殊的方式都能够将HRTIM的频率提到GHz级别,唯独H7还是MHz,这个还是很遗憾的。高频率的HRTIM优势很明显,就是能够获得更高的占空比分辨率。
例如博主需要做一款Buck电源,Buck电源的降压比是和占空比有关系的,利用伏秒平衡可以得到
V o u t = D × V i n V_{out}=D\times V_{in} Vout=D×Vin
占空比分辨率越高的电源调节更精确更细腻,若配合高速的ADC和强有力的数字控制系统,可以做成一个响应速度非常快的电源。
再者博主需要控制一个电机,当电机转速较高的时候占空比分辨率就显得捉襟见肘了,此使HRTIM将派上大用场。
尽管H7的HRTIM跟前几个比完全不占优势,但是480兆的主频却是其他系列微控制器望尘莫及的。
SPDIF很多朋友可能都没用过,这个是SONY和PHILIPS联合定制的音频接口,采用光纤传输。H7上有4路输入,当然这4路信号不一定能同时处理的过来,但是总归是有的。SAI这个有些朋友应该用过,用来输出一些音频信号,例如I2S信号,SPDIF信号。
SAI与I2S外设的区别在于I2S外设是SPI模拟出来的,占用一个SPI通道,而SAI是独立的。现在看起来,H7还是一个略“发烧”的MCU,高性能可以做一些解码、数字信号处理的工作,而高速的SDIO正好配合了这种大码率音频文件的读取,确实非常爽。
H750也和其他系列的控制器一样可以外部输入音频时钟,但是非常令人不爽的是这个输入又与SDIO1的D1管脚复用了…
当然题外话是,合格的发烧音源需要良好的相位噪声,就这一点而言H7似乎差的很远。抛开发烧这两个字,做一些常规音频应用,H7绝对是够格的。
H7的QSPI是支持内存映射的,也就是说我们有办法让H7的程序运行在QSPI上,这显然弥补了H7天生的Flash空间不足。H7的QSPI最高可以到133MHz,当然这么高的速度也需要那个芯片支持才行,同时也要良好的PCB设计。但是这两点都是比较容易达到的。
现在我们看到了一个问题:代码空间是够了,RAM不够了,可能我们需要QSPI的PSRAM吧。
在这里还是要吐槽一下,令人非常不爽的引脚复用:QSPI BANK2的CK与SDMMC1的数据又复用了…而BANK1的管脚分布简直变态,这让咱怎么拉线?
由于博主能力有限,目前只用到这么几个外设,其他外设的优点还需发掘。
这是未来一个月的写作计划,博主每天都会抽时间填填坑,大家可以关注一下~