TT Lab
はじめる
学ぶ 学習パス コース

センサーは正常なのに、ボードが聞き取れない

名前のない取得ファイル

TT Labで続きを見る

一言でいうと

名前が書かれていないキャプチャファイルも、自分自身を説明してくれます。チャンネル数とアイドルレベル、そして線どうしの関係があれば、どのバスかを見分けられます。

なぜ必要なのか

現場で受け取るファイルには、たいてい名前がありません。ch0、ch1としか書かれておらず、測ってきた人は「ここが動かない」としか言いません。どのバスかを尋ねると、「センサーから出ている線」という答えが返ってきます。もう一度尋ねる相手がいないこともあります。そうなったら、ファイルに尋ねるしかありません。

このモジュールは、前の3つのバスを1つにまとめます。それぞれを知っていることと、何かわからない状態で見分けることは、別の技術です。そして、現場で必要なのは、後者です。

どう動くのか

見分けは、安い手がかりから使います。

チャンネル数: 1本なら、非同期シリアル(UART)です。クロックがないので、速度を自分で割り出す必要があります。2本なら、I2Cの可能性が高いです。1本が規則的なクロックで、もう1本がそのクロックのローの区間でだけ変わるなら、ほぼ確実です。4本なら、SPIです。1本は転送の間ずっとローに保たれる選択線で、1本はその中でだけ動くクロックです。

アイドルレベル: 何も起きていないときに、線がどこにあるかは、多くを語ります。UARTとI2Cは、ハイで休みます。そのため、ローでアイドルしている1本だけのキャプチャに出会ったら、極性が反転していることを疑います。間に反転するレベル変換器が入っていたか、RS-232の信号をTTLと勘違いして測った場合です。このとき、値をそのまま読むと、スタートビットが見つからず、フレームが見当違いに捉えられますが、すべてのビットを反転させて読むと、きちんとした文が出てきます。

線どうしの関係: 2本のキャプチャで、1本がもう1本のハイの区間に変化を作ったら、それがSTARTやSTOPです。4本のキャプチャで、1本がもう1本のエッジごとに変わるなら、データです。転送の間ずっと、一度も変わらない線があれば、それも情報です。スレーブがMISOを一度も駆動しなかったという意味だからです。選択が間違っているか、チップが付いていないか、電源がありません。プルアップだけが残った線は、常に0xFFと読まれます。

故障に名前を付けるときは、証拠をあわせて書きます。「ボーレートが合わない」ではなく、「最も短いパルスが112µsなのに、公称のビット時間は104.2µsだ」と書きます。前の文は、次の人が確認できず、あとの文は確認できます。そして、確認できない報告は、時間がたつと噂になります。

채널 1 · 유휴 낮음        -> UART, 극성 반전 의심
채널 2 · STOP 없음        -> I2C, SDA 가 붙들려 버스가 잠김
채널 4 · MISO 모서리 0개  -> SPI, 대상이 응답하지 않음

証拠に使う数字を選ぶときは、数える値と測る値をあわせて入れるほうが良いです。数える値は、STARTの数、サンプルのエッジの数、余るビットの数のような整数です。間違っていれば確実に間違っているので、争いがありません。測る値は、立ち上がり時間、ビット時間、ローの区間の長さのような連続量です。しきい値とサンプルレートによって少しずつ変わるので、あわせて書いておかないと、次の人が同じ値を得られません。どちらか一方だけを書くと、報告が半分になります。個数だけでは、余裕がどれだけ残っているかがわからず、時間だけでは、何が何回起きたかがわかりません。

そして、最も安い手がかりから使う順序を守ることが、実際に時間を節約します。チャンネル数とアイドルレベルは、ファイルの最初の数行を読めばわかります。ここでバスが決まれば、そのバスのルールだけでデコードすればよく、決まらなければ、まだデコーダーを使う時ではありません。デコードから始めて、「結果がおかしい」を繰り返すことが、この仕事で最もよくある時間の無駄です。

最後に、できないことを書く作業が残っています。このコースのキャプチャファイルは、すべて合成された波形です。1次RCでエッジを作り、ノイズもジッターも反射も入れていません。したがって、ここで「正常」と判定したものが、実物のボードで正常だという意味ではありません。デコーダーが正しいことと、信号に余裕があることは、別の主張で、後者は、実物の計測と、データシートのVIH・VIL・タイミングの値との照合が必要です。報告書にこの境界を書いておかないと、読む人は、読んだ以上のことを信じてしまいます。

現場での姿

障害報告書に、「I2Cエラー」の一行だけが書かれて上がってくることが多くあります。その一行だけでは、誰も次の行動を決められません。アドレスがNACKなのか、バスがロックされているのか、立ち上がりが遅いのかによって、直す人が違います。1つ目はファームウェア、2つ目はドライバーの復旧手順、3つ目はハードウェアです。波形でこの3つを見分ければ、報告書の一行が担当者1人を指名します。

逆に、根拠なく名前だけを付けた報告も危険です。「ノイズのせい」という言葉は、ほとんどいつも「まだわからない」の別の言い方です。ノイズだと言うには、ノイズが見える区間と、その大きさをあわせて出す必要があります。

次のラボですること

I2Cのキャプチャ4つと、SPIのキャプチャ3つをデコードします。正常な読み取りの転送、応答のないアドレス、クロックを握るスレーブ、プルアップが弱いバス、モード0とモード3、選択線が遅い転送です。最後のステップでは、名前のないキャプチャを3つ受け取って、バスを見分け、故障に名前と数字の証拠をあわせて付けます。