option byte の解説

option byteの存在理由

pinに割り当てる機能を指定したりするものです.他にも機能があります.
そんなのprogramで指定すればいいじゃんと思うでしょうが、電源投入と同時に所望の機能でCPUが起動しないと都合が悪いこともあるので、option byteでハードウエア的に設定するのです.

option byteの書き換えは必須か?

STM8Sの性能を100%発揮したい時には、必要になることがあります.
平易な実装であれば、option byteはdefaultのままで書き換えなくてよいケースが多いでしょう.

option byteのメモリ上の場所

STM8S105の中の4800H番地から480EH番地までの15BYTEと、487EH番地487FH番地の2BYTEに割り当てられています.

option byteの書き換え方法

ハードウエア的にはSWIMで接続し、ソフトウエアツール的にはSTVPで読み書きします.
SWIMやSTVPを使わずに済ます方法もあるにはありますが、ちょっとテクが必要となります.
なので、STM8S-discoveryを買ってそのSWIM部分を流用するのがよいと思います.

option byteの定義の説明

アドレス
名前
名前
機能
4800H
Read-out protection
OPT0
ハッキングされないようにメモリを読み出し不可にすることができる.

OPT0=00: 通常に読み書きできる   (普通は00でよい)

OPT0=AA: codeを秘密にするためメモリを読めなくする
4801H
4082H
User boot code(UBC)
OPT1
NOPT1(OPT1のbit反転)
8000H〜FFFFHのuser FLASH memoryをwrite protectすることができる.

OPT1=00: write protectなし   (普通はOPT1=00  NOPT1=FFでよい)
OPT1=01: 8000H〜83FFH番地をwrite protectする.
OPT1=02: 8000H〜87FFH番地をwrite protectする.
OPT1=03〜3E: 8000H〜(83FFH+512*OPT1)番地をwrite protectする.
4803H
4804H
Alternate function remapping(AFR)
OPT2
NOPT2(OPT2のbit反転)
外部ピンの機能選択. (凝った使い方をしない限りOPT2=00  NOPT2=FFでよい)

bit7    pin PD4の機能選択
OPT2[7]=0: TIM2_CH1
OPT2[7]=1: BEEP            (BEEPは圧電ブザーをとりつけるとピーッと鳴る機能)

bit6    pin {PB5,PB4}の機能選択
OPT2[6]=0: {AIN5,AIN4}
OPT2[6]=1: {I2C_SDA,I2C_SCL}              (I2Cはシリアルインターフェース規格の一種)

bit5    pin {PB3,PB2,PB1,PB0}の機能選択
OPT2[5]=0: {AIN3, AIN2, AIN1, AIN0}
OPT2[5]=1: {TIM1_ETR, TIM1_CH3N, TIM1_CH2N, TIM1_CH1N}
(AINはADコンバータのアナログ入力のこと)

bit4     pin PD7の機能選択
OPT2[4]=0: TLI
OPT2[4]=1: TIM1_CH4               (TLIは高優先度の割り込み端子)

{bit3,bit2}    pin PD0の機能選択
OPT2[3:2]=00: TIM3_CH2
OPT2[3:2]=01: CLK_COO
OPT2[3:2]=10: TIM1_BKIN
OPT2[3:2]=11: CLK_COO

bit1    pin {PA3,PD2}の機能選択
OPT2[1]=0: {TIM2_CH3,TIM3_CH1}
OPT2[1]=1: {TIM3_CH1,TIM2_CH3}

bit0    pin PD3の機能選択
OPT2[0]=0: TIM2_CH2
OPT2[0]=1: ADC_ETR             (ADC_ETRはADコンバータの外部トリガ入力)
4805H
4806H
Miscell option
OPT3
NOPT3(OPT3のbit反転)
内部機能の機能選択.   (凝った使い方をしない限りOPT3=00  NOPT3=FFでよい)

bit7   未使用
bit6   未使用
bit5   未使用

bit4   HSI_TRIM     内部clock発振器は16MHz(HSI)と128kHz(LSI)の2モードあって、HSIモードのとき発振周波数を微調整できるようになっている. その微調整精度を選択できる.  
OPT3[4]=0: 3bit精度で調整する
OPT3[4]=1: 4bit精度で調整する

