エンジニアの電気屋さん

現役エンジニアが電気のトピックについて現物交えてご紹介します。

タグ:ラズベリーパイ

どうもミソジです。

今回は筆者が持っているラズベリーパイとUSB-SDデバイスをつなげてSDカードにアクセスするコマンド・波形を解析してみたが…」を紹介します

簡単にアナライザでSDカードでの波形を確認するまでの手順を紹介しています。
※ただし結果はアナライザのサンプリングが足りずに最後まで解析できなかった記事です

失敗の教訓という意味で「自分でSDカード・SDIO信号を色々解析してみたい!」という方におススメな記事となっています

過去記事の「I2CのACKとNACKの波形を見てみる」でI2Cでも同様に解析しましたので、I2Cのことも調べたいという方はこちらからどうぞ
sP_20180512_095551.jpg

目次
1.SDカードを解析できる環境を用意する(準備編)
2.SDカードを解析できる環境を用意する(改造編)
3.アナライザを用意する
4.アナライザを使ってSDの波形を解析する
5.SDを測定するのにサンプリングが足りなかった
6.少しだけでも解析してみる(mount,umount)
7.まとめ・感想

1.SDカードを解析できる環境を用意する(準備編)
まずはSDカードを解析する環境を用意していきます。

本来ラズベリーパイにはMicroSDかSDカードが挿せるようになっていますが、2個目のMicroSDかSDカードを直接動かせる信号は用意されていません。
※SPIモードでは可能ですが、通常のデータ線4本使うSDモードは用意されていません

※筆者のは古い型のためSDのIFとなっています
sP_20180818_222825.jpg

「ラズベリーパイでSDカードの波形を何としても測定したい・・・」という方は1つめのMicroSD,SDのIF箇所にはんだづけするのも手段としてはありますが、正直あまりしたくないんですよね…。

あと最新のMicroSDだとピッチが狭く、未経験の方は「はんだ付け」が難しいかと思います
sP_20180818_222825a.jpg

そのため今回は100均のUSB-SDカードリーダを使います!

(最近の100均はすごいです。USB-SDカードリーダまで100円で売っています。)
これならピッチ幅が広いSD_IFがありますし、はんだ付け失敗しても安心です。

sP_20180817_153253.jpg

いざ開封してみても形状はシンプルながらも、SD,MicroSD,MSなど様々なカードに対応してます
sP_20180817_153319.jpg

sP_20180817_153406.jpg

今回はSD_IFの波形を見るための改造をしたいですので分解します。
(プラスチックのカバー外すだけで簡単に分解できました。)
sP_20180817_153632.jpg

今回必要なのは基板です。基板にジャンパー接続して波形・タイミング測定できるようにします。

表面を見ますとSDカードコネクタ箇所があり、ピンも外に出ていますので比較的に楽にはんだ付けが可能です
sP_20180817_153719.jpg

sP_20180818_200241a.png

ちなみに裏面にUSB-SD_IF変換ICがありました。ただし表面モールドされていましたので何処のICかは不明でした。
sP_20180817_153708.jpg

次の章からは波形測定できるように基板を改造していきます


2.SDカードを解析できる環境を用意する(改造編)
まずはSDの波形を測定できるように信号線をジャンパー接続していきます。
「データ_D0~D3」「コマンド_CMD」「クロック_CLK」と最後に「グランド_GND」をジャンパー接続してあげましょう
sP_20180818_200241a.png

「半田ごて」と「はんだ」と「ジャンパー線」を用意します。SDの波形を測定できるように信号線をジャンパー接続していきます
sP_20180818_201554.jpg

筆者のはんだごてセットは下記の入門セットですが、これぐらいのジャンパー接続ならば特に不自由なく「はんだづけ」が可能です。



ジャンパー線に関しては、筆者は大量にあるブレッドボード用のジャンパーワイヤーをカットして繋げていきましたが特に指定はありません。
sP_20180819_165121.jpg

ワイヤーストリッパーで被膜を剥がしてあげましょう。簡単に剥がせます。
sP_20180823_041650.jpg
sP_20180823_041711.jpg

少し前の記事でワイヤーストリッパーの記事「徹底比較! ホーザン製とベッセル製ワイヤーストリッパーを使い比べてみた」も書きましたのでよろしければこちらもご確認ください



はんだづけ・改造した後は下記のようになります。はんだ付けが終わったらSDカードを挿します
sP_20180818_204518.jpg

最後にジャンパー線をブレッドボードに接続すれば完了です
これで無事SDカードから波形測定できるように改造が終了しました
sP_20180818_204505.jpg


3.アナライザを用意する
SDの波形を見たいと思いますが、今回は「データ_D0~D3」「コマンド_CMD」「クロック_CLK」を見ますのでアナライザを使って確認していきます。

最近はI2CやSPIなど数MHz,数十MHz程度の解析するアナライザが1000円足らずで買えます。

筆者は色々触りたかったのでモジュール化されていないアナライザの開発ボードを買いました。

(値段は一番安く多くのピンで遊べますが、EEPROMなどの設定が必要ですのでマイコン初心者は少し難しいかもしれません)
sP_20171104_120005.jpg

本当にマイコン(サイプレス製CY7C68013A)が載っているだけのボードです。PCとUSB経由で接続して解析することができます。詳細は下記になります
MiniUSBケーブルとジャンパーワイヤは別で購入が必要です



但し数百円の差ですので下記のようなモジュールになっているアナライザを買った方が直ぐに測定できて楽できるかと思います。

PCとUSB接続してSD,I2C,UART,SPIなど多くの通信を解析できます。
USBケーブル、ジャンパーワイヤまで付いてきますので単に解析するだけならば筆者的には下記をおススメします





「スポンサーリンク」


4.アナライザを使ってSDの波形を確認する

アナライザを「データ_D0~D3」「コマンド_CMD」「クロック_CLK」の箇所に接続してプログラムを実行しているときの波形を確認します。ジャンパー接続すればOKです
実際行ったときの写真が下記です
sP_20180818_205255.jpg 


