历史上的今天
今天是:2025年01月29日(星期三)
2020年01月29日 | STM8L101和STM8S103差异对比
2020-01-29 来源:eefocus
工作需要,渐渐的开始熟悉STM8L101这款超低功耗的芯片了,呵呵。。.
不看不知道,一看吓一跳,这玩意手册上标明的功耗远远低于STM8S103。我们采用的还是延续着TSSOP20管脚的封装。具体的芯片资源在手册首页都有详细说明。
下图: 不完全兼容的模块 特别注意中断功能,选项字节

下图: 完全不兼容的模块

软件方面: 主要体现在固件库,stm8l系列有自己的固件库,版本为 stm8l10x_stdperiph_lib v1.1.0,STM8L自身的演示版程序也是使用这个库。管脚定义的大小写也发生了变化。
如: GPIO_PIN_0 ---- stm8s FW的写法
GPIO_Pin_0 ---- stm8l FW的写法,比较类似与STM32库的风格
如果不使用库文件编程,而是直接操作寄存器,可在 “C:Program FilesStmicroelectronicsst_toolsetinclude 找到stm8l101.h文件,这个文件定义了STM8L101所使用的外设,内存映射关系。
还有就是文件的命名风格有些变化,stm8s_gpio.h -》 stm8l10x_gpio.h
具体细节方面,可参考stmcu.org上的AN3139 STM8L移植与兼容性指南。
移植细节:
从STM8S103移植到STM8L101首先考虑时钟,兼容性指南上说明了在STM8L101上已经完全做了改变,如下图:
STM8S时钟树:

很需要注意的是,STM8L101只有HSI和LSI时钟,而且只有HSI能做为主时钟,LSI时钟的频率也从128Khz变成了38Khz,导致了AWU功能在做定时唤醒时,需要调整延时时间的设置,还有外设的时钟需要手动开启,默认情况与STM8S103不一致,不再是打开状态。下图:

其次是中断方面,中断向量表已经发生巨大改变。
STM8L101 中断向量表:

STM8S103中断向量表:

中断控制方式也有重大调整,增加了端口标志位寄存器,配置中断触发方式寄存器,中断触发方式新增对应0~7个IO口的触发,另外就是GPIO端口本身的触发方式。至于使用哪一种触发方式,在EXTI_CONF进行配置。
STM8L101中断寄存器:

STM8S103中断寄存器:

所以中断方面是一个很需要注意的,可能会导致程序崩溃。或是进中断后出不来。 具体参考手册说明。
再者就是AWU唤醒功能,这是可选的,为了低功耗,这又是必须的。
AWU使用LSI为其提供时钟,STM8S103采用128Khz,而STM8L101转而是38Khz,这就导致了在应用时需要注意时间的设置。
如下图,进行对比。
STM8S103 AWU延时情况:

如果需要2S的延时,对于STM8S103只需要设置AWUTB为0xD,APR分频64即可得到2.048S的延时,而在STM8L101里面,则需要设置AWUTB为0xB,APR分频64,这样得到1.7s的延时,所以还需要加上27ms左右延时,才能勉强得到2s延时。这也是设计时需要考虑的。
定时器方面,与STM8S103区别不大,主要是因为时钟都是采用HSI,不用做修改都能正常使用。
另外STM8L101还有红外接口,BEEP,SPI,I2C等功能,需要了解的东西还有很多,后续就是具体测量功耗了。
总结:
1. STM8L101对比STM8S103有很多优点,电压范围更宽,功耗更低,裁减了一些外设,窗口看门狗,外部晶振等。
2. 移植方面,需要从硬件和软件两方面入手,更多的是软件操作上。
3. 软件需要考虑时钟,定时,中断,电源功耗等方面因素。
史海拾趣
|
--希望能对大家有帮助 --**************************************-- --程序名:任意整数分频,占空比为50% --**************************************-- library ieee; use ieee.std_logic_1164.all; entity clk_div is generic(n:integer:= ...… 查看全部问答> |
|
我写了一个模块,已经编译通过,运行没有问题 可是我希望进一步再模块中使用Glib库的API的时候,加入 #include 编译模块的时候怎么样都找不到glib.h 我知道模块编译的时候是在系统空间编译的, 我在用户空间引用glib.h就没有问题, 那么怎 ...… 查看全部问答> |
|
我修改 power button 驱动,注释掉了PowerOffSystem(); 可仍然有效果,很奇怪 我修改 power button 驱动,注释掉了PowerOffSystem(); 可仍然有效果,很奇怪 // Soft reset and standard suspend-resume both start with suspend for now. &nbs ...… 查看全部问答> |
|
uCOS-II在STM32的移植,我做了N天了,可是uCOS就是在我的板子上运行不起来,实在让我很纠结!在此发帖,希望有人帮帮我。 前几天开始uCOS在STM32的移植,刚开始移植编译老是不通过,找了五天,看了官方的移植例子,实在看不懂,又去 ...… 查看全部问答> |
|
我有个nxp p89lpc9221芯片,用来控制7段数码管显示,用ICP口编程。 我现在设置p0.0,p0.1,p0.2为开漏输出;P0M1 |= 0x07; P0M2 |= 0x07; 三个脚都上拉到3.3v; 然后设置三个脚输出为0: sbit p00 = P0 ^ 0; sbit p01 = P0 ^ 1; sbit ...… 查看全部问答> |
|
基于stm32F103+enc28j60+路由+家庭宽带的物联网全套资料 基于stm32F103+enc28j60+路由+家庭宽带的物联网是参照野火大神的例程以及自己以前建网站经验,主要在STM32内编写一个很小的网页服务器,只有一页,在网页中可以实现LED控制,以及温度、湿度在网页上显示。   ...… 查看全部问答> |
|
Unable to handle kernel paging request at virtual address的产生原因 问题: 我在移植linux-2.6.14 到s3c2410时也出现了类似错误,先移植好网卡后,在移植LCD,出错 s3c2410_bwscon value 22111910 s3c2410_bankcon2 value 7ffc ax88796 extIRQ = 12, IRQtype= 4 Unable to handle kernel paging request at virt ...… 查看全部问答> |
|
本帖最后由 s364147694 于 2014-4-7 14:15 编辑 一次ADC采样转换时间是 采样时间+转换时间,公式是= (4 x ADC12CLK x N) + ( 13 xADC12CLK/Fadc12clk)) 但是采样的时钟和转换始终是一个吗??公式里的ADCLK是指分频后的时钟还是没分频的?? 最 ...… 查看全部问答> |
|
本帖最后由 a523248304 于 2014-11-7 11:56 编辑 别人发给我的,分享给大家,混个脸熟。。。 另外工程师需要PCB封装、原理图元件库、典型应用电路可以去“搜芯网”找,找不到就向他们发布需求,他们工程师会提供给你。。。网址就不发在论坛 ...… 查看全部问答> |







