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

iOS 9は、新しい機能に焦点を当てていません。安定性とバグ修正とバグの修正[レポート]iOS 9は、新しい機能に焦点を当てていません。安定性とバグ修正とバグの修正[レポート]

は、2007年のAppleに到着したことを考慮して、iOSの新しいバージョンを導入した後、それ自体のパターンに逆らうように設定されています。報告によると、iOS 9のリリース。 長年の急速な進行と、驚くべき速度で機能を追加することに続いて、Appleは現在、近年洗練されていないプラットフォームにブーストされた安定性をもたらす仕事が困難であると考えられています。 Tech Pressの有名な個人と、路上での典型的な男に加えて、iOSの世界での信頼性が最小限に抑えられ、オンラインでのアプリが不満を抱いていることに加えて、Appleのデザイナーは安定性とバグ修正をもたらすように設定されています。 iOS 9へ。 Appleは、重要な新機能なしで大規模なソフトウェアアプリケーションリリースを導入するのは初めてではなく、代わりに修正に焦点を当てています。 MacのSnow Leopardのリリースでは、OS Xが速度のストライプを追加するのではなく、ハッチをバッテングすることに向けて独自のプッシュを持っています。iOS9では、Appleが再びそれをもたらすことに責任を負わせたときのようです。 iPadと同様にiPhoneに戻っているだけでも動作します。 9TO5MACに話しかける情報筋によると、Appleの2015年は、多くの人々には明らかではないかもしれないフード下の強化に取り組むことに費やされますが、長年にわたって忍び込んできたバグを修復します。 iOSのフットプリントを小さくすることに焦点を当てているのは、同様にカードにあり、多くの個人がまだ16GBのメモリを備えたiPadと同様にiPhoneを持ち歩いています。 iOS 8の紹介は、いくつかのギガバイトのオーバーザエアアップグレードが必要なiOSガジェットのストーリーに悩まされていました。これは、機能デバイスが低い場合は不可能です。 エレガントな新機能ではなく安定性に焦点を当てるためのステップは、すべての人を喜ばせないかもしれませんが、iOSのロックアップとアプリの事故がすべて一般的になっている世界では、私たちはすべてスマートフォンとスマートフォンだけでなく、すべてのためにタブレットはよりよく機能します。 そして、それが今年かなり抑制されたWWDCのことを示している場合、そうするよりも。 Twitterで私たちに準拠したり、Google+のサークルに私たちを追加したり、Facebookページのように私たちを追加して、Microsoft、Google、Apple、Webからのすべての最新情報を最新の状態に保つことができます。

Z80ベースのRaspBerry PI Look-AlikeZ80ベースのRaspBerry PI Look-Alike

Homebrewコンピュータは、最近の「Thing」で、Zilog Z80はあなた自身で一つを作るために最も人気のある選択です。私たちはかなり素晴らしい建造物を見ましたが、Martin K]のZ-Berryはまだレコードの最小です。名前が示唆するように、RetrocomputerはGPIOヘッダーを含むRaspberry PI Formの側面に準拠しています。 Zベリーは、10 MHz(可能な限り20 MHz)で走って32 KB ROMが付属しているZ80 CPUを使用して作成されます。 そして512 kbのRAM。シリアルインタフェースに加えて、コンピュータはI2Cバス、SPIバス、および起動するPS / 2キーボードコネクタを備えています。 [Martin K]は、完成したシステムがラズベリーのPIの場合に囲まれており、I2C OLEDディスプレイが取り付けられています。 [Martin K]は、BOM、回路図、予備情報を含む独自のZ-BERRYを作る方法について多くの詳細を投稿しました。私たちは彼に手を伸ばして、PCBやサンプルコードとの間で安定しており、リクエストに応じて入手可能なソフトウェアについてもっと見つけました。さらに、このプロジェクトはラズベリーのPIよりもはるかに少ない電流を引き出すことを約束し、現代の問題へのレトロなオプションを作成しようとする個人にとって有益を検証しなければなりません。 最近の技術をレトロテクノロジと組み合わせたプロジェクトを見るのは面白いです。私たちが見た最高のZ80プロジェクトの1つはFAP80であり、hackaday.ioにいくつかの素晴らしいホームブレインコンピュータプロジェクトがあります。 [アイデアMATEJをありがとう]

MicrosoftはSurface Laptop Go、Surface Pro X:機能、仕様、価格、リリース日MicrosoftはSurface Laptop Go、Surface Pro X:機能、仕様、価格、リリース日

Microsoftが本日、いくつかの新しいおよび更新されたノートブック製品を明らかにしました。 Chromebooks。 これは、わずか549ドルで提供されるノートブックである新しいSurface Laptop Goです。12.4インチの画面と1536 x 1024の解像度が含まれています。それは素晴らしいことではありません。 内部では、4GBのRAMと64GBのストレージに加えて、第10世代Intel Core i5チップを発見します。接続性は、単一のUSB-Cポートのタイプと、必要な人のためのUSB-Aポートで利用できます。同様に、このデバイスには、バイオメトリックセキュリティ用の指紋訪問者が組み込まれています。 もちろん、WiFiは本日開始されるだけでなく、先行予約も開発されています。色のオプション?青、砂岩、プラチナを提供しました。 ただし、もちろん、はるかに多くのパワーを持つ何かにアップグレードできます。 Intel Core i5、4GBのRAM、64GBのEMMCストレージ:$ 549.99 Intel Core i5、8GBのRAM、128GBのSSDストレージ:$ 699.99 Intel Core i5、8GBのRAM、256GBGBのSSDストレージ:$ 899.99 Surface Pro Xには更新がありました。 1500ドルのノートブックが更新されたSQ2プロセッサと、非常に素晴らしいように見える新しいプラチナ色を取得しています。その新しいチップは、15時間ものバッテリー寿命を獲得すると言われています。 まったく同じ13インチのスクリーンは、昨年のデザインから、最大16GBのRAMと512GBのストレージの選択肢があります。 2つのサブCポートと、ポータビリティに最高のものを持ちたい人のためのNano