Armadilloフォーラム

SPI通信 7セグLEDで不正表示

fkben

2022年4月6日 9時59分

お世話になります。
◆現象
SPI 通信で7セグLED(2桁)にデータを表示するPythonスクリプトを作成しています。
カーネルの再構築も問題なく実施し、/dev/spidev3.0を利用しています。
下記流れの中で、⑤が問題の箇所です。7セグLEDの表示を消した後に
時々、「._」など意図しない文字が表示されます。
③の操作を行うと正しい表示になります。

① 電源投入時 :不定の文字が表示される(プログラム操作なし)
② プログラム起動後:表示をクリア
③ 表示操作実施 :適宜データの数字を表示
④ 表示操作取り消し:表示をクリア
⑤ そのまま放置 :時々不定の文字が表示される(プログラム操作なし)

◆ 確認事項
お手数ですが、下記内容あるいは他に注意すべき点などありましたら
アドバイスをよろしくお願いいたします。
1) 7セグLEDを利用する場合、こういったことはよくあることでしょうか?
2) ①の起動時の不定文字の表示、そういうものなのでしょうか?
3) 何かハードウェア的にノイズ対策等が必要なのでしょうか?
4) 常に(短い間隔で)、表示クリアコマンドを送り続ける必要があるのでしょうか?
コマンドの送信は、Python3 Spidev xfer2関数を使用。

◆ 環境
本体:Armadillo-640
OS関連:install-disk-sd-buster-a600-20220224.img
7セグLED:OSL10564 74HC595 (2個)
他にもいつかの機器を接続

大変お手数ですが、よろしくお願いいたします。

コメント

> 7セグLED:OSL10564 74HC595 (2個)
> 他にもいつかの機器を接続
>
> 大変お手数ですが、よろしくお願いいたします。

シフトレジスタで組んでいるんですね。パスコンを適切に配置し
適切な太さと間隔の配線になっているでしょうか。あまり配線間
が詰まっているとクロストークしていないかどうか等も気にした
ほうが良いと思います。
ともかく、オシロスコープで波形を観察して意図した通りになって
いるのか確認されるのが一番だと思います。

周辺回路・ソフトウェアの設計に不安が有る場合は、当社の認定する
インテグレーションパートナーをご紹介することもできますので、
是非お問い合わせください。
https://armadillo.atmark-techno.com/purchase/integration-partners

早速のご回答ありがとうございます。
私より、詳しい者に本メッセージを確認して検討してみます。
それを受けて、継続して確認させていただくかもしれません。
よろしくお願いいたします。

>
> > 7セグLED:OSL10564 74HC595 (2個)
> > 他にもいつかの機器を接続
> >
> > 大変お手数ですが、よろしくお願いいたします。
>
>
> シフトレジスタで組んでいるんですね。パスコンを適切に配置し
> 適切な太さと間隔の配線になっているでしょうか。あまり配線間
> が詰まっているとクロストークしていないかどうか等も気にした
> ほうが良いと思います。
> ともかく、オシロスコープで波形を観察して意図した通りになって
> いるのか確認されるのが一番だと思います。
>
> 周辺回路・ソフトウェアの設計に不安が有る場合は、当社の認定する
> インテグレーションパートナーをご紹介することもできますので、
> 是非お問い合わせください。
> https://armadillo.atmark-techno.com/purchase/integration-partners

ちなみに、確認点を4つほどあげましたが下記のような理解で正しいでしょうか?
お手数ですがご確認よろしくお願いいたします。
なお、7セグLEDの前に、パスコン対策でコンデンサを入れることを
考えています。7セグLEDの回路図をみると「0.1uF」のコンデンサが
搭載されていますが足りないのかもということで。

1) 7セグLEDを利用する場合、こういったことはよくあることでしょうか?
パスコン、クロストークについてケアしないと発生する。
2) ①の起動時の不定文字の表示、そういうものなのでしょうか?
ご回答いただいた対策を行うと「改善する」。完全かは微妙?
3) 何かハードウェア的にノイズ対策等が必要なのでしょうか?
ご回答いただいた点を改善する。
4) 常に(短い間隔で)、表示クリアコマンドを送り続ける必要があるのでしょうか?
特に必要ない。

以上、よろしくお願いいたします。

> 早速のご回答ありがとうございます。
> 私より、詳しい者に本メッセージを確認して検討してみます。
> それを受けて、継続して確認させていただくかもしれません。
> よろしくお願いいたします。
>
> >
> > > 7セグLED:OSL10564 74HC595 (2個)
> > > 他にもいつかの機器を接続
> > >
> > > 大変お手数ですが、よろしくお願いいたします。
> >
> >
> > シフトレジスタで組んでいるんですね。パスコンを適切に配置し
> > 適切な太さと間隔の配線になっているでしょうか。あまり配線間
> > が詰まっているとクロストークしていないかどうか等も気にした
> > ほうが良いと思います。
> > ともかく、オシロスコープで波形を観察して意図した通りになって
> > いるのか確認されるのが一番だと思います。
> >
> > 周辺回路・ソフトウェアの設計に不安が有る場合は、当社の認定する
> > インテグレーションパートナーをご紹介することもできますので、
> > 是非お問い合わせください。
> > https://armadillo.atmark-techno.com/purchase/integration-partners

ファイル ファイルの説明
OSL10564-74HC595-X_抜粋.jpg

