近頃のマイコンには、UARTの機能としてSmart card対応機能をもった機種がいくつもあります。そんな中から、今回は積み基板となっていたNucleo-F103RBを初めて使ってみました。
結論から先に書いてしまうと、つなぎ方は次のとおりです。
SIMソケットは8ピンですが、実際には5ピンを使うだけでつなぐことができます。USARTで使うのはTXとCKの2つの信号線だけです。TXの端子を送信/受信動作で切り替えて使う半2重でデータを送受します。C1端子は、SIMカードのVCCですが、今回はGPIOを使って電源のON/OFFをしています。SIMカードの電気的インターフェイスはISO/IEC 7816-3で定められていますが、その仕様ではVCC電圧は、カードのクラスに応じて5V, 3V, 1.8Vの3種類となっています。今回つかうNucleoは3.3V動作ですので、GPIOのHレベルもほぼ3.3Vとなり、その電圧がSIMカードに加わってしまう事になりますが、まぁ問題はないでしょう。
ISO/IEC7816ではC6端子は、Vpp (Programming Voltage)となっており、書き込み時の電圧を供給する端子となっていますが、一般的なSIMカードではVCC端子電圧を使っての書き込みが可能であり、Vpp端子は使う必要は無いようです。SIMカードの基本仕様となっているETSIのGSM 11.11では、
実はSTM32F103の場合にはST社からもSIMカードのつなぎ方を説明したアプリケーション・ノート(AN2598)が出されています。このAPノートではST8024というドライバICを使ってSIMカードを使う例が示されていますが、電圧に問題がなければ直接つないでしまって構わないようです。同様にATMELのSAM3Sシリーズの場合にもSAM3S-EKを使用したアプリケーション・ノート(AT02410)が出ています。こちらの説明ではドライバICを使わずにマイコンを直結していますので、ドライバはなくても良さそうと判断した次第です。
このようにしてSIMカードのつなぎ方がわかったので、Nucleo-F103RBとSIMをブレッドボードをつかってジャンパで接続してみました。手頃な大きさのボードを持っていないので、無用にデカイです。
慣れ親しんだEclipse+Jlinkで開発している都合で、ST-Linkは使わずにJ-Linkで書き込み/デバックをしています。ST-Link部分は電源供給のためにのみ使用。次回の記事では、実際のSIMカードの読み取り結果について報告します。
結論から先に書いてしまうと、つなぎ方は次のとおりです。
Nucleo-F103RB | Direction | SIM Socket | |
---|---|---|---|
Pin | Function | Pin | |
PB5 | GPIO Output | --> | C1 (Vcc) |
PB9 | GPIO Output | --> | C2 (Reset) |
PB10 | USART3 TX | <---> | C7 (I/O) |
PB12 | USART3 CK | --> | C3 (Clock) |
GND | GND | --- | C5 (GND) |
SIMソケットは8ピンですが、実際には5ピンを使うだけでつなぐことができます。USARTで使うのはTXとCKの2つの信号線だけです。TXの端子を送信/受信動作で切り替えて使う半2重でデータを送受します。C1端子は、SIMカードのVCCですが、今回はGPIOを使って電源のON/OFFをしています。SIMカードの電気的インターフェイスはISO/IEC 7816-3で定められていますが、その仕様ではVCC電圧は、カードのクラスに応じて5V, 3V, 1.8Vの3種類となっています。今回つかうNucleoは3.3V動作ですので、GPIOのHレベルもほぼ3.3Vとなり、その電圧がSIMカードに加わってしまう事になりますが、まぁ問題はないでしょう。
ISO/IEC7816ではC6端子は、Vpp (Programming Voltage)となっており、書き込み時の電圧を供給する端子となっていますが、一般的なSIMカードではVCC端子電圧を使っての書き込みが可能であり、Vpp端子は使う必要は無いようです。SIMカードの基本仕様となっているETSIのGSM 11.11では、
GNDにはつなぐなと書かれています。使用したSIMソケットにはカード挿入を検出するための端子が用意されていますので、カード挿入を検出してからVccを加えるというような処理も可能ですが、今回の実験では同端子は使用していません。
実はSTM32F103の場合にはST社からもSIMカードのつなぎ方を説明したアプリケーション・ノート(AN2598)が出されています。このAPノートではST8024というドライバICを使ってSIMカードを使う例が示されていますが、電圧に問題がなければ直接つないでしまって構わないようです。同様にATMELのSAM3Sシリーズの場合にもSAM3S-EKを使用したアプリケーション・ノート(AT02410)が出ています。こちらの説明ではドライバICを使わずにマイコンを直結していますので、ドライバはなくても良さそうと判断した次第です。
このようにしてSIMカードのつなぎ方がわかったので、Nucleo-F103RBとSIMをブレッドボードをつかってジャンパで接続してみました。手頃な大きさのボードを持っていないので、無用にデカイです。
慣れ親しんだEclipse+Jlinkで開発している都合で、ST-Linkは使わずにJ-Linkで書き込み/デバックをしています。ST-Link部分は電源供給のためにのみ使用。次回の記事では、実際のSIMカードの読み取り結果について報告します。