i.MX6ULLプロセッサを使用しています。
ECSPI2_MISOにはUART5_RX_DATAラインを使用しています。
問題
サーマルカメラで測定し、次に電圧プローブを行ったところ、 プロセッサのMIピンとSPIデバイスのSOピンの間に電圧競合が発生している、つまり、両方とも出力として駆動していることを示しています。問題のあるピンはMX6UL_PAD_UART5_RX_DATA__ECSPI2_MISOです。
ドライバーが読み込まれる前に、UART5_RX_DATA ピンがGPIO1_IO31され、期待どおりに入力されます。ただし、spi-imxドライバーをロードするとすぐに、入力ピンの電圧が3.3Vから2.58Vになり、2つのピン間で過剰な電流引き込み と競合が発生します。ドライバーは、ピンが読み込まれたときに入力として保持されることが期待されます。
その後、デーモンが SPI バスを使用するロードを行うと、競合は解消され、サーマルは正常に見え、バスは正常に動作します。
このSPIバスを使用するデーモンを常に実行するわけではありませんが、それ以外に、2つの出力が互いに競合する回数はゼロである必要があります。
イベントのシーケンス
Linuxの起動後、spi-imxがまだロードされていません
UART5_ R X_DATAパッド の電圧 | 3.253V |
SW_MUX_CTL_PAD_UART5_RX_DATAの値 (0x20e00c0) | 0x5 |
UART5_ R X_DATAパッド の電圧 | 2.581V |
SW_MUX_CTL_PAD_UART5_RX_DATAの値 (0x20e00c0) | 0x8 |
NVCC_UART 3.3Vに設定しています。
出力駆動と電圧の関係
出力駆動強度が強くなると、測定される電圧は低下します。出力駆動力が弱まると、出力電圧が上がります。出力駆動強度を000に設定すると、問題は解消され、電圧は予想通りの3.3Vに達します。
spi-imx.c のソースコードバージョン運転手
ここでは、 https://github.com/Freescale/linux-fslc.git のカーネル 5.4-2.1.x-imx を搭載した i.MX6ULL を使用しています。
spi-imx.c への最後の変更ログは次のとおりです。
コミット 0a8472f057642c67b84985fec3c65b7ac521ebd8
Merge: 62f022d6ecd0 a998faa9c4ce
著者: Andrey Zhizhikin
日付: 2021年8月16日(月) 11:14:39 +0000
タグ 'v5.4.140' を 5.4-2.1.x-imx にマージします。
これは 5.4.140 安定版リリースです
サインオフ:アンドレイ・ジジキン
すべてが常に機能していましたが (出力を無効にしたかどうかにかかわらず)、熱解析の結果、ドライバーが読み込まれてからアプリケーションが開始されるまでの間に、MISO ピンが予想よりも低い電圧になっていることがわかりました (これは理論的には、設計では決してない可能性があります)。ドライバー(spi-imx)がロードされる前は、MISOピンはGPIO入力であり、その場合、予想どおりに3.2ボルトを測定します。
1つのデバイスのSPIバスがあります。スレーブの出力には、常にオンになっているレベルシフターが必要です。
使用しているレベルシフターは74LVC2T45です。MISO出力はピン2です。ピン1は3.3Vに接続されています。ピン 4 はアースに接続されています。通常、スレーブデバイスがアイドル状態のときに、ピン2に高電圧が表示されています。チップセレクトは、74LVC2T45への入力にプルアップがあるため、この電圧に影響を与えないことに注意してください。
MISOはMCIMX6Y1CVM05のG13(UART5_RX_DATA)に接続されています。これは、ドライバーがLinuxにロードされるまでトライステートであり、その時点でこのピンは出力がローになりますが、これは望ましくありません。
デバイスツリーでスレーブモードを選択していません。iomuxcを使用してUART5_RX_DATAの出力を無効にすると、読み込みの問題は解消されます。
この問題は、アプリケーションをロードしてSPIバスと通信を開始すると解消されます。
私たちの経験から、SOCがマスターの場合のMISOのNXPデバイスツリーの例は、MISOピンの出力ドライバーを有効にするのではなく、無効にする必要があります。
Hello,
pinctrlで出力ドライバーを無効にしても、使用できますか?
デバイスツリーの例に従って、電圧レベルの低下が異常であることをお勧めします。あなたのつながりを共有していただけませんか?
よろしくお願いいたします。