そして実際にとれた波形の一部が下記です。「D0~D3」「CLK」「CMD」の波形を取れました。(しっかり見たい方は画像をクリックして拡大をお願いします)

※CMDの表記がなくSS表記で使用しています
 SD1.png

これだけだと何のデータか分からないので解析の設定でSDを選択します
SD2.png

SDはデータ線が複数あるのでどの信号線で解析するか選択してあげます
SD3.png

これで、アナライザでSDの解析ができました。
下記のように各bit、データが視覚的に分かるようになります。

SD6.png

SD解析まで含めると下記が結果例となります。
SD7.png

では次の章から各信号とSD解析した結果が正しいのかを確認してきます

5.SDを測定するのにサンプリングが足りなかった
まずSDのCLKがどれぐらい出ているのかを確認しました
今回の100均のSDカードリーダライターが何処までのSD規格に対応しているかは不明のためです

規格が進むにつれ12.5MB/s,25MB/sと速くなっていき。最近の最新のUHS-?だと数百MB/sまでの速度があるようです

「今回の100均のSDリーダぐらいだったら何とか筆者が持っているアナライザでも測定できるかも・・・」と思いきや、結果は測定できていませんでした。m(_ _ )m

今回の測定器はサンプリングレートが最大12MHzでしたが・・・

SD10.png

それに対して波形を見てみると、サンプリングが12MHz上にあり、これではサンプリングが足りておらずNGです

SD8.png 

下記は先日I2C(100kbps)で1MHzのサンプリングで測定したものですが、1周期の間に10回ほどサンプリングできていて十分にサンプリングできています
SD9.png


今回のSDを測定する上でサンプリングが足りない件について少し下記2案を考えましたが、どちらもお手上げ状態となりました。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
①SDカードの周波数を落とす
 ⇒今回USB-SDリーダとなっており、どうやってUSBドライバ経由でSDの周波数を落とせばいいのか(そもそも出来るのかが)筆者の知識経験では「?」でした

②サンプリングレートを上げる
 ⇒現状筆者のプライベートの測定器ではこれ以上のものは無し。もし測定するならば下記のような100MHzぐらいは測定できるアナライザ必要そうです

(※6chでは50MHzのサンプリングになるようですので、これでも怪しいかもしれません)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


「スポンサーリンク」

6.少しだけでも解析してみる(mount,umount)
残念ながら今回の測定ではクロックがまともに取れていない以上、正しい波形でありません。

しかしせっかく測定したデータがありますので、少しだけでも確認できそうなデータを紹介していきます。

①mount
ラズベリーパイでSDをマウントするときに使うコマンドの「mount」の波形を見ていきます。
その時のコマンドは下記です。
~~~~~~~~~~~~~~~~~~~~~~
pi@raspberrypi:~$ sudo mount /dev/sda1 /media
~~~~~~~~~~~~~~~~~~~~~~

mountする前がデータ0~3がLowとなっており、mount後がHighとなっていることが分かります
SD11.png

②umount
次はラズベリーパイでSDをアンマウントするときに使うコマンドの「umount」の波形を見ていきます。
その時のコマンドは下記です。
~~~~~~~~~~~~~~~~~~~~~~
pi@raspberrypi:/home$ sudo umount /media
~~~~~~~~~~~~~~~~~~~~~~

先ほどとは逆にumountする前がデータ0~3がHighとなっており、umount後がLowとなっていることが分かります

SD12.png


7.まとめ・感想
残念ながら、今回はSDを正しく測定できず、満足いく解析ができませんでした。
やはり遊びに近いアナライザだとI2C,SPI,UART辺りが限界かなと言った感じです。

もしサンプリングがより良いアナライザが手に入ることがあればまた試してみたいとは思います

今日はここまでにしたいと思います
どうもありがとうございました


1000円足らずでアナライザが購入できます
HiLetgo 24MHz 8チャンネル USBロジックアナライザ 8CHロジックアナライザ UART IIC SPI デバッグ MCU FPGA ARMに対応 [並行輸入品]
HiLetgo






筆者のはんだごてセットは下記の入門セットですが、これぐらいのジャンパー接続ならば特に不自由なく「はんだづけ」が可能です。

どうもミソジです。

今回は筆者が持っているラズベリーパイとRS232Cを接続してRS232CとUARTの違いをアナライザで確認してみた」を紹介します

RS232CとUART通信の差を比較するまでの手順を紹介しています。

「自分でRS232Cを色々解析してみたい!」という方におススメな記事となっています

過去記事の「UART通信のシリアル波形をアナライザで解析してみた」でUARTでも同様に解析しました。

UARTのことも調べたいという方はこちらからどうぞ

sP_20180814_064517.jpg


目次
0.RS232CとUARTの違い
1.ラズベリーパイとRS232C接続をしてみる
2.アナライザを用意する
3.アナライザを使ってRS232Cの波形を確認する
4.RS232CとUARTの信号論理の違いを見てみる
5.余談_改造後のコンソール表示
6.まとめ・感想


0.RS232CとUARTの違い
RS232CとUARTの違いに関しては既にネットの先人たちが多くの記事を書いてくださっているので大分省略しますが、大きな違いとして2点あります。

①出力電圧レベルが異なる
RS232C ・・・出力電圧がH_+5V~+15V、L_-5V~-15V
UART ・・・出力電圧がH_2.8V~3.3V、L_0V~0.5V

※RS232C・UARTともにIC次第で電圧レベルが差がありますので詳細は使用するICのデータシートをご確認ください。上記はあくまで1例です。

②信号論理が逆
RS232C ・・・アクティブHi
UART ・・・アクティブLow

この違いを踏まえて記事を紹介していきます

1.ラズベリーパイとRS232C接続をしてみる
まずはRS232C通信環境をラズベリーパイを使って作っていきます。

ラズベリーパイとPCをRS232C接続はUARTと違いひと手間あります。電圧レベル・信号論理が異なるためインバータ(バッファ)を噛ます必要があります