bit3   LSI_EN     内部clock発信器の128kHz(LSI)を選択するかどうか.
OPT3[3]=0: 128kHz(LSI)モードではない
OPT3[3]=1: 128kHz(LSI)モードにする

bit2   IWDG_HW     CPUが暴走していたら割り込みをかけて復帰させる機能をwatchdog機能と呼ぶ.independent watchdogをONにするかどうか.
OPT3[2]=0: ここではONにせずprogramでON/OFFを決める
OPT3[2]=1: ここでONにする

bit1   WWDG_HW     window watchdogをONにするかどうか.
OPT3[1]=0: ここではONにせずprogramでON/OFFする
OPT3[1]=1: ここでONにする

bit0   WWDG_HALT     window watchdogがactiveになったときCPUをresetするかどうか.
OPT3[0]=0: resetしない
OPT3[0]=1: resetする
4807H
4808H
clock option
OPT4
NOPT4(OPT4のbit反転)
クロックの機能選択.   (凝った使い方をしない限りOPT4=00  NOPT4=FFでよい)

bit7   未使用
bit6   未使用
bit5   未使用
bit4   未使用

bit3    STM8Sのクロックは、次の4種類から選択できる.
1)内部発信器の16MHz、2)内部発信器の128kHz、3)外部水晶発振子、4)外部クロック
bit3は外部クロックのとき3)と4)のどちらにするかを決める.
OPT4[3]=0: 外部水晶発振子
OPT4[3]=1:外部クロック

bit2     Auto wake-up 機能のクロックの選択.
OPT4[2]=0: 内部発信器の128kHz(LSI)
OPT4[2]=1: 内部発信器の16MHz(HSI)

{bit1,bit0}    Auto wake-up 機能のクロックとしてHSIを選択した場合の、clock prescalerの周波数範囲の選択.
OPT4[1:0]=00:16MHz〜128kHz
OPT4[1:0]=01: 16MHz〜128kHz
OPT4[1:0]=10: 8MHz〜128kHz
OPT4[1:0]=11: 4MHz〜128kHz
4809H
480AH
HSE clock startup
OPT5
NOPT5
外部水晶発振子の発振回路の安定性調整.   (OPT5=00  NOPT5=FFで良いだろう)

OPT5=00:  2048 HSE clock cycles
OPT5=B4: 128 HSE clock cycles
OPT5=D2: 8 HSE clock cycles
OPT5=E1: 0.5 HSE clock cycles
480BH
480CH
未使用
OPT6
NOPT6

480DH
480EH
未使用
OPT7
NOPT7

487EH
487FH
Bootloader
OPTBL
NOPTBL
FLASH焼きツールとしてSTVPを使うならこの機能にはドントケアでもよい.
しかし、COM PORT経由でFLASH LOADER DEMOを使ってFLASH焼きしなくちゃいけない場合はこの機能は重要な意味を持つ.

OPTBL=00:  BootLoader は動作しない
OPTBL=55:  BootLoader が動作する       (かならずOPTBL=55  NOPTBL=AAにしておくべきである)

option byteをいじるSTVPの画面例

●SWIMが動作するハードウエアをPCに接続し、STVPを起動する
   (SWIMが動作するハードウエアを持ってない場合は別の奥の手があるがめんどくさいのでここでは説明しない)

●メニューからconfigure → configure ST visual programmer をクリックすると出る画面.このように設定してOKをクリック.


●下の方にあるOPTION BYTEタブをクリック


●このボタンをクリックするとoption byteの現在地を読み出して表示してくれる


●option byteの読み出し結果がこのように表示される.OPT0〜OPTBLだけが表示されている.NOPTxは表示されない.
普通に使う限りにおいて、option byteはBootLoaderのみ55AAにして、それ以外はオール00にしておけばとりあえずOKである.
この表示例ではそのようになっている.


●option byteの設定を変更したい場合は、この画面でセレクトする



●option byteに書き込むには、このボタンをクリックする



release 2011.10

inserted by FC2 system