楽天市場
[無料でホームページを作成] [通報・削除依頼]

1kワードのTINYBASIC STM32版 その1

 STマイクロエレクトロニクスから8ピンのSTM32G030J6M6が販売されています。
同じ8ピンARMのLPC810と比較するとFlash容量が32k(4倍)、RAM容量が8k(8倍)、最高動作クロックが64MHz(1.3倍)と、なかなかのすぐれものです。
今回STM32G030J6M6にMINOLベースの1kワードTinyBasicを移植しましたのでご紹介します。

試作の結果プログラムサイズは2kバイト(Thumb:1kワード)となりました。

◎文法に関しては基本的に以前の(PIC用の)ものと一緒ですが、PIC版でプログラムサイズの関係から削除した、
 乱数発生(!)と変数一括クリア(CLEAR)コマンドを復活させました。 またSTM32G030J6M6のレジスタ空間に
 RAM経由でアクセスできるよう、レジスタ値の読み出し(RD)、レジスタへの書き込み(WR)コマンドを新設しました。
 従来のユーザーサブルーチンコールCALL(XX,YY)およびメモリアクセス(XX,YY)は、暗黙のオフセット$20000000
 の元で、RAM領域についてのみ有効とします。 [XX:YYの取り得る値は 0=<XX:YY=<$1FFF]
 STM32G030J6M6版にはモニタプログラムが存在しないのでモニタに戻るOSコマンドにメモリ(RAM)ダンプの機能を
 もたせました。ダンプを非表示にするとOSコマンドはSTOPコマンドの役割を果たします。

img_20200430-035550.jpg
img_20200430-040458.jpg

◎回路図の一例、USBシリアルを使用した場合3.3Vを得るため、LEDは必ず赤色もしくは緑色を使用してください。
 5番PINがTX、6番PINがRXに割り付けられています。 <通信条件 8bit、115200bps、1stop、noparity>
 図中のジャンパーをショートすればbootloaderモードとなり、STM32CubeProgrammerでインタープリタの書き込みが
 出来ます。 Basic作動時はジャンパーをオープンにする。 
 1番PINと7番PINはユ-ザーポートですが、デジタル/アナログの設定および入出力の設定はしていません。
img_20200430-040954.jpg

◎Boot0(8番PIN)を有効にするための設定 初回書き込み時、左側のOBボタンをクリックして3箇所変更する。
 これをしないと何をしてもbootloaderモードに入れなくなります。
 万が一Boot不能になったら、CMSIS-DAPのライターでデバイスの消去を行ってください。
img_20200430-042622.jpg

◎メモリーマップ
img_20200430-043520.jpg

◎BASICで使用する特別なアドレス キー入力検出フラグの役割は1KワードのTINYBASICその7で解説してます。
img_20200430-043839.jpg

その2に続きます