STM8L101 与 STM8S103区别
工作需要,渐渐的开始熟悉STM8L101这款超低功耗的芯片了,呵呵...
不看不知道,一看吓一跳,这玩意手册上标明的功耗远远低于STM8S103。我们采用的还是延续着TSSOP20管脚的封装。具体的芯片资源在手册首页都有详细说明。
STM8L10x与STM8L15x外设图如下:
硬件方面: STM8L101跟STM8S103来说,外设内存映射,时钟,中断,管脚功能,电源管理都有了较大区别。有完全兼容的,也有 不完全兼容的,当然也存在完全不兼容的模块。WWDG,ADC都已经被裁减了。
如下图: 完全兼容的模块有 STM8核心,调试接口,POR(掉电复位),电压调节器,LSI,HSI,独立看门狗,定时器,IR(RC5红外接口)
下图: 不完全兼容的模块 特别注意中断功能,选项字节
下图: 完全不兼容的模块
软件方面: 主要体现在固件库,stm8l系列有自己的固件库,版本为 stm8l10x_stdperiph_lib v1.1.0,STM8L自身的演示版程序也是使用这个库。管脚定义的大小写也发生了变化。
如: GPIO_PIN_0 ---- stm8s FW的写法
GPIO_Pin_0 ---- stm8l FW的写法,比较类似与STM32库的风格
如果不使用库文件编程,而是直接操作寄存器,可在 "C:\Program Files\Stmicroelectronics\st_toolset\include 找到stm8l101.h文件,这个文件定义了STM8L101所使用的外设,内存映射关系。
还有就是文件的命名风格有些变化,stm8s_gpio.h -> stm8l10x_gpio.h
具体细节方面,可参考stmcu.org上的AN3139 STM8L移植与兼容性指南。
移植细节:
从STM8S103移植到STM8L101首先考虑时钟,兼容性指南上说明了在STM8L101上已经完全做了改变,如下图:
STM8L时钟树:
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,这就导致了在应用时需要注意时间的设置。
如下图,进行对比。
STM8L101 AWU延时情况:
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. 软件需要考虑时钟,定时,中断,电源功耗等方面因素。
STM8L101 与 STM8S103区别相关推荐
- STM8S103 105唯一序列码的读取
http://blog.sina.com.cn/s/blog_542bad910101skfs.html 看下面 以上是两个STM8S103的唯一码,从图中可看出,重点为前4字节有所区别,后面的批号要 ...
- STM8S103之ADC
如何快速了解ADC,查看Reference manual中ADC registers章节,初步了解到ADC ADC buffer register和ADC data register Analog W ...
- RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...
- C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别
最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...
- gcc 和 g++ 的联系和区别,使用 gcc 编译 c++
GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...
- Python2 与 Python3 区别
Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...
- Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别
Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...
- HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)
TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...
- python二进制打开(rb)和文本格式打开(r)什么区别?
使用 open() 函数以文本格式打开文件和以二进制格式打开文件,唯一的区别是对文件中换行符的处理不同. 在 Windows 系统中,文件中用 "\r\n" 作为行末标识符(即换行 ...
最新文章
- python 学习
- SyntaxHighlighter Evolved高亮插件的编程语言及语言别名对照表
- system 后门 php,php后门的编写
- php生成不重复时间戳,PHP获取时间戳和微秒数以及生成唯一ID
- java8 stream多次map_java8streamapi:如何将列表转换为在列表中具有重复键的MapLong,Set?...
- 用java输出真值表离散数学_离散数学 第一章 命题逻辑 1-4真值表与等价公式
- java 微信导航栏_微信小程序教程系列之设置标题栏和导航栏
- mybatis mysql upsert_SpringBoot2.3.4+Mybatis+Phoenix操作HBase2.0.6
- Xcode6 部署iphone4s出现的问题 No architectures to compile for
- 安卓psp模拟器联机教程_安卓PSP模拟器评测:蜘蛛侠2
- audio语音播放组件
- 无线路由器实现网络接入
- 硬核干货 | 人脸识别的原理是什么?
- 网页添加 Live2D 看板娘
- 从零开始玩转Franka Panda机器人
- 科技圈的“三座大山”正在崩塌中。。。
- Dragonfly——一款功能强大的在线家庭装潢设计软件
- 今日头条2018 坐标
- Mysql高级-应用优化,查询缓存优化,锁
- 【鸿蒙】鸿蒙操作系统应用开发入门级初体验
热门文章
- nextjs如何启动https服务
- 永磁同步电机矢量控制二更
- 0x0000007b 电脑蓝屏的解决方法
- MVC模型和MTV模型
- 智能公交电子站牌为你报告实时交通信息,让出行更方便
- sublime text4在linux(ubuntu)下的安装及配置;sublime text4在linux(ubuntu)安装后输入lisence没反应;.desktop文件干嘛的
- Axure9 实现点击获取验证码倒计时功能
- EtherCAT总线伺服电机/一体化伺服电机如何清除历史报警
- 基于PLC/单片机控制的光机电一体化系统,QY-JDYT05
- 网络仿真工具eNSP安装教程