8STM8S 的配置字节OPTION  BYTE
这一章节我们将详细说明一下STM8S 的OptionByte  。在此只以STM8S -EK 开发板上的主控制芯片STM8S208R8做为目标芯片来讲解。本章主要解决以下问题:
1.什么是STM8S 的配置字 OptionByte
2.Option  Byte  里面的位都表示什么
3.如何编程Option  Byte
一 选项字节(OptionByte )
AFR7=1AFR7=0当然,任何的配置,用户还是可以像普通的IO 一样来使用PD4。
(理论上)
STM8S 的配置字类似于AVR 的Fuse 熔丝位。用于配置端口的复用功能和读保护等操作。不同于AVR 的熔丝位,STM8S 的时钟配置并不在Option  Byte 中,不会出现写完STM8S 后芯片直接锁死的尴尬。
选项字节用于配置硬件特性和存储器保护状态,这些字节位于同一页的特定存储器阵列中。 选项字节可以
在ICP/SWIM模式中或IAP模式中修改, 也就是可以通过STlink  写配置字,或者是通过程序写选项字。
,STM8S 的有一个蜂鸣器控制器BEEP ,这BEEP 对应的端口是PD4.但是PD4有两个复用功能,它可以是
BEEP 蜂鸣器的输出
Tim2 比较输出1 也就是Tim2_CC1
用户必须在这两个功能中选择一个,只能选择一个。那如何使PD4是BEEP 输出呢?
答案是通过设置Option  byte  选项字,将AFR7配置成1,使用PD4输出的是BEEP 的信号,否则,PD4将输出的是Tim2_CC1的信号 。
Option  Byte 除了能够配置端口的复用功能外,它还可以设置芯片的当选项字节中的ROP字节被编程为’0xAA’时,读保护就生效了。这种情况下,无论写保护是否生效,在ICP模式中(使用SWIM接口)读取或修改FLASH程序存储器和DATA区域都是被禁止的。即使认为没有什么保护是完全不可破解的,对于一个通用微处理器来说,STM8的读保护的特性也提供了一个非常高水平的保护级别。
也就是说,防止别人拷贝你的程序的方法可以是编程ROP 字节以使能读保护,那么 对方无论如何都不
能从STM8中读到你的Flash 数据当需要开启端口的第二功能时,需要考虑选项字节的编程,否则将不能实现程序所想要的功能。
例如1.2.读保护
7
chiplab7.taobao
STM8S -EK 开发板例程
九单片机论坛
w w w .9m c u .c o m
二 选项字节详解
仍然以STM8S208R8为例,看一下它可配置的选项字节通过前面的介绍 你应该对OptionByte 是做什么用有一个初步的认识了。那么,下面我们来讲一下,如何用OptionByte 。OptionByte  具体和我的工程有什么关系呢?
下图就是从STVP里截图到的
读保护
用户启动区域大小
端口复用选择
低频时钟看门狗
时钟设置
时钟稳定时间
Flash 等待时钟
Bootloader  使能
option是什么意思啊OPT0:ROP  读保护
STM8可以直接修改ROP ,解除读保护,这会引起:程序存储器、UBC、DATA区域以及选项字节都被自动擦除
这个是整个Flash 的读保护使能或者是失能位,当这个字节等于 AA 时,读保护生效,用户将不能读出Flash 内部的信息。并不意谓着这个芯片就废了,不像AVR 还需要高压编程来恢复Fuse .这样一来,芯片就等于出厂时的设置了,器件也可以被重新编程了。
当前值
九单片机论坛
w w w .9m c u .c o m
OPT4:时钟选项
EXTCLK  CKAWUSEL PRSC  外部时钟连接的硬件  两个可能:
1.外部晶体/陶瓷谐振器 外部时钟连接的是两脚的晶体,需要芯片启动时钟
2.外部时钟是一个信号源 输入占空比约50%的外部时钟信号(方波,正弦波,三角波)用以驱动OSCIN引脚,而OSCOUT引脚可做为通用输入/输出管脚使用。
自动唤醒单元(AWU)的时钟源,可以选择1.内部低频率时钟LSI  做为AWU 的时钟
2.高频时钟HSE  经过分频后做为AWU 的时钟
HSE 的分频值可通过选项字节位HSEPRSC[1:0]编程。这里分出来的时钟是给AWU 单元的
OPT5:HSECNT启动稳定时钟数
2048-0x05 = 2043个周期J 外部晶体振荡器在启动时的输出时钟信号是不稳定的,默认情况下,在时钟信号被使用之前会插入2048个振荡器周期的延迟。用户可通过设置选项字节
HSECNT来缩短稳定时间。也就是说,这个字节的值将决定振荡器周期的延迟,当这个字节为0x05时,那么振荡器周期的延迟将是:其他的值依此类推
EXTCLK =1
EXTCLK =0
九单片机论坛
w w w .9m c u .c o m