実際につなげた写真がこちらとなります。
「ラズベリーパイ」「USB-RS232C変換モジュール」「インバータ(バッファ)」PCを接続しています。

sP_20180817_155735.jpg

インバータ(バッファ)はDIP形状のためブレッドボード上で接続をしています。
sP_20180817_170250.jpg

使用したICは「TC74HC4049AP」で汎用ICです電子部品パーツ店行けばどこにでも置いてあるようなインバータ(バッファ)です。

このICで電圧レベル・信号論理を変換します
sP_20180817_154212.jpg


USB-RS232C変換モジュールも一般的なものです。最近はAmazon経由で中国製品が安く買えるので助かっています。
sP_20180524_081741.jpg

コネクタになっているので、ピンに直接ジャンパー接続してあげましょう
sP_20180818_093942.jpg

筆者のは少し型が古いラズベリーパイですが、UART(RS232C)をつなぐのは新旧ともに簡単にできます。

USB-RS232C変換モジュールは下記製品を使っています。非常に安くても機能的に問題無しです

TC74HC4049APも調べたらAmazonで一応売っていましたが、すごく高かったので安い電子パーツ店での購入をおススメします(20180817時点)


概要の回路図的には下記の形になります。インバータバッファを噛まして「3,3V」「GND」「TX」「RX」繋げるだけです。

点線箇所のUSB-RS232C変換IC(PC)は必要箇所だけ切り取った概要のブロック図となっています。

筆者のイメージで記載しているので省略・実際の回路と違うことがあることはご了承ください。(20180817時点での参考データシートはこちらから)
RS232C1.PNG
※1_ラズベリーパイのGPIOピン配置は新しい型に合わせています
※2_GND配線が見やすさ優先したため実配線箇所と異なっています
※3_TXD,RXD配線名はPC側視点で書いています


そしてPCからコンソール接続するソフト「Tereterm」を起動していきます
UART11.PNG
※Teretermの詳細に関してはググってもらえればすぐダウンロードサイトが出てきますので省略します。ダウンロードすればすぐに使えます


下記がTeretermを動かした際の手順です。
①USB-RS232C変換モジュールをPCのUSBポートに挿す。ドライバが自動的にインストールされます

※今回のドライバはCH340というものでした

②最初の選択でシリアルを選択してUSB-RS232C変換のポートを選択します
RS232C3.PNG 
③設定⇒ボーレートで115200を選択します。
※ボーレートというのは通信速度のことでラズベリーパイのデフォルト設定は115200となっていると思います。
RS232C4.PNG

④「Enter」を押してみましょう。ログイン画面が出てきます(もし電源投入時は初期のカーネルログが出てくると思います。)これで無事RS232C経由でUART通信ができました。
RS232C5PNG.PNG

アナライザを使ってRS232Cの波形を次章から紹介してきたいと思います

「スポンサーリンク」

2.アナライザを用意する
今回はRS232Cの「TX」「RX」を見ますのでアナライザを使って確認していきます。

最近はI2CやSPIなど数MHz,数十MHz程度の解析するアナライザが1000円足らずで買えます。

筆者は色々触りたかったのでモジュール化されていないアナライザの開発ボードを買いました。

(値段は一番安く多くのピンで遊べますが、EEPROMなどの設定が必要ですのでマイコン初心者は少し難しいかもしれません)
sP_20171104_120005.jpg

本当にマイコン(サイプレス製CY7C68013A)が載っているだけのボードです。PCとUSB経由で接続して解析することができます。詳細は下記になります
MiniUSBケーブルとジャンパーワイヤは別で購入が必要です



但し数百円の差ですので下記のようなモジュールになっているアナライザを買った方が直ぐに測定できて楽できるかと思います。

PCとUSB接続してI2C,UART,SPIなど多くの通信を解析できます。
USBケーブル、ジャンパーワイヤまで付いてきますので単に解析するだけならば筆者的には下記をおススメします




3.アナライザを使ってRS232Cの波形を確認する

アナライザにも配線する必要がありますので下記のようにブレッドボードで中継していきます
sP_20180817_160414.jpg

アナライザを使ってラズベリーパイ側の「TX」「RX」の箇所に接続します。
最初に説明したようにRS232Cだと電圧レベルがUARTと違いアナライザ側の定格超える恐れがあるためです。
RS232C6.PNG

そしてEnter押してラズベリーパイのログイン画面を表示した波形を確認します。
UART2.PNG

実際に回路図ベースでイメージすると下記のような手順になります

①USB-RS232C変換モジュール(PC)側から「Enter」のキー入力がラズベリーパイ側に送信されます

②ラズベリーパイ側からログイン画面の表示がUSB-RS232C変換モジュールに送信されます

RS232C6.PNG

そして実際にとれた波形の一部が下記です。無事「TX」「RX」の波形を取れました。(この波形では①②の全体波形を示しています)
※TX,RXは上記回路図の信号シンボル通りUSB-RS232C変換モジュール側の視点です
 RS232C7.PNG

これだけだと何のデータか分からないので前回同様解析の設定でUARTを選択します
正しい波形が取れていれば勝手に解析をしてくれます
UART13.PNG

これで、無事アナライザでUARTの解析ができました。
下記のように各bit、[Start bit][Stop bit]のデータが視覚的に分かるようになります。

UART16.PNG


今回はRS232CとUARTの信号論理が本当に逆になっているかを次の章から確認してみます

4.RS232CとUARTの信号論理の違いを見てみる
信号論理をアナライザで測定したいのですが、前章で記述したように電圧レベルが異なりRS232Cを直接アナライザで測定できません。
RS232C6.PNG
※マイナス電圧域を測定できるオシロがあれば測定可能ですが、筆者含めてプライベートでオシロを持っている方は非常に少ないと思いますので今回は別案でいきます

従来の「インバータバッファ」を「バッファ」に改造してラズベリーパイ側でRS232Cの信号論理をそのままで測定します
RS232C6.PNG

