STC12C2052
aitendoでSTCmicro Technologyのマイコンを売っている。 8051コアのCPUは特に珍しくもないのだが、前から気になっていたので買ってみた。
どちらも、8051の上位コンパチでいろいろ拡張されている。
STC12C2052は8051のSRAMを256byteにして、2kのフラッシュメモリを内蔵して、外部バス(AD0-7)とポート2(P2.0-7)を取って、SPI、I2C を付けたような感じだ。
何と言っても安い100円。SBL(Serial Boot Loader)を持っているので、専用のプログラマがなくてもファームウェアを書くことができる。
STC12LE5604ADは8051のSRAMを256byteにして、4kのフラッシュメモリ、256byteのRAMを内蔵して、外部バス(AD0-7)とポート2.6,P2.7を取って、A/D,SPI,PCA を付けたような感じだ。
STC12C2052で遊んでみた。
- コンパイラ
-
SDCCが使えるので、F/W(ファームウエア)はCで書ける。
8051コンパチだからプロセッサオプションは -mmcs51でよい。include/mcs51/stc12.hに拡張されたレジスタが定義されている。 -
コンパイルオプション、リンクオプションは↓
sdcc -o testuart.c.rel -I. -mmcs51 --model-small --no-xinit-opt \
-c test.c
sdcc -o test.ihx -mmcs51 --model-small --code-loc 0x0000 \
--code-size 2048 --idata-loc 0x0000 --iram-size 256 \
--out-fmt-ihx test.c.rel obj
- ライタ
-
このMCUはPowerOnReset時にP1.0とP1.1がGNDに落ちていると、内蔵のISP monitorが走るので、ライタ用のハードウェアを用意しなくてもシリアル経由でプログラムを書き込むことができる。
-
とはいえ、PC側のツールは必要だ。ネットを探すと、STCmicroからDLできるSTC-ISP.exeを使った説明が多いのだが、STC-ISP.exeは一部のワクチンソフトに引っかかるらしい。 他のツールを探すと stcgalが見付かった。
stcgal (https://github.com/grigorig/stcgal)はpythonで書かれていてver3.2以降のpythonが必要らしい。Windowsでpythonを使うにはいくつか方法がある。
- Windows版のpythonを使う
- Cygwinのpythonを使う
- Bash On Windowsのpythonを使う
1と2は使えることを確認した。3はシリアルデバイス(ttyS?)が見えない。
※Windows10のWindows Subsystem for Linux(WSL)のpythonで使えることを確認した。(2021/02/21)
- シリアルポート
- stcgalは/dev/ttyUSB0をデフォルトで使うので、ポートを指定しなければならない。
- Windows版のpythonは
C:> python stcgal.py -p COMx
- Cgywin,WSLのpythonは
$ python -p /dev/ttySx
ttySxの番号(x)は、CygwinではWindowsのCOMの(数字-1)、WSLではCOMの数字
例:シリアルポートCOM2を使う場合、Cygwin: /dev/ttyS1、WSL: /dev/ttyS2
- Windows版のpythonは
- ISP確認
-
データシートの「1.6 STC12C2052AD series MCU Typical Application Circuit for ISP」にある回路図は、X'talとRST(Pin1)にCRが繋がっている。STC12C2052はR/C発信器を内蔵しているので、外付けX'talは接続しなくてよいようだ。また、RSTのCRも接続しなくてもよいようだ。
-
↓手前の青白ジャンパーはシリアル、奥側の白ジャンパー×2はP10,P11をGNDに接続、左側の赤ジャンパーは電源(未接続状態)
ISPの手順は↓のとおり。
- GNDだけ接続。(VCCはまだ接続しない)
- STC12C2052のP3.0/RxD、P3.1/TxDをパソコンのシリアルに接続
- STC12C2052のP1.0とP1.1をGNDに接続
- stcgal.py -p /dev/ttyS2 ←stcgal実行
- "Waiting for MCU, please cycle power:" ←が表示される。
- 電源投入(VCC接続)
- ↓のようなメッセージが表示される
$ ~/stcgal/stcgal.py -p /dev/ttyS2
Waiting for MCU, please cycle power: done
Protocol detected: stc12a
Target model:
Name: STC12C2052
Magic: F202
Code flash: 2.0 KB
EEPROM flash: 4.0 KB
Target frequency: 5.654 MHz
Target BSL version: 5.8D
Target options:
low_voltage_reset=low
clock_source=internal
watchdog_por_enabled=False
watchdog_stop_idle=False
watchdog_prescale=256
eeprom_erase_enabled=False
bsl_pindetect_enabled=False
Disconnected!
電源を接続しても "Waiting for MCU, please cycle power:" から進まないときは、一旦電源を切断して電源を接続しなおす。 タイミングがあるようで、1回で良い場合もあるし何度も接続しなおさなけば進まないいこともある。
- Lチカ
-
書き込んだプログラムが動くか、Lチカで確認してみた。
$ stcgal -p /dev/ttyS2 testled.hex
Waiting for MCU, please cycle power: done
Protocol detected: stc12a
Target model:
Name: STC12C2052
Magic: F202
Code flash: 2.0 KB
EEPROM flash: 4.0 KB
Target frequency: 5.627 MHz
Target BSL version: 5.8D
Target options:
low_voltage_reset=low
clock_source=internal
watchdog_por_enabled=False
watchdog_stop_idle=False
watchdog_prescale=256
eeprom_erase_enabled=False
bsl_pindetect_enabled=False
Loading flash: 807 bytes (Intel HEX)
Switching to 19200 baud: checking setting testing done
Erasing 4 blocks: done
Writing 1024 bytes: ........ done
Setting options: done
Disconnected!
- CPUボード
- 8031/8052 SBC (2017/10/08)
- STC12C2052 (2017/09/24)
- STC12C2052(2) (2017/10/08)
- stcgal(2021/02/21)
【最近の投稿】【最近のCPUボード】【2016の投稿】【2015の投稿】
« スペシャリストとプロフェッショナルの違い | トップページ | チーズはどこへ消えた(4) <スニッフやスカリーのように> »
「CPUボード」カテゴリの記事
- 久々の物欲(2022.05.21)
- stcgal <質問に答える>(2021.02.21)
- micro:bitで跳び上がると表示する名札 <ウケ狙い>(2020.11.18)
- micro:bit <BLEが乗った低価格マイコンボード>(2020.09.15)
- Google日本語モールス入力(2020.05.01)
コメント
« スペシャリストとプロフェッショナルの違い | トップページ | チーズはどこへ消えた(4) <スニッフやスカリーのように> »
コロナ禍で自粛中なので昔使ったBASIC52を思い出してaitendoからSTC89C52を購入してSTCのISPで書き込もう
としています。4年以上前のことでお忘れかもしれませんが、STCGALに関してご教授お願いいたします。
私は残念ながらCgwinおよびPythonに関してほとんど素人です。Pythonについては
技術本を購入する必要があります。(setup.pyが実行できませんから?)
Cygwinでls /dev にてttyS_ は読み出せますが、stcgal をRunすると”FileNotーFound”になってしまいます。
理由が分からずでストップしたままです。原因が分かりましたらよろしくお願い致します。
投稿: たーじー | 2021年2月16日 (火) 11時44分
たーじーさん コメントありがとうございます。
週末に確認してみます。
投稿: Yoshi | 2021年2月18日 (木) 23時31分
たーじーさん
確認してみました。
・Cygwinのpythonがインストールされていない
・Windows版のpython.exeが実行されている
の可能性があります。↓に書きました。
https://yoshi-s.cocolog-nifty.com/cpu/2021/02/post-afd171.html
投稿: Yoshi | 2021年2月21日 (日) 00時49分