只今のアクセス件数:


(別室)STMマイコン(STM8Sマイコン)で遊ぼう

 ※このページは個人的な趣味によって書かれており、著者は全ての内容について、いかなる責任も負いません。
  参考にされる場合は、自己責任でお願いします。

 このページは、STMicroeleconics社のSTMマイコン(STM8Sマイコン)を使った簡単なプログラムを紹介しています。
 内容はPICと関係ありません。


 ●重要なお知らせ(訂正とお詫び)●

  1.ADM3202のコンデンサの接続について

    このHPのADM3202を使った回路図では、ADM3202の2ピンにつながっている0.1μFのコンデンサをGndにつないで
    実験していますが(図a)、ADM3202のデータシートでは、このコンデンサはVccにつなぐようになっています(図b)。
    実験では、このようなつなぎ方でもICのチャージポンプは正常に動作していますが、データシートでは(図b)のように記述され
    ているので、データシートの通りに(図b)のようにしたほうがいいと思います。

 






 

●STMマイコンについて

  STMマイコンは、 STMicroeleconics社 の提供する高性能で低価格なマイクロコントローラです。
  その低価格ぶりは驚くべきもので、 ARM Cortex−M3評価ボードが、秋月電子では1000円程度で買えたりします。

  このページで取り上げているSTMマイコンは、STM8Sマイコンのみではありませんが、ARM系のSTM32プロセッサについては、 
  「(別室)ARMマイコンで遊ぼう」のページで取り上げています。


   秋月電子でのSTMマイコンの取り扱い。  H23.3.8現在

    ・STM32マイコン評価ボードSTM32VLDISCOVERY   ・・・・ 1、100円
     (ARM Cortex−M3(STM32F100)、プログラムメモリ:128KB、SRAM:8KB、LQFP−64)

    ・STM8Lマイコン評価ボードSTM8L−DISCOVERY    ・・・・ 1、050円
     (8ビットコア(STM8L152C6T6)、プログラムメモリ:32KB、SRAM:1KB、EEPROM:1KB、TQFP−48)

    ・STM8Sマイコン評価ボード STM8S−Discovery   ・・・・   750円
     (8ビットコア(STM8S105C6)、16MHz動作、プログラムメモリ:32KB、SRAM:2KB、EEPROM:1KB、TQFP−48)

    ・STM8SマイコンSTM8S105K4T3C           ・・・・   200円
     (8ビットコア 40MHz動作、プログラムメモリ:16KB、SRAM:2KB、EEPROM:1024B、LQFP−32)

    ・STM8SマイコンSTM8S105K4B6            ・・・・   200円
     (8ビットコア 40MHz動作、プログラムメモリ:16KB、SRAM:2KB、EEPROM:1024B、SDIP−32)