RS232C8.PNG

ブレッドボード上の使うICを変更します。型番一つ違いのICです。これも電子パーツ店で安く入手できます。同じDIPの形状ですので置き換えるだけで改造も簡単です。

従来_インバータバッファ TC74HC4049AP
改造_     バッファ TC74HC4050AP

sP_20180817_125633.jpg


では実際に従来(UART)改造(RS-232C)の波形を並べてみました。

枠で囲っているTXの波形の信号論理が逆になっていることを確認できています
RS232C14.PNG

これで実際に信号論理がUARTとRS232Cで逆になっていることが十分に確認できました


「スポンサーリンク」


5.余談_改造後のコンソール表示
半分余談になりますがせっかくなので、改造状態の場合Teretermのコンソール上ではどのように表示されるのかを確認してみます。

Enterを押すと改行されず「C」が返ってきます。
RS232C9.PNG

従来のUARTでのEnterの改行は「CR_0x0d」ですので逆値の[0xF2]になると思いきや全く異なる値になっています。このカラクリについて少し考えてみます

これは「信号論理が逆」「Start bitが送信と受信で2回ずれる」と、「ASCII文字が「0x7f」で終わっている」ことが影響していそうです。フローとしては下記流れだと思います
RS232C8.PNG

①USB-RS232C側から0x0d(CR)が送信される
 0x0d= [10110000]

②ラズベリ-パイ側が受け取る際に「信号論理が逆」+「Start bitがずれる」0x79として受信する
 0x79= [_10011110]

③ラズベリ-パイ側から0x79が送信される
 0x79= [_10011110]

④USB-RS232C側が受け取る際に「信号論理が逆」+「Start bitがずれる」0xC3として受信する
 0xC3= [__11000011]
   さらにASCII文字は基本0x7fまでしかないので一番上のbitは無視され0x43として判断する
 0x43= [__?1000011]
 

例えば①⇒②の「信号論理が逆」+「Start bitがずれる」イメージとしては先ほどの下記波形で見ると分かりやすいです
RS232C14.PNG

RS232Cをつなげる際は信号論理が逆になっていることを気にしないとデータが簡単に壊れてしまうので注意しましょう。

6.まとめ・感想
結局のところRS232CとUARTの違いとしては
「①電圧レベルが異なること」「②信号論理が逆なこと」がメインだと思います。

この2つを忘れて接続するとICが壊れたり、データが壊れたりするので(筆者含めて)忘れないようにしないといけませんね。


どうでしたでしょうか、最近では1000円足らずでRS232C・UARTを測定・解析することができます。
前回記事のUARTと同様にRS232Cでも波形解析を行うことが問題なく可能です。

データシート見て確認するのもいいですが、やはり実物の波形見ることでよりUART・RS232Cの理解が深まると思います。よろしければ皆様もアナライザを購入して確認してみてください

<<20180823追記>>
SDの「データ_D0~D3」「コマンド_CMD」「クロック_CLK」波形を見てみた記事をアップしました。(但しサンプリングが足りない結果となっています)

SDカードにアクセスするコマンド・波形を解析してみたが…」
リンク先はこちらからです。よろしければこちらもご確認ください
sP_20180818_205255.jpg


今日はここまでにしたいと思います
どうもありがとうございました


1000円足らずでアナライザが購入できます
HiLetgo 24MHz 8チャンネル USBロジックアナライザ 8CHロジックアナライザ UART IIC SPI デバッグ MCU FPGA ARMに対応 [並行輸入品]
HiLetgo






ラズベリーパイでUART(RS232C)をつなぐのは新旧ともに簡単にできます。

USB-RS232C変換モジュールは下記製品を使っています。非常に安くても機能的に問題無しです

TC74HC4049AP,TC74HC4050APも調べたらAmazonで一応売っていましたが、すごく高かったので安い電子パーツ店での購入をおススメします(20180817時点)

どうもミソジです。

今回は筆者が持っているラズベリーパイとPCをUART接続してUART通信のシリアル波形をアナライザで解析してみた」を紹介します

簡単にアナライザでUART通信でのを確認するまでの手順を紹介しています。
「自分でUARTを色々解析してみたい!」という方におススメな記事となっています

過去記事の「I2CのACKとNACKの波形を見てみる」でI2Cでも同様に解析しましたので、I2Cのことも調べたいという方はこちらからどうぞ
sP_20180512_095551.jpg

目次
1.ラズベリーパイとUART接続をしてみる
2.アナライザを用意する
3.アナライザを使ってUARTの波形を確認する
4.CR含めてデータを見てみる
5.まとめ・感想

1.ラズベリーパイとUART接続をしてみる
まずはUART通信環境をラズベリーパイを使って作っていきます。

ラズベリーパイとPCをUART接続の動かし方は何も設定しなくても可能です。非常に簡単です。

実際につなげた写真がこちらとなります。
「ラズベリーパイ」「UART-USB変換モジュール」PCを接続しています。

sP_20180814_064517.jpg

ラズベリーパイの接続も簡単で下記4本(5V,GND,TX,RX)をそのままピンに差し込むだけでUART接続が可能です

※赤_5Vに関してはラズベリーパイ側の電源を使うならば接続しなくても大丈夫です)
sP_20180814_113943.jpg



筆者のは少し型が古いラズベリーパイですが、UARTをつなぐのは新旧ともに簡単にできます。

URT-USB変換モジュールは下記製品を使っています。

回路図的には下記の形になります。「5V」「GND」「TX」「RX」繋げるだけです

点線箇所のUART-USB変換IC(PC)は必要箇所だけ切り取った概要のブロック図となっています。(20180814時点での参考データシートはこちらから)
UART10.PNG
※1_ラズベリーパイのGPIOピン配置は新しい型に合わせています
※2_GND配線が見やすさ優先したため実配線箇所と異なっています
※3_TXD,RXD配線名はPC側視点で書いています

