找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7515|回复: 0
打印 上一主题 下一主题
收起左侧

STM8系列MCU开发应用过程中的常见问题

[复制链接]
跳转到指定楼层
楼主
ID:98618 发表于 2015-12-7 00:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
工程师在做STM8系列的应用开发中,难免会遇到各种各样的问题,尤其初次使用。这里结合个人理解及跟有些工程师的沟通交流,抽空整理一些常见的问题,希望帮到更多的工程师。文字中难免有描述不到位的地方,还望谅解。若有错误的地方,还忘不吝赐教,用微信或QQ方式都可以。

关于常见问题的汇总,大体分二部门,分别是与调试编译环境有关的问题与芯片资料理解相关的问题。本篇是讲的后者。

1、option编程问题;

对于STM8系列MCU,经常会有些OPTION项需要配置。配置这些OPTION,可以通过调试或烧录工具进行,也可以通过用户自己软件编程实现。

对于绝大部分OPTION项,都是由两组数据组成,一组是原码【OPT】,一组是反码【OPTn】,这样做的目的主要是防止轻易被改动。结果有的人在手动软件配置时,只写原码,忘记或忽视了反码的编写,使得相应OPTION项的更改没有生效,自己还懵然不知。

2、GPIO复用配置问题;

STM8系列MCUGPIO很多是具备复用功能的,其中部分复用功能必须配合管脚的重映射才能实现,即配备相应的AFR寄存器及选项位。

由于很多初次使用该类芯片的工程师忽略了这点,经常发现自己代码写的非常漂亮,可有些功能就是不对,翻来覆去怎么查错也找不到原因。正是因为忘记了相应GPIO脚的REMAP配置。比如下方图形中方框中标注出来的复用功能,就得使用REMAP才能生效。

3、真开漏脚的电平问题;

STM8 MCU系列芯片中,有些管脚是真开漏脚,即下面GPIO模块方框中的P-BUFFER和那个保护二极管都没有使用。这种情况下,它如果没接上拉电阻的话,是不能输出高电平的。经常有人在此类端口没接上拉的情况下,叫嚷着没法输出高电平,比方那些硬件I2C接口。


4、flash编程相关问题;

STM8系列MCU对主程序FLASH区或数据EEPROM区进行写操作前,必须执行开锁操作。但对数据EEPROM区和程序FLASH区在开锁密钥及写入顺序方面并不一样,另外开锁和上锁使用到的寄存器也不一样。有的人以为二者是一样也经常导致问题。尤其是如果操作寄存器,看资料不细致的话,容易掉进坑里不自知。【当然如果用ST官方库,这里就不太容易出错】

顺便提下,对于OPTION的编程跟对EEPROM数据的编程处理方式一样。


?
5、外部中断应用问题;

STM8S芯片与STM8L芯片在外部中断EXTI方面有些不一样。一是STM8S芯片的外部中断没有响应中断标志,进中断后无清中断请求位的说法,而STM8LEXTI则有相关关外部中断请求标志,进中断后如无特别需要得清除相关中断请求位。

另外,STM8L芯片的EXTISTM8S设计得稍微复杂点,或者说多了些外部中断处理方式。STM8L芯片在端口中断的基础上,还增加了线中断,即某个GPIO口线触发的外部中断。

再提个非常频繁发生的问题,外部中断触发方式变更的话题。经常有工程师反映,说更改外部中断的触发方式不生效或者说触发方式无法变更而郁闷不已。

这里以8S芯片为例,对于GPIO外部中断的触发方式,是由相关寄存器控制的。默认值是0X00,对应口线的触发方式是下降沿或低电平触发。如果要更改相应口线的触发方式,下面红色方框内文字写得非常清晰。【可能个别工程师对英文不太敏感】

也就是说,想要更改口线的外部中断触发方式的话,必须先执行关中断指令,即将CCR寄存器里的L0\L11,然后再实施修改操作,否则是无法让更改生效的。

6、STM8L芯片写EEPROMDMA的冲突问题;

如果STM8L芯片进行EEPROM擦写操作的同时发生DMA操作的话,会导致系统进入莫名其妙的死机状态。该问题在勘误手册里有提到,最简捷的办法就是将二者错开,不要同时出现二者的操作。其它细节可以参考有关芯片的勘误手册。

7、STM8S105芯片有关PC4的复用功能重映射到PD7的问题;

对于STM8S105系列芯片,从数据手册上往往会看到PC4脚的TIM1_CH4的功能可以被重映射到PD7脚。比方说你希望实现PD7脚上的TIM1_CH4PWM输出,从PC4实现PD7的映射是没问题,但映射完后,PD7输出PWM的同时PC4也输出PWM。这样有时会出现开发者不希望看到的情况,因为映射完后如果还希望PC4做别的功能的话,那就麻烦。

关于这点,这里应该是个BUGSTM8S105芯片的勘误手册有描述,其实这个映射的最佳用途是在44脚的8S105芯片上,此时那个PC4是没有了的,映射后也不会出现上面所说的2个脚出现同样功能的情况。关于这点要注意。

8、Eeprom编程与程序执行问题;

STM8芯片中,有些小容量芯片是不支持在写EEPROM的同时运行FLASH里的代码的,即不支持RWWread while writing】。比方8S0038s103就不支持。最常见的情况就是,这类芯片在做EEPROM写操作时,中断不能得到相应的响应而让工程师一头雾水。当然其它具有RWW功能的MCU是不会出现这个问题。

9、FLASH运行速度与CPU运行速度匹配的问题;

一般来讲,CPU的运算速度要快于甚至远远快于总线访问程序数据的速度。当你使用STM8S20X系列芯片且时钟高于16M时,需要在相关配置寄存器里做一个关于等待周期的配置,不然的话,你的开发可能要增加新的刺激因素了。


?

10、STM8S芯片GPIO复用AD功能后无法回到GPIO状态的问题;

这点就不在这赘述了,有兴趣的话可以在我的微信公众号里查看历史消息或在我的QQ博客里查找相关文字。

其实,开发调试过程中会遇到很到各式各样的问题,上面只是做个抛砖引玉式的介绍或提醒。上面提到的问题,很多人少则折腾半天,多则折腾两三天不等。STM8产品开发工程中除了这些跟芯片技术资料理解有关的问题外,很多问题还C语言基础、电路硬件基础等有很多关系,这里就没法再延伸了。

本文出自milershao大师

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表