●STM8Sマイコン評価ボード STM8S−Discoveryで遊ぶ

  STM8S−Discovery評価ボードは、 STMicroeleconics社 のSTM8S105C6T6を積んだ安価なマイコン評価ボードで、MPUに
   デバッガや開発ツールまで、開発に必要なものが全て付いて、例えば 秋月電子 では、750円で購入する事が出来ます。

  このマイコンボードに乗っているSTM8S105C6T6は、16MHz、プログラムメモリー:32KBytes、RAM:2KBytes、データEEP:
  1KBytesを積んでいて、プログラムメモリーは仮に1万回の書き換えをしても、55℃で20年間の保持が可能です。
  電源電圧は、2.95V〜5.5Vまで使用可能で、外部クロックの他、16MHzと128KHzのRCオシレータを内蔵しています。
  モジュールは、10ビット10チャンネルのA/Dコンバータ、UART、SPI[8Mbit/s],I2C[400Kbit/s]等を内蔵しています。

  このMPUのクロックは、ハイスピード外部クロック[HSE]、ハイスピード内部クロック[HSI]、ロースピード内部クロック[LSI]の3種類から
  選択できるようになっていて、デフォルトでは、ハイスピード内部クロック(2MHz;16MHz/8[プリスケーラ])になっています。
  電池で使う等の消費電力にシビアな用途でないならば、ハイスピード内部クロック(16MHz)か、ハイスピード外部クロック(このボードでは
  16MHz水晶)を選択した方がいいと思います(切り替え方法は、下記のルーレットのサンプルプログラムA、Bを参照)。

  MPUの供給電源は、ボード上のJP1を切り替える事で、3.3Vでも、5Vでも、好きなほうを選択できます。
  この評価ボードは、USBケーブルでパソコン(Windows 2000/XP/Vista)につなぐだけでデモプログラムが動作するようになっていて、
  タッチセンサーのデモ(基板の済みにあるプラスチック部分を触ると、LEDの光り方が切り替わる)が動くようになっています。
  また、開発ツール(無償)をダウンロードする事で、アセンブラやC言語による開発を行う事ができます。
  開発に必要な資料は、 STM8S−Discovery のHPよりダウンロードする事が出来ます。
 
  この評価ボードは、STMicroeleconics社より豊富にサンプルプログラムが提供されていて、一般的によく使用されると思われるUARTや、
  PWM、その他の一般的な機能のサンプルは、プロジェクトフォルダーごと無償でダウンロードできるようになっています。
  このMPUには、BEEP機能等の遊べそうな機能も内蔵されていますし、入門者向けに書かれたマニュアルも豊富なので、このマイコンの
  入門者にもいいかも知れません。





   ●IDE(Integrated Development Environment)

      STMicroeleconics社の提供する統合開発環境で、 STMicroeleconics社のHPより無償でダウンロードする事ができます。
      ST Visual Develop(STVD)、ST Visual Programer(STVP)から構成されています。

      STVDは、アセンブラやC言語(C言語コンパイラーのインストールが必要)による開発からオンラインのデバッグまで可能な
      なかなか使い勝手の良いツールです。

   ●C言語コンパイラー

      無償評価版のC言語コンパイラ(Cosmic社、またはRaisonance社)がSTMicroeleconics社のHPより無償でダウンロード
      する事ができます。
      このコンパイラーを使用するためには、簡単なユーザー登録が必要になります。
      また、無償評価版は、開発できるアプリケーションのサイズが16Kバイトに制限されます。
      アセンブラで開発するだけなら、C言語コンパイラーは必要ありません。

      上記のIDE/STVDの中から使用する事ができます。

   ●ライター

      安価なST−LINK2等が使用できます。
      このツールは、例えばAMAZONでは、500円程度で購入できます。
      但し、このボードにはST−LINKが内蔵されているので、STM8S−Discoveryを使うだけなら、このライターは必要ありません。


写真1


写真2

   ●マニュアル

      この評価ボード用に書かれたマニュアルが、STM8S−DiscoveryのHPより無償でダウンロードできます。
      但し、日本語はほとんどありません。


STVDの使用例@ ワークスペースとプロジェクトを作成する


STVDの使用例A プログラムを作成し、MPUにプログラムを書き込み、オンラインデバッグする
但し、事前にターゲットボードをパソコンとつないでおく必要があります


評価ボードのイメージ ※STMicroeleconics社のマニュアルより抜粋


STM8S105C6T6 microcontrollerのピン配置 ※STMicroeleconics社のマニュアルより抜粋


割り当てられたファンクションの変更方法 ※STMicroeleconics社のマニュアルより抜粋
上の図「STM8S105C6T6 microcontrollerのピン配置」にある [**] の機能は、オプションバイトを操作して
リマッピングしないと使用できません


評価ボードのコネクタ配置 ※STMicroeleconics社のマニュアルより抜粋


STM8S105C6T6 Module回路図 ※STMicroeleconics社のマニュアルより抜粋


STM8S105C6T6 ST-Link回路図 ※STMicroeleconics社のマニュアルより抜粋