そしてPCからコンソール接続するソフト「Tereterm」を起動していきます
UART11.PNG
※Teretermの詳細に関してはググってもらえればすぐダウンロードサイトが出てきますので省略します。ダウンロードすればすぐに使えます


下記がTeretermを動かした際の手順です。
①UART-USB変換モジュールをPCのUSBポートに挿す。ドライバが自動的にインストールされます

※WindowsのVerによっては手動でドライバをインストール必要があるようです。(筆者のは「7」です)ググれば直ぐに手順が分かる記事が沢山ありますので省略します
UART1.PNG
②最初の選択でシリアルを選択して、UART-USB変換のポートを選択します
 UART3.PNG
③設定⇒ボーレートで115200を選択します。
※ボーレートというのは通信速度のことでラズベリーパイのデフォルト設定は115200となっていると思います。
UART5.PNG

④「Enter」を押してみましょう。ログイン画面が出てきます(もし電源投入時は初期のカーネルログが出てくると思います。)これで無事UART通信ができました。
UART2.PNG

アナライザを使って④の箇所のUART波形を次章から紹介してきたいと思います

2.アナライザを用意する
今回はUARTの「TX」「RX」を見ますのでアナライザを使って確認していきます。

最近はI2CやSPIなど数MHz,数十MHz程度の解析するアナライザが1000円足らずで買えます。

筆者は色々触りたかったのでモジュール化されていないアナライザの開発ボードを買いました。

(値段は一番安く多くのピンで遊べますが、EEPROMなどの設定が必要ですのでマイコン初心者は少し難しいかもしれません)
sP_20171104_120005.jpg

本当にマイコン(サイプレス製CY7C68013A)が載っているだけのボードです。PCとUSB経由で接続して解析することができます。詳細は下記になります
MiniUSBケーブルとジャンパーワイヤは別で購入が必要です



但し数百円の差ですので下記のようなモジュールになっているアナライザを買った方が直ぐに測定できて楽できるかと思います。

PCとUSB接続してI2C,UART,SPIなど多くの通信を解析できます。
USBケーブル、ジャンパーワイヤまで付いてきますので単に解析するだけならば筆者的には下記をおススメします





「スポンサーリンク」


3.アナライザを使ってUARTの波形を確認する

最初の配線より少し手間になりますがアナライザにも配線する必要がありますので下記のようにブレッドボードで中継していきます
sP_20180814_070631.jpg

アナライザを使って「TX」「RX」の箇所に接続します。そしてEnter押してラズベリーパイのログイン画面を表示した波形を確認します。
UART2.PNG

実際に回路図ベースでイメージすると下記のような手順になります

①URT-USB変換モジュール(PC)側から「Enter」のキー入力がラズベリーパイ側に送信されます

②ラズベリーパイ側からログイン画面の表示がUART-USB変換モジュールに送信されます

UART10.PNG

そして実際にとれた波形の一部が下記です。無事「TX」「RX」の波形を取れました。(この波形では①②の全体波形を示しています)
※TX,RXは上記回路図の信号シンボル通りUSB-UART変換モジュール側の視点です
 UART12.PNG

これだけだと何のデータか分からないので解析の設定でUARTを選択します
正しい波形が取れていれば勝手に解析をしてくれます
UART13.PNG

これで、無事アナライザでUARTの解析ができました。
下記のように各bit、[Start bit][Stop bit]のデータが視覚的に分かるようになります。

UART16.PNG

では次の章からUART解析した結果を詳細に確認してきます

4.CR含めてデータを見てみる
では今回のUART波形を詳細に見ていきたいと思いますが、今回はASCII文字コード表を見ながら確認していきます。

下記①②の送信内容はすべてASCII文字で明確にできます(ASCII文字とググればいろんなサイトが出てきます)

UART14.PNG

ではまず①から詳細に見ています

①「Enter」のキー入力

まず今回の設定「Enter」キー入力はASCII文字でいうと改行「CR」という意味で送信されています。

ASCII表をみると「CR」は16進表記で「0x0d」になっており、今回の波形でも「0x0d」=「CR」の信号がTXから送信されているので問題ありません。
UART16.PNG


①'「CR」+「LF」にするには
少し余談になりますが「「CR」に加えて「LF」も送りたい!」送りたい方がいればTertermの設定で変更できます。(「LF」についての詳細の説明は省略させてください)
UART8.PNG

例えば送信設定を「CR+LF」変更すると下記のように先ほど波形に加えて「0x0d」=「LF」が追加されてTXから送信されます
UART18.PNG

「スポンサーリンク」



②ログインの画面表示
①のキー入力が済んだあとに②のログイン画面が表示されますが、これを4段階に分けてみます
「②-1_改行する」
「②-2_「Rasp・・・」文字表示」
「②-3_2回改行する」
「②-4_「rasp・・・」文字表示」

UART2.PNG

波形のタイミングとしては下記になります。RXの信号を個別に見ていきます。

UART14.PNG


②-1_改行する
ラズベリ-パイ側から「CR」+「LF」の信号がUARTのRXを経由して出力されており問題無しです。

連続するデータだと各8bitおきに[Start bit]と[Stop bit]があることがよく分かります
UART19.PNG


②-2_「Rasp・・・」文字表示
改行された後はOS名の「Raspbian・・・」と表示されます。

UART波形を全部表示すると文字数分の8bitデータが並ぶ形になります。下記のように分かりづらいです
UART20.PNG

そのため最初の5文字だけをアップします
UART21.PNG

ラズベリーパイ側からUARTを通じて出力されたデータは[0x52][0x61][0x73][0x70][0x62]でASCIIの16進より文字に直すと[R][a][s][p][b]となります。

無事文字のデータが送られてきていることが解析できました


②-3_2回改行する
②-2で示したOS名の表示列の[・・・ttyAMA0]最後の[0x30_0]後に[0x0d_CR][0x0A_LF]の改行が2回連続でラズベリーパイから出力されています

UART22.PNG

②-4_2回改行する
2回改行の後はログインの「raspberry login:」が表示がされます。

