YES! STM32!

sorry. japanese only.
このサイトでは,STmicro社のMCU(STM32など)を使用して, 私が作成した何かを掲示しています。

使用するMCUは,cortex-M4FのSTM32F4xxcortex-M3のSTM32F1xxがメインです。
ボードとして評価ボードSTM32F4-discoveryと Arduinoライクな開発環境で知られるMaple-mini 互換ボード自作のヘンテコボードです...
プログラム開発環境については,C言語(gcc)を中心としたlinuxやcygwin等のGNU開発環境 が主なものになると思います。

個々の何かについては,以下をご覧ください。
STM32F4xx(cortex-M4 STM32F4discoveryボード)を使用したもの

STM32F4Discoveryボードで高精度なSNTPサーバ

↓のI/Oボード(アドオンボード)とTCXO RTCアドオンボードとSTM32F4-discoveryボードを組合わせて, 安上りで高精度に自律計時可能なSNTPサーバを作ってみました。(記事書き中)
cheapen SNTP server on STM32F4disco. ;-D
エコっぽくブリスターパックをケースにして完成したSNTPサーバw

STM32F4Discoveryボード用のI/Oアドオンボード

マイクロSDカード,Ethernet,シリアルI/Fの簡易I/Oアドオンボードを作ってみました。
↓のI/Oベースボードの簡易版です。

STM32F4Discoveryボード用のI/Oベースボード

デュアルマイクロSDカード,Ethernet,キャラクタ型LCD用ポート,シリアルI/F, 圧電ブザー,A/D入力(アンプ付き)と,DC-DCコンバータで電源を強化した I/Oボードを作ってみました。

TCXO RTC(DS323x) addonボード

STM32F4Discoveryボードに取り付ける高精度(TCXO) RTCアドオン基板です。

音声読み上げ時計プログラム

STM32F4-Discoveryの簡単なアプリとして,時刻読み上げ時計を作りました。
ボードのボタンを押すと時刻を喋ります(音声はボード上のジャックから出力)。
USBの仮想COMポートを使って時刻設定が可能です。
↑のTCXO_RTCアドオンボードがあると起動時の時刻設定が省け,高精度な時計になります。

Discoveryボードを内蔵RAMブートでお手軽にする

ブートコンフィグレーションでリセット後, 内蔵SRAM上にあるアプリケーションを実行する方法について。

Nuttx(RTOS)

↑のI/OベースボードのEthernet通信やSDカードの機能を確認するために, Nuttxを対応させてみました。

STMマイコンでeLuaを動かしてみる

スクリプト言語Luaの組込み向け実装eLuaをSTM32F4discoveryで動作させてみます。
gitサーバにstm32f4 discoveryのブランチがありますので割と簡単に動作させることが可能です。
↑のI/Oベースボード用にマイクロSDカードとUSARTコンソールを変更して動作させてみました。
I/Oベースボードがなくても実行はできます。コンソールはUSART3(PD9/TxとPD8/Rx)です。

シェルや足回りがよくできているので,欲が出てスタンドアロンでも 小さめのファイルなら作成/編集が可能なように ラインエディタのGNU edを組み込んでみました。
実行環境も含めてエディタもシェルもスタンドアロンで動作するので ↓pymiteよりも使い勝手はいいかもしれない...

STMマイコンでPython(python-on-a-chip/p14p)を動かしてみる

組込み用のpythonの実装一つpython-on-a-chipことpymiteです。
1msタイマーとシリアルI/Oを実装したら,とりあえずipm(対話型pymite)でも不都合なく 動作しました。
STM32F4discoveryのデモプログラム程度が,pythonで記述できるようになりましたので, AS-ISで公開しときます。

pymiteをビルドしたときに,折角だからcortex-M4のHardFloatを使ってやろうとしたら, -mfloat-abi=の違うライブラリとのリンクで嵌ってしまったのでメモに残しておきます。
メモ:-mfloat-abi=の違いはこんな感じ&ツールチェインのビルドメモ

STM32F4xxを使用するための最初の一歩(LED明滅プログラム)

ChaNさんの作成された Lチカプログラム(mary_1st.zip)を参考にして,STM32F4discovery用の実行ファイルを 生成できるように調整作成したものです。
アーカイブを展開して出来たディレクトリにカレントディレクトリを移動して, makeを実行することでビルドします。
STM32 ST-LINK Utility等を使用して, objにある*.hexを評価ボードにロードして, 実行すると,4つのLEDが順番に明滅します。

最初の一歩目なので,データシートを眺めながらのSTのデバイスアクセスAPIを使わない I/Oレジスタ直叩きです。
今後もたぶん...

←はサンプルプロジェクトのアーカイブへのリンクです。

STmaicroが公開している資料の紹介:STM32 MCUのプログラミングのお供に

Cortex-M4 プログラミングマニュアル:(PM0214) Programing manual/ STM32F3xxx and STM32F4xxx Cortex-M4 programming manual
ARM cortex-M4 CPUに関する設定や詳細情報,システムペリフェラル機能の設定や説明

データーシート:Datasheet STM32F405xx STM407xx/ ARM Coretex-M4 32b...
MCUの機能概要やピンレイアウト/内蔵ペリフェラル機能へのピン割当てや電気的特性の説明

リファレンスマニュアル:(RM0090) Reference manual/ STM32F40xxx,STM32F41xxx,STM32F42xxx,STM32F43xxx advanced ARM-based 32-bit MCUs
MCUの機能設定や内蔵ペリフェラル設定,詳細機能の説明

