How-To:バス海賊、ユニバーサルシリアルインタフェース

更新:JTAGの新しいファームウェアなど

私たちは常に新しいチップまたはSIMカードをインターフェースにするために常に恍惚としていますが、私たちの熱意は通常プロトタイピングプロセスによって湿られます。どんなチップのインターフェースは通常、回路、書き込みコード、およびプログラマを運搬することを示します。たぶんプロトタイピングPCBさえも。

数年前、私たちは、PCのシリアル端末から多くのチップと話すユニバーサルバスインターフェースである最初の「バス海賊」を構築しました。いくつかの従来のシリアルプロトコルは、I2C、SPI、および非同期シリアルを含む3.3~5ボルトでサポートされています。追加の「RAW」2および3ワイヤライブラリは、ほぼ専有のシリアルプロトコルをインタフェースできます。これが私たちにとってそのような有益なツールであったことを考えると、コードをクリーンアップし、デザインを文書化し、そのようなスペック、回路図、およびソースコードを解放しました。

コンセプトの概要

バス海賊は、複数のICインターフェースプロトコルへのシリアルターミナルブリッジです。コンピュータのシリアル端末にコマンドを入力します。コマンドはPCシリアルポートを介してバス海賊に移動します。バス海賊は適切なプロトコルのマイクロチップに相談し、結果をPCに戻します。

すべてのピンは3.3ボルトを出力しますが、耐性5Voltです。接続チップに電力を供給するために、オンボード3.3Voltと5Voltの電源装置があります。ソフトウェア設定可能なI2Cプルアップ抵抗器はパッケージを完成させます。

シリアル端末インタフェースは、PC、Mac、Linux、Palm Pilots、WinCEデバイスなどのシステムと連携します。 Crapwareは必要ありません。 USBデバイスを検討しましたが、USBはシリアルポートを持つ実質的な携帯端末と互換性がありません。また、5Volt耐性入力を備えた3.3Voltデバイスも望まれていましたが、多くの人気のあるスルーホールUSBマイクロコンントラルは5Voltの部品です(例えば、PIC18FX550)。

バス海賊は現在、高速インターフェース用の3つのハードウェアプロトコルを「話す」、バス操作を容易にするための2つのソフトウェアプロトコルライブラリを持っています。各プロトコルの理論と仕様は、ここでカバーできるものを超えていますが、これらのチュートリアルのいくつかをチェックしてください。

I2C

遅い2ワイヤバス。 WikipediaはI2Cの背景を始めるのに素晴らしい場所です。 i2c-bus.org、ロボットエレクトロニクス、組み込みシステムアカデミー、およびembedded.comは、I2Cチュートリアルを知っています。

スピ

基本3ワイヤバス。ウィキペディアは背景を持っています。 embedded.comは素晴らしいチュートリアルとI2Cとの比較を行いました。

ユニバーサル非同期受信機トランスミッタ(UARTまたはシリアル)

PCシリアルポートプロトコルとしてその外観が最もよく知られているクロックおよびタイミング依存シリアルプロトコル。 Wikipediaは非同期シリアルプロトコルに関する背景を持っています。

生2ワイヤー

これは、I2Cと同様であるがACKビットなしで一般的な2線式プロトコルライブラリです。このモードで利用可能なバス操作を使用して、I2Cと多くの独自の2線式プロトコルを作成できます。このライブラリを使用して、スマートカードやSENSIRION SHT11の温度/湿度センサーなどの非I2C 2ワイヤデバイスで動作します。

生3ワイヤー

これは、SPIと同様の一般的な3つのワイヤプロトコルライブラリですが、ハードウェアモジュールの制約がありません。このライブラリを使用して、Sparkfun Nokia 6100 LCDノックオフのように、8bit互換性のない3-Wireプロトコルを使用するデバイスで動作します。このモードで利用可能なバス操作を使用して、たくさんの3つのワイヤプロトコルを形成できます。

ハードウェア

フルサイズのPCB配置画像(PNG)をクリックしてください。ネジ端子は電源装置に接続します。 7ピンヘッダーの行がIOピンに接続します。ラベルにもかかわらず、7Volts DCのみが必要です。