下記の波形を確認するとASCII16進表示[72 61 73 70 62 65 72 72 79 70 69 20 6C 6F 67 69 6E 3A 20]ですので無事問題なく解析できています
UART23.PNG

5.まとめ・感想
どうでしたでしょうか、最近では1000円足らずでUARTを測定・解析することができます。
前回記事のI2C・SPIと同様にUARTでも波形解析を行うことが問題なく可能です。

データシート見て確認するのもいいですが、やはり実物の波形見ることでよりUARTの理解が深まると思います。よろしければ皆様もアナライザを購入して確認してみてください

今日はここまでにしたいと思います
どうもありがとうございました

<<20180818追記>>
UARTとは別にRS232CのTX,RX波形を見てみた記事をアップしました。

RS232CとUARTの違いをアナライザで確認してみた
リンク先はこちらからです。よろしければこちらもご確認ください
sP_20180817_160414.jpg


1000円足らずでアナライザが購入できます
HiLetgo 24MHz 8チャンネル USBロジックアナライザ 8CHロジックアナライザ UART IIC SPI デバッグ MCU FPGA ARMに対応 [並行輸入品]
HiLetgo






ラズベリーパイで簡単にSPI通信ができます。





どうもミソジです。

今回は筆者が持っているラズベリーパイとSPIデバイスをつなげてSPIのCS,MOSI,MISO,SCLKの波形を見てみた」を紹介します

簡単にアナライザでSPI通信でのを確認するまでの手順を紹介しています。
「自分でSPIを色々解析してみたい!」という方におススメな記事となっています

過去記事の「I2CのACKとNACKの波形を見てみる」でI2Cでも同様に解析しましたので、I2Cのことも調べたいという方はこちらからどうぞ
sP_20180512_095551.jpg

目次
1.ラズベリーパイとSPIデバイスをつなげてみる
2.アナライザを用意する
3.アナライザを使ってSPIの波形を確認する
4.CS,MOSI,MISO,SCLKを見てみる
5.まとめ・感想

1.ラズベリーパイとSPIデバイスをつなげてみる
まずはSPI通信環境をラズベリーパイを使って作っていきます。

ラズベリーパイでのSPIの動かし方は既に先人たちにより多くの記事がありますので省略したいと思います。

※「ラズベリーパイ SPI」とググれば多くの参考になる記事がありますので、そちらを参考にしてください

実際につなげた写真がこちらとなります。
「ラズベリーパイ」「AD変換素子+温度センサ」「アナライザ」を接続しています。(AD変換ICはMCP3008、温度センサはMCP9700を使用しています。)

sP_20180715_014939.jpg

sP_20180715_015018.jpg

筆者のは少し型が古いラズベリーパイですが、SPIをつなぐのは新旧ともに簡単にできます。

AD変換ICと温度センサは下記のキットから使いました。





回路図的には下記の形になります。「3.3V」「GND」「CS」「MOSI」「MISO」「SCLK」をブレッドボードにジャンパー接続するだけで簡単にできます。

※ラズベリーパイのGPIOピン配置は新しい型に合わせています
※「CS」はアクティブローの意味で所々で「_N」を付けています
spi1.PNG

そしてラズベリーパイを設定・起動して無事SPI通信で温度センサの値を読み取れました
Pythonのプログラムで確認できました。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pi@raspberrypi ~ $ cd python_apps/
pi@raspberrypi ~/python_apps $ cd spidev-spike/
pi@raspberrypi ~/python_apps/spidev-spike $ python spi_tmp36.py
adc  :      244 
volts:     0.79
temp :    28.71
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下記が結果の概要です。
①現在の温度を読み取り温度センサが0.79Vを出力する
②AD変換ICが0.79Vのアナログ値を読み取りデジタルの244と変換して出力する
③ラズベリーパイがデジタル244を読み取り換算して28.71℃と分かる
spi1.PNG

アナライザを使って②の出力した波形を次章から紹介してきたいと思います

2.アナライザを用意する
SPIの波形を見たいと思いますが、今回は「CS」「MOSI」「MISO」「SCLK」を見ますのでアナライザを使って確認していきます。

最近はI2CやSPIなど数MHz,数十MHz程度の解析するアナライザが1000円足らずで買えます。

筆者は色々触りたかったのでモジュール化されていないアナライザの開発ボードを買いました。

(値段は一番安く多くのピンで遊べますが、EEPROMなどの設定が必要ですのでマイコン初心者は少し難しいかもしれません)
sP_20171104_120005.jpg

本当にマイコン(サイプレス製CY7C68013A)が載っているだけのボードです。PCとUSB経由で接続して解析することができます。詳細は下記になります
MiniUSBケーブルとジャンパーワイヤは別で購入が必要です



但し数百円の差ですので下記のようなモジュールになっているアナライザを買った方が直ぐに測定できて楽できるかと思います。

PCとUSB接続してI2C,UART,SPIなど多くの通信を解析できます。
USBケーブル、ジャンパーワイヤまで付いてきますので単に解析するだけならば筆者的には下記をおススメします





「スポンサーリンク」


3.アナライザを使ってSPIの波形を確認する

アナライザを「CS」「MOSI」「MISO」「SCLK」の箇所に接続してプログラムを実行しているときの波形を確認します。ジャンパー接続すればOKです
実際行ったときの写真が下記です
sP_20180715_015018.jpg 


そして実際にとれた波形の一部が下記です。無事「CS」「MOSI」「MISO」「SCLK」の波形を取れました。(しっかり見たい方は画像をクリックして拡大をお願いします)
 spi8.PNG

これだけだと何のデータか分からないので解析の設定でSPIを選択します
正しい波形が取れていれば勝手に解析をしてくれます
spi7.PNG

これで、無事アナライザでSPIの解析ができました。
下記のように各bit、データが視覚的に分かるようになります。

spi10.PNG

SPI解析まで含めると下記が結果となります。
spi6.PNG

では次の章から各信号とSPI解析した結果を確認してきます