ボードのジャンパーを切り替えることで、STM8S105C6T6に供給する電源電圧を3.3V、及び5Vのどちらかに選択できます。
ボードの「Module」と「ST-Link」を切断して切り離すか、ハンダブリッジで切り離すと、「ST-Link」は「CN7」を介してユーザー
ボードの開発に使うことも出来ます。                                           
 ※STMicroeleconics社のマニュアルより抜粋


ピンヘッダーへの接続用に、こんなコードを何本か用意しておくと便利です
熱収縮チューブで固めれば強度も充分です



   1.基本プログラム編

     (1)LEDを点滅させてみる

       書き込みテストのため、簡単なプログラムを作ってみました。

       サンプル@は、評価ボードのPD0につながれているLEDが点滅するだけのものです。
       例えばSTM8 Cosmicの場合、似たような内容のインクルードファイルが複数存在していて、サンプルによって使用する
       インクルードファイルが異なるようですが、このサンプルでは動作を確実にするため、インクルードファイルを使用していません。

       サンプルAは、評価ボードのPD0につながれているLEDの点滅で「A〜Z」、「0〜9」のモールス信号を出力するものです。
       インクルードファイル「iostm8s.h」は、STM8Cosmicの「Hstm8」フォルダーに存在しているのですが、バージョンの違い等で
       このファイルが見つからない場合のために、インクルードファイルを使っていないサンプルBも作成しました。

STM8S−DiscoveryをUSBケーブルでパソコンにつないだだけで、このサンプルでは何の追加回路もありません

test1.c

プログラムソース サンプル@(STVD/STM8Cosmic C言語) バージョン

test2.c

プログラムソース サンプルA(STVD/STM8Cosmic C言語) バージョン

test3.c

プログラムソース サンプルB(STVD/STM8Cosmic C言語) バージョン
       





     (2)クロックを出力してみる

       このMPUのクロックは、CCO機能を使う事で、CCO(デフォルトではPE0)ピンへ出力する事ができます。
       出力できるクロックは、fHSIDIV、fLSI、fHSE、fCPU、fCPU/2、fCPU/4、fCPU/8、fCPU/16、fCPU/32、fCPU/64、fHSI、fMASTERで、
       CCORレジスタのCCOSELに値を設定する事で、選択されます。
       クロックのデバッグには最適な機能だと思います。
       
       サンプル@は、fCPUを出力するもので、デフォルトなので、fHSIの2[MHz](16MHz/8[プリスケーラ])が出力されますが、
       プログラム中のInit_CCO関数のパラメータを、PI_CCO_fHSIDIV 〜 PI_CCO_fMASTER の何れかに変更する事で、いずれのクロックを
       出力する事もできます(CLK_CCORレジスタに値を代入するだけのプログラムですが )。

写真と回路、オシロスコープの出力測定イメージ

main1.c

プログラムソース サンプル@(STVD/STM8Cosmic C言語) バージョン







    ●実験ボード タイプ1A(STM8S−Discovery)

        簡単な実験ボードを作ってみました。

回路図、写真


      (1)ルーレットにしてみる

        PORTBに8個のLED(赤)をつないで、LEDが回転するようにしてみました。
        このマイコンのGPIOポートは、デフォルトがオープンドレインなので、Px−CR1レジスタでプッシュプルに変更してやる必要があります
        (詳細は、プログラムソースを参照)。
        ポート出力は20mA(トータル100mA)なので、抵抗を通して、LEDは直接つなげます。
        このボードは、電圧が3.3Vなので、LEDは赤以外では点灯しません。
        (JP1のピン設定を変更して、MPUの電圧を5Vにすれば、赤以外のLEDでも点灯できます。)
        
        このMPUは、デフォルトでは、内部OSC:2MHz(16MHz/8[プリスケーラ])になっています。
        サンプルAは、プリスケーラを1にして、クロックを16MHzにしたもので、ルーレットが高速回転します。
 
        サンプルBは、クロックを外部クロック(ボード上の16MHz水晶)にしたもので、ルーレットが高速回転します。
 
        サンプルCは、外部クロック(ボード上の16MHz水晶)と、TIMER1機能を使って、1秒毎にルーレットが動くようにしたものです。
 

