打印
[STM8]

STM8L的HSI(内部高速时钟)好用吗?能否满足一般的项目?

[复制链接]
5800|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cnsxgh|  楼主 | 2016-2-11 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为我看开发板,STM8L-Discovery上面用的就是HSI。而且它板子上的16M晶振也没焊。
大家在开发自己的产品时,会选择HSI吗?
沙发
desertsailor| | 2016-2-11 11:07 | 只看该作者
没问题,精度很高。

使用特权

评论回复
板凳
mintspring| | 2016-2-11 20:07 | 只看该作者
首先,你要明白STM8的驱动时钟可以采用外部晶振,也可采用STM8内部的RC振荡器,二者只能选其一。 三个语句中的HSI表明是采用内部RC振荡器。

使用特权

评论回复
地板
mintspring| | 2016-2-11 20:08 | 只看该作者
  其中HSI RC 16MHz就是其内部含有的RC振荡器,是ST芯片在出厂前就经过校正的但有一定误差的振荡器。时钟经过HSIDIV[1:0]这个分频器,可以获得16MHz、8MHz、4MHz、2MHz的输出tHsiDIV,该输出经过Master Clock Switch(通过配置来选择外部晶振还是内部晶振)后,再分配到CPU时钟和外围设备时钟。

使用特权

评论回复
5
mintspring| | 2016-2-11 20:08 | 只看该作者
  因此,STM8可以运行的时钟频率最大可以达到16MHz,你也可以让它低于这个频率运行(有利于低功耗设计)。搞清楚了以上几点,可以知道第一句是配置STM8,让它知道用内部RC振荡器,不要用外部晶振,这样省了一个晶振的钱[成本降低了嘛:)],第二句是让内部振荡器的输出进行8分频,你也可以让它1分频、2分频、4分频,但不能3分频、5分频,因为它内部只设计了这几种分频,况且奇数分频很难实现,你学过数字电路就应该知道。然后第三句话你要看一下库函数的定义
CLK_Source_TypeDef   CLK_GetSYSCLKSource(void)
{
    return((CLK_Source_TypeDef)CLK->CMSR);
}
意思是返回寄存器CMSR的值

使用特权

评论回复
6
mintspring| | 2016-2-11 20:08 | 只看该作者
它是表明时钟准备好了没有的状态标志,就像你去叫别人办事,别人要经过考虑,这就需要等待,同理,你在STM8S内部配置好了时钟后,内部需要产生一定的延迟,而且受各种状况的影响,比如外部供电电压变化、引脚干扰等,有可能导致配置时钟失败,这就要经过查询这个寄存器的值来看是否配置好时钟没有,如果这个寄存器不等于0,则配置成功,否则失败。第三句的while里的意思就是不断地取CMSR的值,看是否等于宏定义CLK_SOURCE_HSI(OXE1),如果相等了,则跳过循环,继续执行以后的语句。

使用特权

评论回复
7
cnsxgh|  楼主 | 2016-2-13 20:02 | 只看该作者
mintspring 发表于 2016-2-11 20:08
它是表明时钟准备好了没有的状态标志,就像你去叫别人办事,别人要经过考虑,这就需要等待,同理,你在STM8 ...

朋友,给我回答了四次,非常感谢。你自己用过它的内部时钟没?精度怎样?

使用特权

评论回复
8
mintspring| | 2016-2-14 09:30 | 只看该作者
cnsxgh 发表于 2016-2-13 20:02
朋友,给我回答了四次,非常感谢。你自己用过它的内部时钟没?精度怎样? ...

精度肯定内部的不行啊,因为内置的会受MCU温度变化影响,而随着开机的时间增加,温度会上升。想精度高还是需要外置的。

使用特权

评论回复
9
crystal1987| | 2016-2-16 10:56 | 只看该作者
建议使用外部晶振,同时选用8M的晶振可能更稳定一下,价格也适中。

使用特权

评论回复
10
bihongyan2016| | 2020-6-11 10:01 | 只看该作者
内部HSI时钟精度差,有通信需求的不要用。我一块板上设计了双CpU,是STM8S105k4,运行冋一个程序,采用外部8M晶振,两个的秒闪呼吸灯基本同步,改用HSI后,20秒就差了1秒,把较慢的那个的时钟校正值改到最大值7,也还是偏慢,大约30秒慢1秒钟。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

121

帖子

3

粉丝