16. STM8单片机介绍

什么是STM8微控制器

STM8是一款意法半导体制造的高性价比、低功耗的8位微控制器。在简单的应用中,可以取代Arduino或者ATMEGA。

8位微控制器已经存在很长一段时间了,随着更加强大的芯片普及,8位微控制器渐渐不再成为大家的焦点, 但是,8位的微控制器一直没有完全离开我们的视野。

像臭名昭著的8051,到目前为止它仍然非常活跃,部分原因可能是因为它的版权已经过期, 现在任何人都可以免费使用它或者是融入到自己的产品中去(像国内的STC)。

多年以来出现过很多类型的其他8位微控制器家族,但是8位微控制器真正的繁荣是伴随着Arduino的推出和整个黑客DIY热潮。 毫无疑问你一定熟知Atmel的AVR系列或者Microchip的PIC系列, 由Arduino项目推广的AVR系列或者PIC已经逐渐占据了业余爱好者的市场, 并且已经形成了成熟的商业产品,你可以在购物网站(原文eBay)上搜索Arduino模块试试看!

随着这种现象,毫无疑问其他芯片制造商自然想分一倍羹,意法半导体的STM8系列就是其中的一员。 你可能已经知道该公司是一家通用半导体制造商,并且它们之前推出过非常流行的STM32系列。 虽然STM8还没有成为主流,但是不论如何,它非常便宜并且使用广泛。 还有一些STM8的变体用于汽车电子,但是这是不我们接下来关注的系列。

STM8 vs ATMEGA328P

  • 功能比较
    Arduino系列主要基于AVR,像ATMEGA328P,它运行在16MHz的晶震上, 具有32kB的FLASH、2kB的RAM和一些必要的外设接口像定时器、串口、SPI、IIC等等。
    STM8我们以STM8S103F3为例,它具有ATMEGA328P类似的外设,但是内存空间要小得多(8kB FLASH, 1kB RAM)。 虽然它无法完全取代ATMEGA,但是在很多时候,因为它成本低所以使很多高性价比的产品成为现实, 60美分做一个SPI to Neopixel,没问题!

  • 架构差异
    ATMEGA的架构中有一个令人不快的缺陷: the Harvard memory design(哈佛内存设计)。 FLASH和RAM以重叠的方式共享相同的地址空间,这也许是为了节省地址位(address bit), 导致了相同的地址可能是FLASH或者RAM二者之一。这就是导致烦人的pgm_read_byte()原因—— 它需要一个特殊的汇编指令LPM从FLASH读取数据,甚至连avr-gcc的高层抽象都没有解决这个问题, 并且在使用EEPROM的时候也会面临同样的问题。不过这并不致命,因为我们不会经常这样做。
    可能受STM32启发的,STM8显示为冯诺依曼。因为两个存储器映射到了一个线性地址空间,没有重叠。 内部有两条总线,但它的处理是透明的。 因此,您可以无缝地将常量存储在程序存储器中,甚至可以从RAM运行代码。 这个优势可能不是game changer(规则改变者),但它对调试有帮助(如果您使用专有的Windows IDE)。

最小系统板

下面是我使用的开发板的功能图,它搭载STM8S103F3P6芯片 它的体积非常小,类似Arduino Pro Mini。 注意不要被上面的USB接口欺骗了,它并没有USB接口,也没有板载下载器,只能用来供电。 虽然有虚拟USB的可能性,但该板没有必要的12MHz晶振,并且DP/DM引脚(USB的引脚)也很难接入。 不过并不是说这个想法不值得一试!

这是板子的顶部和底部的实际照片

关于供电

从板子的背面我们可以看到板载的3.3v降压芯片,我们可以通过5V那个引脚供电,也可以通过USB接口供电, 可惜的是USB的数据线被悬空了。

5V输出脚和3.3V输出脚都可以用作外设供电,但是需要注意的是,5V引脚直接与电源相连,并没有5V稳压, 如果你使用USB供电,可以得到一个近似5V的电压,否则需要自己链接5V稳压。

如果您打算从3.3V输出引脚驱动比较耗电的东西,请记住稳压器上没有散热器, 所以如果使用较高的输入电压或过高的电流,它很容易变热。 对于Neopixels等比较耗电的设备,我建议您直接将它们连接到5V引脚(如果您使用USB供电板)。

还有一种供电的方法,就是通过编程器(STLink)供电,但是请非常注意,不要在使用比较耗电的外设的情况下使用编程器供电, STLink里面只有一个非常小的电流调节器,非常易损坏。

板载LED

最小系统板上有两个LED,一个是电源指示灯,另一个链接到B5。新买的板子会内置一个blink测试程序, 我们可以使用USB供电查看新买的板子是否正常工作。

编程设备

要给STM8单片机烧写程序,你必须有一个支持SWIM接口的ST-Link编程器,ST-Link同时可以给STM32烧写程序, 如果以后STM8满足不了你的需求,你也可以使用它烧写STM32。

声明

这篇文章是译文,原文地址点击这里,原作者是Ondřej Hruška。 此译文已获取原作者邮件授权,请仅用于学习用途,不允许转载,谢谢合作!