フラッシュプログラミングマニュアル:(PM0081)Programing manual/ STM32F40xxx and STM32F41xxx Flash programming manual
内蔵フラッシュへのプログラミング手順の説明

アプリケーションノート:(ANxxx各種)
具体的な応用例など

STM32F1xx(maple miniボードや自作ボードなど)を使用したもの

PC-8801用拡張メモリ&16ビットカード(作り中)

FPGAをグルーロジックとして搭載しPC-8801から拡張メモリ用SRAMと80186互換MCUとBluepill互換ボードを使用する拡張カード

概略機能
  • 簡易電源バックアップ付きの拡張メモリとして最大8MBを使用できる(PC-8801-02N上位互換)
  • 拡張メモリの一部を使用して漢字ROMボード(第1,第2水準)やユーザ拡張ROMのエミュレーション(PC-8801-01互換,PC-8801-20サブセット)
  • USARTエミュレータによりCMT機能をエミュレート(PC-8801-21サブセット)
  • 16ビットMCU(80186互換Am186ER)によりCP/M86を実行(PC-8801-16類似機能)
  • 制御用MCUにcortex-M3(STM32F103:Bluepill互換ボード)を搭載
  • 制御用MCUによりFPGAコンフィグレーション,USBシリアル通信やマイクロSDカードアクセスが可能
  • SDカードから拡張メモリにメモリイメージをロード/セーブ可能
  • 拡張メモリの一部を16ビットMCUとの共有メモリとして使用することでブートBIOS部やアプリなどをロード実行やPC88とデータ交換が可能
FinalProduct semiProduct
around FPGA around MCU
PCB surface PCB rearface

An Embedded FORTH Operating System (mecrisp-stellaris w/USB&FatFS)

MSP430用のFORTHであるmecrispをARM cortex-M向け移植したもので,Bulepill互換ボードを使用して手軽に対話環境を利用できるものです。 USB-to-serial bridgesを組み込んだpill_serial]("https://github.com/ivpri/mecrisp_pillserial"をマージしたものに,さらにFatFsで sdカードを使用できるように改造を加えたものにしています。

Bulepill互換ボードでSCSIダイレクトアクセスデバイスエミュレータ(scsiem)

May-04-2020 scsiem version 1.2 SASI対応
May-01-2020 scsiem version 1.1 マルチドライブ対応
Apr-30-2020 scsiem version 1.0 初回リリース
Bulepill互換ボードを使用してSDカードのHDDイメージをSCSIデバイスとして使用できるエミュレータを作成してみました。
SCIS ID 0-5のデバイス(最大6デバイス)か SASI UNIT ID 0-1(LUはともに0で最大2デバイス)のドライブをエミュレートします。
ソースはarduinoスタイルで, PlatformIO環境(プラットフォームはststm32)でビルド出来ます。

20ピンDIPパッケージ(tiny2313ほぼピン互換)のSTM32F1版ヘンテコボード

取り付けスペースがあればAVRのATtiny2313と差し替えができる変換基板のSTM32F1版をホームメイドな片面基板で作ってみました。
AVR to stm32f103C conversion board

20ピンDIPパッケージ(tiny2313ほぼピン互換)のSTM32F0版ヘンテコボード

DIPパッケージのcortex-M0が流行ってるみたいなので便乗してみました。
STM32F0版20ピンDIP変換ボード(企画倒れ)
AVR to stm32f051k conversion board

モミジもみもみボードとI2C液晶で時刻表示

モミジもみもみボードを使って秋月I2CLCDコンパチの液晶で時刻表示してみました。

モミジもみもみボードで¥39のG-LCDを使ってみる

モミジもみもみボードを使ってジャンクのグラフィックLCDをテスト表示してみました。

モミジもみもみ(Maple-mini互換)ボードをST-Linkでデバッグする

モミジもみもみボードやMaple-miniボードをSWDによるST-Link経由で,ST-linkユティリティやOpenOCDなどを使用してデバッグしてみます。

モミジもみもみ(Maple-mini互換)ボード

Leaf LabsのMaple-Miniボードの機能互換ボードを作ってみました。
SPI2に接続されたSDカードからSRAMへロードして実行できる機能をブートローダに追加してみました。
番外編:STM8S-discoveryを使用したもの

高精度RTC(DS3231)とSTM8S-discoveryを使った時計

STM8Sdiscoveryボードを使用してTCXO RTCを使用してキャラクタ型LCDに時刻を表示するシンプルな時計です。

STM8SでForth

パブリックドメインとして公開されているeForth for STM8Sです。
シリアル周りとEXT-Xtalの設定周りでちょっとおかしかった点を修正してあります。

←はSTVD(ST Visual Desktop)のプロジェクト(STmicroのアセンブラ)のアーカイブへのリンクです。
アーカイブにあるeForth4STM8S/Debug/eforth4stm8s.s19をSTM8S Discoveryに焼けばFORTHが動作します。

UART2(PD6=Rx PD5=Tx)がコンソールで通信条件115200bps 8N1で接続してください。
↓ ボードのLED(PD0)を明滅させるワードを実行したときのログです。
stm8eForth v2.1
: DELAY 20 FOR 10000 FOR NEXT NEXT ; ok
HEX ok
: BLINKER DUP + FOR R@ DUP . 1 AND 500F C! DELAY NEXT ; ok
DECIMAL ok
10 BLINKER 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ok



お問合せがあれば,yesドットavrアットまーくgmailどっとcomまで [ご注意] ・このページの記載事項については,一切無保証です。
inserted by FC2 system