4.CS,MOSI,MISO,SCLKを見てみる
①CS(Chip select)
まずCSに関してはSPIが通信する間はLow(1⇒0)になっており問題ありません
(本来は一つのSPIにデバイスを複数接続しているときに使う信号です) 
※デバイス側視点ではSS(Slave Select)と表記されているケースも多いです
spi6.PNG


②SCLK(Serial Clock)
今回のプログラムはネットから拾ってきており、特にクロックについては指定していなかったので実際どうなっていたかを現物確認します。

下記のように各データ幅8bit単位で適切なクロックが出ており、データシート通りの形となっており問題無しです。

※20180813時点のデータシートのリンク先はこちらから。「FIGURE 6-1: SPI Communication with the MCP3004/3008 using 8-bit segments」 の図が一番見やすいかと思います
spi6.PNG


今回のSPIクロックは約480KHzになっていることが下記の波形からも分かります。
(サンプリング含めてある程度適当に測定しましたので「約」となっています)
spi11.PNG


③MOSI,MISO
何の略後というと「MISO: Master In Slave Out」 「MOSI: Master Out Slave In」となっており名前の通りの信号となっています。今回はMasterがラズベリーパイで、SlaveがAD変換ICとなっています
spi1.PNG

実際どのようなデータを送っているかというと下記概要の①②③内容になります
※詳細のデータシートのリンク先はこちらから。「FIGURE 6-1: SPI Communication with the MCP3004/3008 using 8-bit segments」を参考にしてください)

今回は3つの8bitデータでMater・Slave間でSPI通信をしています。3つのブロック事に内容を説明していきます
spi6.PNG


最初に「1」ではSPI通信を始める合図をMater側からSlave側にMOSI信号を出しています
spi12.PNG


次に「2」でSlave側にAD変換ICの「何処のCH」「差動かシングル」とスレーブ側に読み取りたい情報をMaster側のラズベリーパイからMOSIで伝えます
spi13.PNG

最後に「3」でSlave側のAD変換ICから現在の読み取っている値「0xF4」をMater側のラズベリーパイにMISO信号で伝えます。これで完了です
spi14.PNG


そして今回読み取った値[0xF4]は16進数ですので10進数に直すと「244」となります
無事最初に伝えたAD変換ICの「adc:244」が無事読み取っていることが波形で確認できました
spi1.PNG

5.まとめ・感想
どうでしたでしょうか、最近では1000円足らずでSPIを測定・解析することができます。
前回記事のI2Cと同様にSPIでも波形解析を行うことが問題なく可能です。

データシート見て確認するのもいいですが、やはり実物の波形見ることでよりSPIの理解が深まると思います。よろしければ皆様もアナライザを購入して確認してみてください

今日はここまでにしたいと思います
どうもありがとうございました

<<20180813追記>>
SPIとは別にUARTのTX,RX波形を見てみた記事をアップしました。

UART通信のシリアル波形をアナライザで解析してみた」
リンク先はこちらからです。よろしければこちらもご確認ください
sP_20180814_070631.jpg


1000円足らずでアナライザが購入できます
HiLetgo 24MHz 8チャンネル USBロジックアナライザ 8CHロジックアナライザ UART IIC SPI デバッグ MCU FPGA ARMに対応 [並行輸入品]
HiLetgo






ラズベリーパイで簡単にSPI通信ができます。




AD変換ICと温度センサは下記のキットから使いました。



どうもミソジです。
今回はLTSPICEでI2C,UART,SPIシミュレーションを行う過程の記事LTSPICEでAC特性をシミュレーションしてみた_モデル検証編」を紹介します

前回はIBISモデルからSPICEモデルに変換したI2CのSDAピンのDC特性を検証しましたので、今回はAC特性をシミュレーションしてみたいと思います。

前々回のモデルを作ったLTSPICEでI2C,UART,SPI等のシミュレーションをしてみた_モデル準備編」記事のリンクはこちらです
ibis10.PNG


そして前回のDC特性を検証したIBISモデルから作ったSPICEモデルのDC特性を検証してみた_モデル検証編」記事のリンクはこちらです
ibis23.PNG


目次
1.AM3352のAC特性をデータシートを確認する
2.「AC特性の出力特性_Rise time,Fall time」from データシート
3.「AC特性の出力特性_Rise time,Fall time」from IBIS
4.LTSPICEでシミュレーションしてみる_概要編
5.LTSPICEでシミュレーションしてみる_詳細編
6.まとめ・感想


1.AM3352のAC特性をデータシートを確認する

今回はAC特性をAM3352のデータシートから確認していきます

データシートはこちらからダウンロードできます。ラズベリーパイのように小さいボードの「BeagleBone」で使われているCPUです。



上記をIBISモデルが無かったラズベリーパイの代わりに見立てて使っています
Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品
Raspberry Pi
2016-02-29




今回は「AC特性の出力特性_Rise time,Fall time」の2つを確認してデータシート通りになっているかを確認したいと思います。

2.「AC特性の出力特性_Rise time,Fall time」from データシート
(20180722時点の)データシートでは「7.8.1章I2C Electrical Data and Timing」に記載されています。

引用すると「I2C Electrical Data and Timing」は下記になります。今回は100kbps想定でシミュレーションを行いますのでSTANDARD MODEの値です

 
MIN
NOM
MAX
UNIT
tr(SDA)
Rise time, SDA 

 
1000
ns
        tf(SDA)
Fall time, SDA  
 
 
300
ns


今回もですが正直上記だけですと、MAX値でしか記載がなくシミュレーション・検証する上ではもったいないのでIBISモデルでも「AC特性の出力特性_Rise time,Fall time」を確認してみます


3.
「AC特性の出力特性_Rise time,Fall time」from IBIS
AM3352のIBISモデルは自由に入手できます。TIのリンク先はこちらからです。
前回同様に今回のIBISモデルとしては標準的なものを使用します。

内部PU,PDなど特についていない標準的な3.3V_IFを使用します
「3.3V-I/O-PI-NORMAL, IND, 10%]」を使って検証していきます
ibis19.PNG