回路図、写真

sample1.c

プログラムソース サンプル@(STVD/STM8Cosmic C言語) 2MHzバージョン

sample2.c

プログラムソース サンプルA(STVD/STM8Cosmic C言語) 内部OSC:16MHz バージョン

sample3.c

プログラムソース サンプルB(STVD/STM8Cosmic C言語) 外部OSC:16MHz水晶バージョン

sample4.c

プログラムソース サンプルC(STVD/STM8Cosmic C言語) タイマーバージョン

sample5.c

プログラムソース サンプルD(STVD/STM8Cosmic C言語) タイマー割り込みバージョン   ただ今、準備中!!

iostm8s.h

開発で使用したバージョンのインクールードファイル(iostm8s.h)  (参考資料)

開発ツールのバージョンの違いでコンパイルエラーが発生する場合に参考にしてください。
通常は最新バージョンのインクールードファイルを使用したほうがいいと思います



      (2)UARTを使ってみる


         UARTでパソコンのハイパーターミナルにつないで、簡単なエコープログラムにしてみました。

         クロックはいろいろ変えられるのですが、説明を簡単にするため、デフォルトで動くようにしてあります。
         このUARTは、UART2(UART1ではない)ので、注意が必要です。
         UART2は、STM8Sシリーズ共通の「iostm8s.h」には定義されていないので、STM8S105専用の「iostm8s105.h」をインクルードする
         必要があります。

         サンプルAは、サンプル@をボード上の16MHz水晶で動かすようにしたものです。
         取り上げるほどのサンプルでもありませんが、このボードには16MHzの水晶が搭載されているのに、精度の劣るデフォルト
         クロックHSI:2MHzでプログラムを組む事は、少ないように思うので、通常使うプログラムの事例として作ったものです。

回路図、写真、ハイパーターミナルのイメージ


ハイパーターミナルの設定

main1.c

プログラムソース サンプル@(STVD/STM8Cosmic C言語) バージョン

main2.c

プログラムソース サンプルA(STVD/STM8Cosmic C言語) 外部水晶16MHzバージョン

main3.c

プログラムソース サンプルB(STVD/STM8Cosmic C言語) 受信割り込みバージョン   ただ今、準備中!!

iostm8s105.h

開発で使用したバージョンのインクールードファイル(iostm8s105.h)  (参考資料)

開発ツールのバージョンの違いでコンパイルエラーが発生する場合に参考にしてください。
通常は最新バージョンのインクールードファイルを使用したほうがいいと思います





      (3)A/D コンバータを使ってみる


         A/DコンバータとUARTを使って、パソコンのハイパーターミナルに出力する電圧計(0〜3.3V)にしてみました。

         電源はUSBからST−LINKで供給していますが、この電源電圧(3.3V)を基準にしているので精度は高くありません。
         外部から電源を供給する場合は、ST−LINKを外さないと、ボードのレギュレタが壊れてしまうかも知れません。
         また、入力は、電源電圧を超えないようにする必要があります。

         ARM系のSTM32とは異なり、STM8では、オルタネートファンクションのクロックがデフォルトでイネーブルなので、
         A/Dコンバータを使うだけならクロックを意識する必要はないのですが、
         GPIOをアナログ入力にする場合は、GPIOのシュミットトリガを、ADC−TDRレジスタでディスエーブルにしておく必要があります。

         サンプルAは、上記のUARTのサンプル同様、クロックをボード上の16MHzの水晶に変更したものです。

回路図、写真、ハイパーターミナルのイメージ


ハイパーターミナルの設定

main1.c

プログラムソース サンプル@(STVD/STM8Cosmic C言語) バージョン

main2.c

プログラムソース サンプルA(STVD/STM8Cosmic C言語) 外部水晶16MHzバージョン


       