> ちなみに、確認点を4つほどあげましたが下記のような理解で正しいでしょうか?
> お手数ですがご確認よろしくお願いいたします。
> なお、7セグLEDの前に、パスコン対策でコンデンサを入れることを
> 考えています。7セグLEDの回路図をみると「0.1uF」のコンデンサが
> 搭載されていますが足りないのかもということで。
>
> 1) 7セグLEDを利用する場合、こういったことはよくあることでしょうか?
> パスコン、クロストークについてケアしないと発生する。

よくある、というのは何の頻度の話かわかりませんが
デジタル回路設計を専門にされていれば、ロジック回路が
正しく動くために考えておくべきことだと思います。

> 2) ①の起動時の不定文字の表示、そういうものなのでしょうか?
> ご回答いただいた対策を行うと「改善する」。完全かは微妙?

完全かどうかを定義するのは、お客様自身です。
外部からノイズや静電気が入っても問題ないか等
完全の定義によりますし、こちらのアドバイスはできません。

> 3) 何かハードウェア的にノイズ対策等が必要なのでしょうか?
> ご回答いただいた点を改善する。

上に書いたとおり、何をもって回路設計をよしとするのかは
お客様自身の定義です。お客様の回路設計品質に合否を下すことはできません。

> 4) 常に(短い間隔で)、表示クリアコマンドを送り続ける必要があるのでしょうか?
> 特に必要ない。

クリアコマンドというのは、シフトレジスタのSRCLRを叩く事を
指しているでしょうか?ノイズが入っていたり電源が不安定で
無い限り、クリアするのは書く前に1回でいいとおもいますが、
私もこの構成を使ったことは無いので、想像でしかありません。

他にありそうなのは電源電圧が不安定な可能性もありますし、
この回路を搭載していいる基板の別のパタンからノイズが入る
可能性もありそうですが、こちらではお客様の全ての仕様や
外観等を把握して問題を解消することはできません。あくまで
アドバイスのみです。

波形を確認して評価するようにしてみてください。
ノイズ等ではなく、プログラムのミスで余分に何かを書いていたとしても
波形をみれば分かるはずです。

ご回答ありがとうございます。
オシロスコープでの波形確認の件了解しました。
クリアとは、確認事項の最終欄に記述しましたPython3 Spidev xfer2関数で
「0b00000000」を送りLEDを消灯します。
説明不足で申し訳ありませんでした。
また、何かありましたらお問い合わせさせていただきます。
よろしくお願いいたします。

> > ちなみに、確認点を4つほどあげましたが下記のような理解で正しいでしょうか?
> > お手数ですがご確認よろしくお願いいたします。
> > なお、7セグLEDの前に、パスコン対策でコンデンサを入れることを
> > 考えています。7セグLEDの回路図をみると「0.1uF」のコンデンサが
> > 搭載されていますが足りないのかもということで。
> >
> > 1) 7セグLEDを利用する場合、こういったことはよくあることでしょうか?
> > パスコン、クロストークについてケアしないと発生する。
>
> よくある、というのは何の頻度の話かわかりませんが
> デジタル回路設計を専門にされていれば、ロジック回路が
> 正しく動くために考えておくべきことだと思います。
>
> > 2) ①の起動時の不定文字の表示、そういうものなのでしょうか?
> > ご回答いただいた対策を行うと「改善する」。完全かは微妙?
>
> 完全かどうかを定義するのは、お客様自身です。
> 外部からノイズや静電気が入っても問題ないか等
> 完全の定義によりますし、こちらのアドバイスはできません。
>
> > 3) 何かハードウェア的にノイズ対策等が必要なのでしょうか?
> > ご回答いただいた点を改善する。
>
> 上に書いたとおり、何をもって回路設計をよしとするのかは
> お客様自身の定義です。お客様の回路設計品質に合否を下すことはできません。
>
> > 4) 常に(短い間隔で)、表示クリアコマンドを送り続ける必要があるのでしょうか?
> > 特に必要ない。
>
> クリアコマンドというのは、シフトレジスタのSRCLRを叩く事を
> 指しているでしょうか?ノイズが入っていたり電源が不安定で
> 無い限り、クリアするのは書く前に1回でいいとおもいますが、
> 私もこの構成を使ったことは無いので、想像でしかありません。
>
> 他にありそうなのは電源電圧が不安定な可能性もありますし、
> この回路を搭載していいる基板の別のパタンからノイズが入る
> 可能性もありそうですが、こちらではお客様の全ての仕様や
> 外観等を把握して問題を解消することはできません。あくまで
> アドバイスのみです。
>
> 波形を確認して評価するようにしてみてください。
> ノイズ等ではなく、プログラムのミスで余分に何かを書いていたとしても
> 波形をみれば分かるはずです。

> ご回答ありがとうございます。
> オシロスコープでの波形確認の件了解しました。
> クリアとは、確認事項の最終欄に記述しましたPython3 Spidev xfer2関数で
> 「0b00000000」を送りLEDを消灯します。

なるほど、"一旦消灯"ということは、SRCLRとRCLKには何もつないでおらず
(この回路図だとSRCLRがpullup、RCLKがpulldownのまま制御なし)、
xfer2で与えた値が、シフトしている最中も表示されるという設計だと予想します

意図せず立つビット(セグメント)は一定だとしたら、常にSDOから一定時間で
先のデータだけ見ればいいのでオシロで特定しやすそうです。