そしてIBISモデルを上から見ていきますと[Ramp][Rising Waveform]があります

「Rampが全体的なRise,Fallの傾き」を定義していて、「Rising Waveformが特定の条件化での立ち上がり時の波形データ」のようです。下記は50ΩのPU(3.3Vで吊っている)条件を表していると思います。

ibis31.PNG

その下を追っていくと[Falling Waveform]があります
「Falling Waveformも特定の条件化での立ち下がり時の波形データ」を示しているようです。

Rising Waveformと同様に50ΩのPU(3.3Vで吊っている)条件を持ってきています
ibis33.PNG


今回は時間に対しての電圧値(typ)(min)(max)が記載されています。PulldownとPullUPの必要な情報をEXCELに切り取ると便利です
ibis34.PNG


そしてEXCELでRising timeの必要な箇所をまとめますと、下記のようにグラフにできますので立ち上がり・立ち下がりの時間と電圧の関係性がよく分かります
ibis35.PNG

まずRising timeの時間-電圧のグラフは下記になります。
緑がV(max)、青がV(typ)、赤がV(min)を示しています

920a7b14.png

前章で記載したデータシートではRise_time(MAX)=1000nsということでした。

あくまで1例ですが、IBISデータを見ると1ns程度で立ち上がりますのでデータシートはあらゆる条件を考慮したかなり大きな幅を持った値になっている様子です

220c1872.png


次に
Falling timeの時間-電圧のグラフは下記になります。
緑がV(max)、青がV(typ)、赤がV(min)を示しています
28d91135.png

Risingと同様にデータシートではFall_time(MAX)=300nsということでしたがIBISデータを見ると1ns程度で立ち下がります
ae8509a0.png


この特性がIBIS⇒SPICE化したモデルでも同様な特性が出ているのかを次の章で確認していきます

「スポンサーリンク」



4.LTSPICEでシミュレーションしてみる_概要編
データシート,IBISモデルともに立ち上がり・立下りを見てきましたので
IBISのデータと対応するように出力先を50ΩのPUに合わせてシミュレーションしていきたいと思います。

今回もIBISモデルの特性は「Typ」を選択しています
ibis8.PNG

モデルは前回作成したI2CのSDAピンをモデルにしたものです
ibis10.PNG

今回のモデルのイメージとしては下記IBISモデルとしてみると分かりすいと思います

①「IN」・・・ SDA信号の波形を決めるピン
 ※今回は100kbps_周期10uでHigh,Lowを繰り返すパターンとします)
②「Vcc」・・・ ICの電源ピン
③「Vss」・・・ ICのGNDピン
④「Out」・・・ I2C_SDAの出力ピン

ibis11.PNG

実際のシミュレーションするモデルでは下記形で行います。
ibis36.PNG


前回作成した出力側のモデルを利用して出力先に抵抗を付けて特性を検証します。

今回の抵抗は50Ωです。本来50Ωなどつける機会は無いのですが、IBISデータの条件と合わせるため50ΩでPUします。(通常数mA流せば良いところを50Ωだと3.3V/50Ω=66mAも流れてしまいます)
ibis37.PNG

シミュレーションの結果は下記形となりました。電圧が0Vからでなく1.6V付近からの波形となっています。(多くの電流を流しているので内部のFETのオン抵抗で電圧差が出ている様子です)

しかしこれは前章で記載したIBISのデータ通りのため問題ありません。
ibis38.PNG

IBISのEXCELデータのtypを抜粋しますと1.6V付近からスタートしています。
前記事でも確認していましたがDC特性でもIBISからSPICEへ問題なく変換できています。
6e50ffdd.png

それでは今回の目的のRise time・Fall timeを見ていきましょう。立ち上がり・立下りの一部分をアップしていきます。
ibis38.PNG

まずはRise timeです縦軸は1.6V~3.4Vを示しており、横軸は1目盛1nsで10ns区間を表示しております。
ibis42.PNG

そして次にFall time です。横軸が上グラフと違い1目盛2nsになっていることにご注意ください
ibis43.PNG

上記の結果を分かりやすく図示すると下記のように「0.1nsのRise/Fall入力波形」がSPICEモデルを通すことで「数nsのRise/Fall出力波形」になまっている形となります。無事ピンの特性を引き継いでシミュレーションができている様子です

ibis36.PNG


次の章からは実際にIBISとのデータ比較・入力出力波形の差分を詳細に確認してみます

5.LTSPICEでシミュレーションしてみる_詳細編

①IBISデータとの比較
ざっくりとですが、立ち上がり時間をLTSPICEでのシミュレーションでは完全に立ち上がるまでに3.5ns程度かかっています。
ibis42.PNG

そしてIBISのデータでは約1nsとなり、nsレベルでは差分が出てきています。

作成したSPICEデータはIBISとは完全に一致ではありませんでしたが、個人的なシミュレーション・デバッグレベルでは気にしない程度かとは考えています

8abe693a.png


②入出力の差分
先ほど示した下記の差分をLTSPICE上で確認してみます
ibis36.PNG

シミュレーションを行うと下記結果となり橙色の入力波形が0~3.3V緑色の出力波形が約1.6V~3.3Vとなっているので、少し変な波形になりますが立下り箇所をアップします
ibis45.PNG

アップした結果が下記となります。入出力の立下りの差分が一目で分かります。前章でも記載しましたが作成したピンの出力特性が影響しており、十分にシミュレーションできているようです
ibis44.PNG

「スポンサーリンク」



6.まとめ・感想
今まで作ったSPICEモデルのAC特性は個人的なシミュレーション・デバッグレベルでは引き継げていたのではと思います。次回からは実際にある配線やIFを想定したシミュレーションを確認したいと考えています。

今日はここまでにしたいと思います
どうもありがとうございました


ラズベリーパイで簡単にI2C通信ができます。

EEPROMの詳細は下記となります。

↑このページのトップヘ