●STM8S103F3P6で遊ぶ

 
   「STM8S103F3P6 STM8 最小システム 開発ボードモジュール」は、AMAZONでは300円程度で購入できる、安価なMPUモジュールです。
   開発に必要なものは、Windows10パソコンとST−LINK2程度です。


写真


ライターはST−LINK2を使用し、Windows10パソコンで無償のSTVD/STVPを使用しています。
STVPの書き込みでは、STVDから出力される「.S19」ファイルを使用しています。
      

         基板の稼働確認のため、LEDの点滅プログラムを作ってみました。
         ボード上のLEDが点滅を繰り返します。

main.c

プログラムソース サンプル@(STVD/STM8Cosmic C言語) バージョン
STVPでプログラムを書き込み




    (1)Arduinoで使ってみる

       このマイコンボードは、Arduinoに対応しています。
      というより、このマイコンボードは、Arduino仕様のマイコンボードです。
      Arduinoについては、このマイコンボードを取り上げているHPもありますし、特に説明の必要もないと思いますので省略しますが、
      初めてマイコンを使う人にも最適だと思います。
      基本的に、「Arduino IDE」のみをインストールすればよく、コンパイラ等のインストールは不要です。
      言語もわかりやすく、Lチカ程度であれば、マイコンの知識はほとんど必要ありません。

      STM8Sマイコンの場合は、ボードの選択のための簡単な操作が必要です(AVR/Arduinoボードのようにボードを選択するだけではない)。
      このマイコンボードを、ST−LINKでパソコンとつなぎ、例えばBLINKサンプルを選択して、「スケッチ」から、「マイコンボードに書き込む」を
      選択すると、プログラムがマイコンボードに書き込まれ、プログラムが実行されます。
      リセットボタンの操作は必要ありません。
      書き込み装置は、ST−LINK/V2を選択しておきます。


写真(STM8S103F3P6ボードは裏面)


Arduino IDEのイメージ
Lチカは、これだけのプログラムの記述でできます(Arduino IDEについているサンプル)。







●STM8S105K4T3Cで遊ぶ

   STM8S105K4T3Cは、動作クロック:16MHz、プログラムメモリー:16KBytes、RAM:2KBytes、データEEP:1024Bytes
   を積んだ8ビットのMPUで、電源電圧は、2.95V〜5.5V、モジュールは、A/Dコンバータ、UART、SPI,I2C等を内蔵しています。
   プログラムの書き込みは、専用の書き込み器(ST−LINK)が2000円程度で購入できるのですが、上記の「STM8S−Discovery」
   のST−LINK部分(基板の上半分)を使って書き込む事もできます。

   このMPUは、例えば秋月電子では、200円 注)H24.10現在 で購入する事ができます。


STM8S105K4T3Cのイメージ
32ピンQFPパッケージなので、秋月電子の「TQFP(LQFP)32ピン(0.8mmピッチ)変換基板」を使用した


STM8S105K4T3Cのピン配置 ※STMicroeleconics社のマニュアルより抜粋


 ●実験ボード・タイプ1A(STM8S105K4T3C)

 
   簡単な実験ボードを作ってみました。
   NRST端子は、プルアップが必要ですが、
   STLINKに接続するSWIM端子も、プルアップしないとSTVPで書き込みできませんでした。


写真


回路図


STVPの書き込みイメージ

 
   稼働確認のために、PORTDにつないだLEDが回転する簡単なサンプルを作ってみました。(サンプル@)
   

main.c

プログラムソース サンプル@(STVD/STM8Cosmic C言語) バージョン
STVPでプログラムを書き込み

main.s19

プログラムソース サンプル@(動作確認のためのs19ファイル)
STVPでそのまま書き込めます







ボタンを押すとPICのページへ戻ります
上のボタンを押すとPICのページへ戻ります

ボタンを押すとメニューに戻ります
上のボタンを押すとメニューのページへ戻ります