ピン

スピ

I2C

rs232

B9.

mos

SDA.

B8.

クルク

SCL

B7.

味噌

処方箋

B6

CS.

TX.

B5

a a

a a

a a

接地

g

g

g

この表は各バスモードのPIN接続を示しています。 RAW 2 Wire Modeは、i2cと同じピン構成を使用します。 RAW 3 Wire ModeはSPIと同じピン構成を使用します。

フルサイズの回路画像(PNG)をクリックしてください。回路とPCBはCADSoft Eagleのフリーウェアバージョンを使用して作成されます。プロジェクトアーカイブ(ZIP)をダウンロードしてください。

PIC 24FJ64GA002

私たちはバス海賊にPIC24FJ64GA002マイクロコントローラを使用しました。これは私達が私達のミニサーバープロジェクトで使用されているものと同じチップです。私たちが望むすべてのことをするのに十分速い(16mips)、周辺ピン選択機能により、ハードウェアSPI、UART、およびI2Cモジュールが出力ピンを共有できます。各POWERピンにはデカップリングコンデンサ(C12,13)が必要で、MCLR機能はピン1と3.3ボルトの間の抵抗(R7)を必要とします。写真は、10UFタンタルコンデンサ(C3)を必要とする内部電圧レギュレータを持っていますが、問題なく普通の電解コンデンサを使用しました。 PIC24Fチュートリアルでプログラミングとこのチップを操作することについて読んでください。フォトデバッガがない場合は、いくつかの読者がeBayで$ 40のICD2クローンを推奨します。

写真は3.3ボルトで動作しますが、デジタル専用ピンは5Voltロジックをインタフェースするための5Volt耐性です。ピン14,15,16,17,18,21、および22はデジタルのみです。デジタルのみは、データシートを通して見ることによって考え出し、アナログ接続タイプのピンを除去する(表1-2、11-16ページ)。データシートによると、I2Cピンも5Volt耐性です。 Web上に矛盾する情報の束がありますが、データシートPage 230、パラメータDI28は、アナログ回路なしの24FJ64GA002 I2Cピンの最大入力が5.5ボルトであることを明確に示しています。

ピン21および22(RB10 / 11)は、抵抗R4およびR5を介してSDA / SCLをプルアップすることができる。

MAX3223CPP.

このチップは、3.3Voltシリアル出力をPCシリアルポートに対応した+/- 10Volt RS232信号に変換します。 MAX3223CPPはMAX202の3-5Voltバージョンで、追加の省電力機能があります。 MAX RS232トランシーバには、チャージポンプ(C4,5,7,8)、および1つのデカップリングコンデンサ(C17)に4つの0.1UFコンデンサが必要です。私たちはすべてのために同じコンデンサを使いました。

MAX3223CPPを使用しました。これはもう利用できないようです。 MAX3223EEPP +は、Digikeyで7ドルで利用可能なピン互換の新しいバージョンです。痛い! 3223の省電力機能のどれも使用されていないので、安価でシンプルな3.3Volt RS232トランシーバを必要な場合に置き換える必要があります。

電源供給装置

ほとんどのチップは、バス海賊のオンボード3.3ボルトおよび5Voltの供給から電力を供給できます。 5ボルトは、共通の7805レギュレータ(VR2)と2つのデカップリングコンデンサ(C9,10)によって供給されます。 LM317調整可能なレギュレータ(VR1)は2つの抵抗(R2,3)を使用して3.3ボルトに設定され、2つのデカップリングコンデンサ(C6,7)が必要です。回路は7-10Volt DC電源(J1)を必要とする。

部品表


価値

IC1
PIC24FJ64GA002-DIP

ic2
MAX3223CPP(MAX3223EEPP +を試す)

C3.
10UFコンデンサ(好ましくはタンタル)

C4-13,17
0.1UFコンデンサ

r1
330オーム抵抗器

r2
240オーム抵抗

r3
390オーム抵抗器

R4,5,7
2K2オーム抵抗器

vr1
LM317

vr2
LM7805.

x1
スクリュークランプ(3端子)*未テスト

