STM32H7不完全填坑教程系列

STM32H7系列的单片机是ST这几年新推的一个系列,主频都比较高,适合做一些复杂的应用。H7系列的浮点运算性能也是比较强悍的,可以胜任一些信号处理的任务,当然做一些多媒体处理也是不在话下的。

点此移步系列文章目录

在这里博主使用了一个价格非常便宜的STM32H750VBT6,这个是一个100Pin的芯片。H750系列仅拥有128Kbyte的Flash空间,但是可用的RAM空间还是比较大的,有864Kbyte(总共是1M)。

当然作为一个Cortex M7内核的处理器自然支持一些指令缓存(ICache)和数据缓存(DCache),这里面就需要注意Cache一致性的问题

H750外设是比较丰富的,CubeMX一打开可以看到一长串乱七八糟的外设看起来就有点头疼,但是随着对H7的熟悉这些外设都会称为产品设计的得力助手,以下捡出一些有代表性的分享一下。


I. SDIO

在这里特别提到了SDIO,因为这个和其他系列的真不一样。
STM32H7不完全填坑教程系列_第1张图片
可以看到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

HRTIM是一个全新的定时器,全名高分辨率定时器。这个定时器在STM32F334、H74/H75、G47/G48系列里面都有。这个定时器的优势在于能定制几乎所有想要的波形,同时连带了各种触发信号:ADC触发、DAC触发、比较器触发,这个用在数字电源上面就非常香了。

不过遗憾的是H7系列的HRTIM相比F334、G47、G48的HRTIM就有些捉襟见肘了

STM32H7不完全填坑教程系列_第2张图片
可以看到另外几款通过一些特殊的方式都能够将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与SAI

SPDIF很多朋友可能都没用过,这个是SONY和PHILIPS联合定制的音频接口,采用光纤传输。H7上有4路输入,当然这4路信号不一定能同时处理的过来,但是总归是有的。SAI这个有些朋友应该用过,用来输出一些音频信号,例如I2S信号,SPDIF信号。

SAI与I2S外设的区别在于I2S外设是SPI模拟出来的,占用一个SPI通道,而SAI是独立的。现在看起来,H7还是一个略“发烧”的MCU,高性能可以做一些解码、数字信号处理的工作,而高速的SDIO正好配合了这种大码率音频文件的读取,确实非常爽。

H750也和其他系列的控制器一样可以外部输入音频时钟,但是非常令人不爽的是这个输入又与SDIO1的D1管脚复用了

当然题外话是,合格的发烧音源需要良好的相位噪声,就这一点而言H7似乎差的很远。抛开发烧这两个字,做一些常规音频应用,H7绝对是够格的。


QSPI

H7的QSPI是支持内存映射的,也就是说我们有办法让H7的程序运行在QSPI上,这显然弥补了H7天生的Flash空间不足。H7的QSPI最高可以到133MHz,当然这么高的速度也需要那个芯片支持才行,同时也要良好的PCB设计。但是这两点都是比较容易达到的。

现在我们看到了一个问题:代码空间是够了,RAM不够了,可能我们需要QSPI的PSRAM吧。

在这里还是要吐槽一下,令人非常不爽的引脚复用:QSPI BANK2的CK与SDMMC1的数据又复用了…而BANK1的管脚分布简直变态,这让咱怎么拉线?


由于博主能力有限,目前只用到这么几个外设,其他外设的优点还需发掘。


系列博文目录

  1. STM32H750 GPIO操作
  2. STM32H750外部中断
  3. STM32H750 串口收发实现
  4. STM32H750 定时器中断
  5. STM32H750 SDIO的使用与FATFS移植
  6. STM32H750 I2S配置与简易播放器实现
  7. STM32H750 I2C配置与EEPROM读写
  8. STM32H750 SPI配置与OLED显示
  9. STM32H750 SPI配置与温度传感器通信
  10. STM32H750 A/D转换配置
  11. STM32H750 D/A转换配置
  12. STM32H750 PWM输出及其快速配置
  13. STM32H750 HRTIM的配置

这是未来一个月的写作计划,博主每天都会抽时间填填坑,大家可以关注一下~

你可能感兴趣的:(STM32H7)