フォト
無料ブログはココログ

MyList

« スペシャリストとプロフェッショナルの違い | トップページ | チーズはどこへ消えた(4) <スニッフやスカリーのように> »

2017年9月24日 (日)

STC12C2052

aitendoSTCmicro Technologyのマイコンを売っている。 8051コアのCPUは特に珍しくもないのだが、前から気になっていたので買ってみた。

 どちらも、8051の上位コンパチでいろいろ拡張されている。

Stc12c2052_s

 STC12C2052は8051のSRAMを256byteにして、2kのフラッシュメモリを内蔵して、外部バス(AD0-7)とポート2(P2.0-7)を取って、SPI、I2C を付けたような感じだ。

 何と言っても安い100円。SBL(Serial Boot Loader)を持っているので、専用のプログラマがなくてもファームウェアを書くことができる。

Stc12le5604ad_s

 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を使うにはいくつか方法がある。

  1. Windows版のpythonを使う
  2. Cygwinのpythonを使う
  3. Bash On Windowsのpythonを使う

1と2は使えることを確認した。3はシリアルデバイス(ttyS?)が見えない。

Windows10のWindows Subsystem for Linux(WSL)のpythonで使えることを確認した。(2021/02/21)

シリアルポート
 stcgalは/dev/ttyUSB0をデフォルトで使うので、ポートを指定しなければならない。
  1. Windows版のpythonは
    C:> python stcgal.py -p COMx 
    COMxはデバイスマネジャーで探す。
  2. Cgywin,WSLのpythonは
    $ python -p /dev/ttySx  
    ttySxは ls /dev で探す。
    ttySxの番号(x)は、CygwinではWindowsのCOMの(数字-1)、WSLではCOMの数字
    例:シリアルポートCOM2を使う場合、Cygwin: /dev/ttyS1、WSL: /dev/ttyS2
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に接続、左側の赤ジャンパーは電源(未接続状態)

Stc12c2052_s

 ISPの手順は↓のとおり。

  1. GNDだけ接続。(VCCはまだ接続しない)
  2. STC12C2052のP3.0/RxD、P3.1/TxDをパソコンのシリアルに接続
  3. STC12C2052のP1.0とP1.1をGNDに接続
  4. stcgal.py -p /dev/ttyS2  ←stcgal実行
  5. "Waiting for MCU, please cycle power:" ←が表示される。
  6. 電源投入(VCC接続)
  7. ↓のようなメッセージが表示される
$  ~/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!

Lchika
↑リンク先に

STC12C2052_Lchika.avi (1189.7K)



最近の投稿】【最近のCPUボード】【2016の投稿】【2015の投稿

 

 

« スペシャリストとプロフェッショナルの違い | トップページ | チーズはどこへ消えた(4) <スニッフやスカリーのように> »

CPUボード」カテゴリの記事

コメント

コロナ禍で自粛中なので昔使ったBASIC52を思い出してaitendoからSTC89C52を購入してSTCのISPで書き込もう
としています。4年以上前のことでお忘れかもしれませんが、STCGALに関してご教授お願いいたします。
 私は残念ながらCgwinおよびPythonに関してほとんど素人です。Pythonについては
技術本を購入する必要があります。(setup.pyが実行できませんから?)
Cygwinでls /dev にてttyS_ は読み出せますが、stcgal をRunすると”FileNotーFound”になってしまいます。
理由が分からずでストップしたままです。原因が分かりましたらよろしくお願い致します。

  

たーじーさん コメントありがとうございます。

週末に確認してみます。

たーじーさん
確認してみました。

・Cygwinのpythonがインストールされていない
・Windows版のpython.exeが実行されている
の可能性があります。↓に書きました。

https://yoshi-s.cocolog-nifty.com/cpu/2021/02/post-afd171.html

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: STC12C2052:

« スペシャリストとプロフェッショナルの違い | トップページ | チーズはどこへ消えた(4) <スニッフやスカリーのように> »