FT232RLは最強ですと主張する記事(1)

前々から愛用しているチップなんですが、これがまた素晴らしく大好きなのでこんなゴリ押し記事を書かせて頂きました。はい。

個人的にはこちらを愛用。↓
FT232RL USBシリアル変換モジュール: 半導体 秋月電子通商 電子部品 ネット通販

うちのサークル(WMMC)では以下を使っています↓
FTDI USB・シリアル変換ケーブル(3.3V): 半導体 秋月電子通商 電子部品 ネット通販

このケーブルタイプのやつはあまり自由でないので今回の記事みたいなことをやる場合はあまりおすすめしないです(老gOBをdisっている訳ではない)。
ということで上のモジュールを使う場合についての説明となります。その他ストロベリー・リナックスのFT232RQ(でしたっけ)とかを使う場合でも、対応するピンが出ていれば使用可能です。

基本のLチカ

最初から飛ばすなおい!?って感じですよね。まあ確かにFT232RLはマイコンではないのでプログラムの書き込みは不可能です。あ、EEPROMにはデータが書き込めますがねアハハ
ということで、制御はPCにやらせてFT232RLをI/Oとして使おうキャンペーンでやっていきましょう。なお、この項は以下のサイトを参考にしました。ってかパクりました。

Introduction to FTDI bitbang mode | Hackaday

Mac使いの方々は何もせずともFTDI社のチップは動くはずです。それでいいです。その他の環境はよくわかりませんが、まあ大体OKであることを願います。WindowsはおそらくC言語の開発環境を揃えることでさえも敷居が高いクソOSですが、頑張っていただきたいですな。

コーディング

さて、唐突ですが以下にLチカプログラムをどど〜んと載せてしまいます。みなさんもC言語書きましょう。このコードは上のリンク先のページにあるものそのままです。


とりあえずこれでLチカプログラムは完成です。コンパイルしましょう。その際、FTDI社の静的ライブラリを読み込む必要があるので、以下のコマンドを打ってください。

$ gcc ftdi.c -lftdi

-lなんとかlibなんとか.aを読み込むためのオプション。おそらくC言語を書いたことのある人ならば-lmと打ったことがあるはず。これはC言語標準の数学ライブラリlibmを読んでいるということなのですね〜〜。

LEDのセット

LEDと適当な抵抗器を直列につなぎ、アノード側をCTSへ、カソード側をGNDに接続します。

実行

./a.outを実行すれば…というわけには行かないのですね。 ここではMacLinuxについて説明します。

Linuxの場合はそのままでは実行できず、rootになる必要があります。ですので、

$ sudo ./a.out # Linuxの場合

と打ちましょう。管理者ではない方はパパやママにパスワードを教えてもらいましょう。

Macの場合はカーネル拡張機能によるFTDI社チップ用のドライバが干渉して動いてくれません。面倒ですが、次の手順に従います。

まず、どのkextが使われているかを確認します。以下からはFT232RLをPCのUSBポートに接続した状態で作業を行ってください。

$ kextstat | grep FTDI

何か1つ出てきたと思います。2つ以上出た場合はよく分かりません。1つ出てきたそのkextの名前を利用して、次に

$ sudo kextunload -bundle-id (さっき出てきたcom.〜〜とかの名前を打ち込む) # Macの場合

として一旦無効化させます。ここでもroot権限が必要になってしまいます。そしてついに、

$ ./a.out

で実行です!なんとCTS端子から伸びるLEDがチカチカしているのではありませんか!というわけで、Lチカでした〜〜(サッパリ)

このチップにはBit Bangという隠れた機能がありまして、これをそのまま用いていると言った感じです。以下に述べていくマイコンライタ等の中にはこのBit Bangを存分に利用したものがあります。詳しいことはぜひggってみてくださいね。
また、無効化したkextを再度有効化する場合はkextunloadkextloadに置き換えて実行すれば良いです。それかマシンを再起動すればすぐもとに戻りますよ。

というわけで、なが〜〜くなってしまったので続きはまた今度。