x2
DB9メスコネクタ(シリアルポート)*未テスト

ICSP、SV3
.1 “ピンヘッダ、理想的な角度

j.
パワージャック、2.1mmピン

LED1
3mm LED(オプション)

ファームウェア

ファームウェアは、Photo C30コンパイラの無料デモ版を使用してCで書かれています。写真24Fシリーズの紹介でこの写真を扱うことについてすべてを学びましょう。プロジェクトアーカイブ(ZIP)をダウンロードしてください。

main.c – ユーザー端末インタフェースを処理します。

Buspirate.c – 適切なバス上のアクションに構文を変換する抽象化ルーチン。

UARTIO.C – 両方のハードウェアUART用のIOルーチン。

M_I2C_1.C – [Michael Pearce]によるソフトウェアI2Cルーチン。写真ハードウェアI2Cが機能するようにすることができなかったので、この貴重な図書館を使用しました。ソフトウェアはI2Cスピード設定を考慮に入れており、約5kHzで動作しているようです。

SPI.C – ハードウェアSPIモジュールを駆動するルーチン。

RAW2WIRE.c – ソフトウェア2-Wireインターフェイスライブラリ。

RAW3WIRE.c – ソフトウェア3-Wire(SPI)インタフェースライブラリ。

ユーザー入力は、改行文字(Enter)が検出されるまで4000バイトのバッファに保持されます。入力の最初の文字がメニューオプションである場合(下記参照)、メニューダイアログが表示されます。それ以外の場合、文字列はバスを介して送信するためのデータに対して解析されます(構文を参照)。このコードは、恥ずかしい数のスイッチステートメントとスパゲッティコードで構成されています。

端末インタフェース

デバイスを制御するためにジャンクのソフトウェアを作成するのではなく、ASCII端末と連携するシリアルコマンドラインインターフェイスを作成しました。バス海賊は、3桁の結果コードとショートメッセージを持つコマンドに応答します。コードはPC自動化を念頭に置いて作成されます。プロジェクトアーカイブ(zip)に結果コードの表が含まれています。

メニューオプション

メニューオプションは、データ転送を伴わないシングル文字コマンドです。メニューにアクセスするには、文字を入力してを入力します。

? – コマンドと構文を備えたヘルプメニューを表示します。

M – バスモード(SPI、I2C、UART、生2線、生3線)を設定します。速度、極性、および出力状態(モードに依存)のプロンプトですぐに続きます。

バス速度:SPI:30,125,250,1000kHz。 I2C:100,400,1000kHz。 UART:300,1200,2400,4800,9600,19200,38400,57600,115200bps。生モード:1,10,50kHz。

逆時計設定通常のIDLE状態を正常の反対側に設定します(通常のSPI:Normal UART:IDLE HIGH):SPI:IDLE HIGH。 UART:低いアイドル

一部のモードには、プルアップ抵抗(Low = Ground、High = Input)で使用するためのオプションのHigh-Z出力モードがあります。

L – トグルビット送受信順序:最下位ビット最初のビット。

P – SDA / SCLピンプルアップ抵抗トグル(3.3ボルト)。 I2Cと生2線式モードでのみ有効です。

O – 数値出力表示形式を設定します。端末は、10進数、16進数、およびバイナリのASCII値として数値を表示できます。 4番目のフォーマットは、ASCIIフォーマットテキストを読み取るために、未処理のバイトを送信します。

構文

基本的な構文は、バス上のチップと通信するために使用されます。構文コマンドには、通常、すべてのバスタイプに適用される一般的な関数があります。

A / A / @ – 補助ピンを切り替えます。大文字の「A」はAUXの高さ、小さい「A」セットをグランドに設定します。 @ AUXを入力(ハイインピーダンスモード)に設定し、ピン値を読み取ります。

