你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8 使用 24MHz 外部晶振无法正常运行

[复制链接]
zero99 发布时间:2018-3-27 11:58
前言
! B8 {, @* c: G) r- H/ @目前很多用户在使用 STM8 的时候使用了 16MHz 的内部振荡或者外部晶体来作为时钟源。事实上,STM8 家族中有些系列是支持最高 24MHz 主频的,比如 STM8S207、STM8AF52,等等。那么,需要更快的运行速度时,是否只需要使用更高的主频就可以直接运行了呢?
0 l3 `- z2 ~% y
7 V! w8 M7 p4 ~$ d$ J0 b6 \6 U5 a问题
/ Y/ R$ U' ^8 U* Q3 f某客户在其产品的设计中,使用了 STM8AF52A9。客户工程师称其一段以前已经验证过的代码,使用 STVP 下载后无法正常运行。但是他试过在 IAR for STM8 中是可以正常调试的,不知道为何使用 STVP 后就无法正常工作了呢?5 h/ a! W- m. }" {
/ \1 O' R9 M( `' z
调研: p0 W. X& ~$ Z- f
1. 了解问题9 J0 p* O7 `* u& E* F: O1 h
使用编译好的.s19 文件使用 STVP 烧写到 STM8AF52A9,发现上电后是无法正常工作的。观察用户代码,在 IAR 中进入调试状态,可以断点调试,单步调试,都可以。不过,最后发现在线调试时,一旦运行到以下代码时,程序就死掉了。
( [, `9 x7 F, k 51.png
( _2 r$ U6 ~& D1 d4 Z6 C6 X0 f' O: A6 |2 X: |
2. 分析问题
; j) Z8 |5 |7 s6 G4 R3 MSTM8 上电后默认的主时钟源为内部 HSI RC 时钟的 8 分频,即 f HSI /8。原因是 HSI 时钟的稳定时间短,而 8 分频可保证系统在较差的 V DD 条件下安全启动。等主时钟源稳定后,用户可以自行将主时钟切换到其他时钟源上。
/ o& h9 t/ O' Y, u- O, G5 ?
& _6 n; w# U+ k# O% W& {先来看一下刚才这个函数的原型:  r! i& g9 C. T7 d2 ?5 L
52.png
% [0 c  ?0 ^* w) n' s7 x* B- G- e3 `; q' m0 {. o  D
它的作用在于切换时钟源。CLK_SwitchMode 代表使用的切换方式,有自动切换和手动切换;CLK_NewClock 代表新的时钟源;ITState 代表是否使能或禁用中断;CLK_CurrentClockState 代表切换后原时钟源的状态是否保持或关闭。所以,用户代码的意思就是:使用自动切换方式,切换主时钟到 HSE,不产生中断,切换后原主时钟源关闭。
; E7 b9 T6 u% M% R4 p% g- l' l+ k4 Z: d
切换主时钟源后程序就出问题这种情况,看来问题很可能出在 HSE 上,必须对外部晶振进行检测。原本思考是否 HSE 外部晶体的振荡是否存在什么问题,但是在使用示波器进行检测后发现 HSE 已经是在正常的振荡当中了,而且波形很漂亮。但是,在示波器上看到频率是 24MHz。检查晶体上的标记,果然是 24MHz 的频率。所以,客户在使用 STM8AF52A9 时,为了提高性能,使用了最高主频 24MHz。
: f/ |* I8 i/ x5 c6 i$ O  \3 V# m& ?; r5 U3 I, B# N: p" Q! C7 I% \
客户所遇到的问题应该就出在 24MHz 的使用上了。客户以前使用都是 16MHz 的主频。STM8 要求,如果用户使用的主时钟8 S% K$ e& _$ _& t
频率超过了 16MHz,那么 Flash 以及 EEPROM 的访问需要配置 1 个等待周期。
) g" O; I7 q! }) i# ~( t) k  D6 W4 D: I) p% G, l
STM8AF52A9 数据手册可见如下:  I( ?  ]6 X3 w! R1 [* a- W5 _
53.png 0 E0 z# u! j8 L! ~) e! ?
3 L, |' ?2 g, j
参考手册 RM0016 在 HSE 的描述中,也提到了:
+ \# |- ^' l8 y% e; t4 d  ? 54.png + D: w6 L3 }) O' J

9 u6 \* D! a: ^) m...- T6 l$ C) `7 Q+ x: Z: u

2 w: k6 F& `' j* {了解更多,请下载后阅读( x" ~, O$ P. R" k1 w

1 d+ i' Q6 M. n# K8 J* c下载地址1>>         下载地址2>>       更多实战经验>>
. Q3 x5 P3 p; d3 G' z/ y
. e) B  e/ D% e. c; D
收藏 1 评论2 发布时间:2018-3-27 11:58

举报

2个回答
maxtch 回答时间:2018-3-28 01:16:44
本帖最后由 maxtch 于 2018-3-28 01:20 编辑
( o# n. ]( s8 U8 d" _/ Q3 @( y' J! A' t7 Y
这个应该是开发人员的基本知识。这帮家伙只知道拿 ST 的库代码,不晓得先看一遍手册,难怪开发出来的程序都如同渣渣。不管是这里,还是学校和培训机构,还是企业,都应该培训开发人员上手芯片找库之前先把芯片本身的手册读一遍。
$ F& t* k9 N& Q  c. J/ i5 O+ a : b  S' v  H8 |( r
开发人员!RTFM!读一遍他妈的手册有这么费劲吗?!
1 }* T% l6 r, Y0 x* f2 {8 G0 B& ~# G( L+ v, a  \
robter 回答时间:2018-7-17 21:17:22
最高主频 24MHz也应该能用: x* v7 V8 r9 ~, W$ I* E$ t9 y
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版