2

ここに私の問題があります。PIC 16F913 のすべての通信回線が同じピン セットにあるようです。これは、通信を行うためだけに GPIO ピンを犠牲にする必要がないという点で便利ですが、私が抱えている問題はチップで SPI を使用している場合、RS232 に情報を送信するにはどうすればよいですか?

この問題が発生した理由は、SPI 経由で通信する CAN バス チップを購入したばかりで、RS232 でデータを表示したいので、メッセージを表示できるようにしたいからです。(私はまだCANについてあまり知らないので、これが理にかなっているのかどうかは誰にもわかりません).

これが私が見るオプションです。おそらく、他の誰かが私が見逃しているより良いアイデアを持っているかもしれません。

  1. どういうわけか、データを取得するたびに SPI と RS232 を切り替えるタイム スキームをセットアップします。

-- これは難しくないようで、うまくいくはずですが、メッセージを見逃したくない場合、RS232 への書き込み中にメッセージが書き込まれた場合、それを見逃す可能性はありますか?

2.. いつでも SPI を使用できますが、別の PIC 16F913 への 8 つの GPIO ラインを介して独自の通信バスを構築し、GPIO ラインのみを使用します。RS232 ラインは 2 番目の PIC で空いているので、単純に読み取ることができます。データを吐き出します。

-- これは実行可能ですが、2 つのチップとすべての GPIO ラインを無駄にしています。

もっと良い方法があるはずです。それともありますか?

どんな助けでも大歓迎です。

更新:明確にしたいのですが、明らかに1つの解決策は完全に異なるチップを使用することです(18Fをプログラムできれば、実際に私がやることになるかもしれません)が、最悪のシナリオに興味があります.私はリソースが限られており、いくつかの 913 しか持っていません。上記の方法がこのチップでそれを行う唯一の方法ですか、それともより良い方法がありますか?

4

3 に答える 3

4

SPI バスのソフトウェア実装を行うことができます。タイミングは重要ではなく、制御できるため、UART よりも簡単です。

ほとんどの CAN チップにはいくつかの受信バッファーがあるため、UART で何かをするのに忙しい場合、メッセージは CAN チップ内にバッファーされます。ただし...メッセージをCANチップからすばやく/頻繁に取得できるようにして、一部を失わないようにする必要があります。

おそらく、UART Tx プロセスに割り込みを使用する必要があります。これにより、UART でデータを送信している間に CAN メッセージを受信できるようになります。

特定のメッセージのみに関心がある場合、ほとんどの CAN チップにはフィルターがあります。これにより、関心のあるメッセージのみを簡単に受信でき、通常、1 秒あたりのパケット数が劇的に減少します。

于 2010-07-19T07:28:20.540 に答える
1

RS232 ポートのソフトウェア実装を使用できます。たとえば、http://mikroe.comの c コンパイラには、このようなライブラリが付属しています。しかし、ビットを出力ピンにシフトするのはそれほど難しいことではありません。rs232 はかなり単純なプロトコルです。

于 2010-07-19T07:18:38.850 に答える
1

MCU を PIC16F1933 に変更することを強くお勧めします。

  1. より新しい
  2. もっと安い
  3. EUART および MSSP モジュールを使用。
  4. MCU アーキテクチャが改良されました。

PIC16F913 MCU は、今後数年で廃​​止されます。

于 2010-07-19T13:39:51.403 に答える