[ – データの書き込みを開始します。 SPI / RAW 3 Wire:チップ選択が有効になります。 I2C / RAW 2ワイヤ:開始条件。 RS232:UARTを開く、受信したバイトを破棄します。

{ – データを読み取りで書き込みを開始します。 [、以外:SPI / RAW 3 Wire:書き込みごとに読み取りバイトを表示します。 RS232:ASYNCHRに到着したときにデータを表示しますあくまに。

– データ書き込みを終了する。 SPI / RAW 3 Wire:チップ選択無効化。 I2C / RAW 2ワイヤ:停止条件。 RS232:UARTを閉じます。

R / R – バイトを読み取ります。 SPI / RAW 3ワイヤ:ダミーバイトを送信し、リターンリードを読みます。 I2C:ACKでバイトを読み込みます。生2線:8ビットを読みます。 RS232:バイトの場合はUARTを確認して、空の場合は失敗してください。バルクは255バイトまで読み取るために0r1 … 255を使用してください。

0B – このバイナリ値を書き込みます。フォーマットはバイトの0B00000000ですが、部分バイトも大丈夫です.0B1001。

0hまたは0x – この16進値を書きます。フォーマットは0h01または0x01です。部分バイトは大丈夫です:0xa。 A-Fは、小文字または大文字です。

0-255 – この10進値を書きなさい。 0x、0h、または0bの前にある数字は、小数値として解釈されます。

、またはスペース値区切り文字。数字を区切るためにコマやスペースを使用してください。任意の組み合わせが問題ありませんが、非数値の値の間には区切り文字は必要ありません。{0xa6,0,0 16 5 0B111 0 HAF}。

RAW 2ワイヤモードと生3ワイヤモードのダイレクトバス操作コマンド。
^ – 1クロックダニを送信します。複数のクロックダニについては0 ^ 1 … 255を使用してください。

/および\ – クロックレベルの高さ(/)とlow(\)を切り替えます。クロック遅延(100US)を含みます。

– / _ – データ状態の高い( – )と低(_)を切り替えます。データ設定遅延(20US)を含みます。

! – クロックで1ビットを読みます。

。 – データ端子状態(クロックなし)を読み取ります。

遅延1US。複数の遅延に対して0&1 … 255を使用してください。

それを使って

バス海賊を行動中に示す2つの例がここにあります。端末はローカルエコーでASCIIモードに設定する必要があります.Windowsシリアル端末を使用しました。 PC側シリアル接続は115200bps、8n1です。バス海賊は、任意の単一の行送りタイプ(0x0a、0x0d)、またはその両方に応答する必要があります(Windowsスタイル)。

.i2c / SPI – Flash 24LC1025 EEPROM

MicrochipのEEPROMは常設保存メモリチップであるため、24LC1025はI2Cインターフェイスを備えた128Kバイバイトのストレージを持ちます。ビッグサーキットや書き込みコードをパン搭載することなく、このチップをテストできます。

写真はバス海賊に接続されている24LC1025を示しています。 EEPROMは2.7から5ボルトに働くので、バス海賊からの3.3ボルトの供給を使用して回路に電力を供給しました。オンボードSDA / SCLプルアップ抵抗器はI2Cバスを高く保持し、外部抵抗の必要性を排除します。単一の0.1UFコンデンサは電源からEEPROMを切り離します。

I2Cモードを設定します

まず、BUS PirateをI2Cモードで設定し、プルアップ抵抗を有効にします。バス海賊が現在ソフトウェアI2Cライブラリを使用していることを考慮すると、スピード設定は実際には効果がありません。

SPI> M <-enter Mモード選択 1. Spi. 2.I2C 3. UART. 4.生2ワイヤー 5.生3ワイヤー i2cのモード> 2 <-enter 2 900モードセット スピードを設定: 1. 100kHz(標準) 400kHz(高速モード) 3. 1MHz(高速) スピード> 1 <スピードは本当に何もしません... 901スピードセット 202 I2C準備完了、プルアップのためのP / P I2C> P <-ENA使用可能なI2Cプルアップ抵抗 205 I2Cプルアップオン i2c>

EEPROMに書く(I2C)

すべてのI2C操作は開始条件{または[停止状態で終了]または]から始まります。書き込みはデバイス(1バイト)にアドレス指定して確認応答ビット(ACK)を見つけようとすることから始まります。 EEPROMが応答する場合は、データの場所を書き込む(2バイト)とデータペイロード(nバイト)を送信できます。バス海賊は各書き込みの終わりにACKを自動的にチェックし、それぞれ読み取るACKを確認します。

24LC1025ベースアドレスは1010xxyです。ここで、XXはピン2と3の状態によって切り出され、Yは読み取られ(1)または書き込み(0)モードです。ピン2と3をハイに接続し、フル書き込みアドレス1010110を作成します。 。

I2C> {0B10100110 0 0 1 2 3 4 5 6 7 8 9 10 0xB 0xc 13} <-i2cコマンド 210 i2c開始条件<-bus start. 220 I2C WRITE:0xa6 ack:はい<-address送信し、ACKを受信しました 220 I2C WRITE:0x00 GOT ACK:はい<書き込みアドレス 220 I2C WRITE:0x00 GOT ACK:はい<書き込みアドレス 220 I2C WRITE:0x01 ack:はい<-data ... 220 I2C WRITE:0x0D GOT ACK:はい 240 I2C停止条件 i2c>

EEPROM(I2C)から読む

24LC1025を読むと2つのステップがかかります。まず、データなしのライトコマンドはアドレスポインタを設定します。第二に、読み取り通信

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

大学の研究者は420 PS3大学の研究者は420 PS3

からスーパーコンピュータを製造しています。科学のための資金が多くの研究者にとって乾燥していることに注目して、Gauravは、古い冷蔵送料の中で冷たくされていると同様に200のPlayStation 3コンソールからスーパーコンピュータを開発しました。国立科学財団からのUmass Dartmouthの彼の目的は、重力波についての何かを学ぶことに目を引くブラックホール衝突をシミュレートしています。 博士[Gaurav Khanna]は、PS3スーパーコンピュータを利用して意味のある科学を行うための完全な見知らぬ人ではありません。 7年後に彼はLinuxを実行している16 – PS3スーパーコンピュータを推奨し、ソニーを4つのコンソールを寄付するために説得するために処理されました。大学はもう1つの8人のために資金調達し、Gauravを自分のポケットのうちの最後の4人に積み上げました。彼はそれを「PS3重力グリッド」と一緒に抱きしめて、クラスターに対する世界的な関心を持っています。同等のパフォーマンスのために、それは彼に純正スーパーコンピュータのコストを10%犠牲にしています。これにより、ハッキングされたスーパーコンピュータと重力波の両方の紙が公開されました。しかし、そのリグは今日少し古くなっています。空軍に入る。 [カナナ]博士がデータをクランチするためにPS3を唯一のものではありませんでした – 2010年に米国の空軍は1,760 PS3の「コンドルクラスター」を開発して、都市全体のレーダーイメージングとニューロモルフィックAI研究を行いました。それらのハードウェアが期限切れになると、空軍は彼の新しいビルドのためにPS3の200の200の200歳に寄与しました。彼がそれらを稼働したので、空軍は420の全体としてノートスニッカーが刺激されていないためにもう1つの220に寄与している。 現在8歳のハードウェアがまだ費用対効果が高いと懐疑的なため、無料のコンソールでも限界があります。 RAMは問題で、現代のグラフィックスカードはそれぞれ20 ps3と同等です。最近の顕著な目標は、ソニーはGET GOから鍵を帯びてくれたPS4 OSを持っています – ありがとうソニー。次のクラスタが整理されたクラスタは、グラフィックスカードと同様にPCSとなります。今のところ、[Gaurav]には、その要求クランチと同僚のキューが彼の後ろに発展しています。

あなたの下の火をつけなさい…スケートボード?あなたの下の火をつけなさい…スケートボード?

子供たち、家でこれを試してはいけません。または少なくとも前に引火性がないことを確認してください。 邪魔にならないように、私たちは尋ねなければなりません – 誰が火事で遊ぶのが好きではないのですか?私たちはあなたの多くがあなたの生活の中でいくつかの時点で小さなスケートボードを楽しんだことに賭けています。 [ミイキサウルス] 2つの最愛の活動と結婚し、炎を投げるスケートボードを作った!部品数はかなり低いため、すべてのアイテムをローカルに送信できない場合は、Amazonから購入できるようになります。 [ミキサウス]燃料が注がれるのを防ぐために、燃料タンクキャップに2本のパイプのうちの1つを曲げた方法など、いくつかの便利なヒントを与えます。また、彼はアダプタを使用してチューブの直径を1/4 “から1/8″にし、それはより良い燃料流をより良くする。 この小さなフットクッカーをハンドヘルドリモコンで操作されるべき追加の電子機器とワイヤーをより複雑にする代わりに、[ミキサウルス]は、いくつかのフットアクティブなスイッチを使用してスケートボードに直接コントロールを構築することを決定しました。これは彼の手が彼のスピードを見ているすべての昔で波を放つし続けます。または消火器を運ぶために、まだより良い。 確かに、炎が本当に遠すぎることがなく、[ミキサウルス]自分自身が言うのは、ビデオから見えます。 「炎が活性化されたときに前進している限り、あなたは行くのが良いです!」 このため、あなたはおそらくあなたのお気に入りの理事会を使いたくないでしょう。 あなたが休憩の後にビデオを見るときにこれを見るでしょう。 ほこりを集めてきた古いスケートボードを見つける時が来ました… これはあなたをいくつかの危険な炎を捨てるためにあなたを気分にしましたか?この腕に炎の投げを取り付けているかもしれません。

Retinaディスプレイグラフィックを備えたアプリは、今年のWWDCでRetina Display Macを発表しているAppleがまだ納得していない人のために、WWDC [画像]Retinaディスプレイグラフィックを備えたアプリは、今年のWWDCでRetina Display Macを発表しているAppleがまだ納得していない人のために、WWDC [画像]

の前にMac App Storeで表面化し始めます。 Mac App Storeはいくつかの保証を提供します。 11インチと13インチのMacBook Air、15インチMacBook Pro、およびAppleのデスクトップが提供するIMACはすべて、最適なシャープネスのスクリーンに恵まれていると予想されています。 Retinaアプリは確かに疑いの余地がありません。結局のところ、開発者がRetinaの互換性のために視覚要素を更新するのは非常に簡単です。そうは言っても、Appleは上記のアプリを承認しましたが、その背後にある開発者がRetinaをMacの範囲に導入することが網膜をもたらすのか、それとも単に予想されていたのかは現在不明です。 3月にiPadのRetinaの実装によってもたらされた視覚的品質の大幅な改善を考えると、このような機能が人気のMacシリーズにヒットする可能性の見込みは、おそらくあなたが口に泡立っているでしょう。 iPhone 4は、2010年にRetina Displayを消費者に知る最初のデバイスであり、多くの人が振り返っていません。 第3世代のiPadに電力を供給するために必要なバッテリー容量の増加とその後のサイズの増加を考慮すると、Appleが今後のデバイスに適切に電力を供給しながら、特にノートブック内で細長いフォーム要素を維持するかどうかを確認するのは興味深いでしょう。範囲。 LTEラジオの導入を見たiPadとは異なり、MacBook AirとProの変更は増分以上のものであるとは予想されておらず、Proが光学ドライブを捨てることが予想されるため、すべての目がMacBookのかどうかにかかっています。空気は、カラフルでピクセルが豊富な新しい居住者で、強力なバッテリー、薄いフォーム要素、賢明なパワーを維持できます。 Retinaに更新されたMacアプリの中には、FolderWatchがあり、バージョン2.0.4にプッシュされました。 1年前にAppleのスタッフのお気に入りとして賞賛されていますが、開発者に少し敏感な内部情報が与えられている可能性があります。 いずれにせよ、私たちは月曜日にもっと多くのことを知っているでしょう、そして、ここレドモンド・パイの私たち全員が、網膜の愛らしさがついにMacBook Air、Pro、およびiMacに至るという見通しに非常に興奮しています。 WWDCのあらゆるインチを非常に詳細にカバーしています。 (TNW経由) Twitterでフォローしたり、Google+のサークルに追加したり、Facebookページのように私たちを追加して、Microsoft、Google、Apple、Webから最新のすべてを最新の状態に保つことができます。