2397356_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2397356_ja-JP

2397356_ja-JP

68LC302およびシリアルブートストラップ機能

こんにちは、みんな。願わくば、2026年にもLC302に関する知識を頭の片隅に留めている人がまだ生きていていてほしい。

LC302を使った小さなプロジェクトに取り組んでいて、シリアルブートストラップ機能を使いたいと思っています。どうしても動作させることができないのですが、動作させるために何か特別な手順が必要なのでしょうか?

思いつく限りのことはすべて試しましたが、今持っているLC302に何か故障があるかもしれないので交換しようと考えていますが、その前に質問しておきたいと思いました。ちなみにパッケージのマークは(Motorolaロゴ入り):

MC68LC302PU25CT
2J29A
QQDJ0316

5Vで電源を供給しています。

基本的に、送信したものをエコーバックしても返してくれません。同じ問題を説明していると思われる以下の投稿を見つけましたが、私の場合は同じ問題が発生していないようです。https ://community.nxp.com/t5/ColdFire-68K-Microcontrollers/We-have-been-using-the-68LC302-for-decades-wit...

私が試したこと/スコープ/論理アナライザーで観察できること:

PLLモードと非PLLモードの両方を試してみました。PLLモードでは4MHzの発振器を使用しました(4.192MHzの発振器は入手困難です)。このモードでは、9174ボー(4MHz×4、/109、/16)を使用しました。PLLを使用しない場合は、ボーレート11467の20MHz発振器を使用しました。信号発生器を使って4.192MHzを入力し、データシートに記載されているボーレートも試してみましたが、うまくいきませんでした。

PA7をハイにしてブートストラップモードを無効にすると、ASピンで一時的な動きが観察できます。おそらくCPUが外部メモリからリセットベクトルを読み取ろうとしているのでしょう。PA7を低くしてブートストラップモードを有効にすると、この動作はもう見られません。おそらくCPUがリセット状態にあるためでしょう。

早い段階で、PA7には何らかの電流源があるようで、約3~4mAの電流を供給していることが分かりました(電流モードでマルチメーターで測定)。これにより、外部のプルダウン抵抗が追いつかず、ロジックハイが発生していました。これは非常に大きな電流値のように感じるのですが、どなたかその理由を説明できますか?上記のスレッドでPA7が予期せず高すぎる数値を引き上げた原因と漠然と関係しているようです。もしかしたら私の部品に不具合があるのかもしれません。

ResetとHALTが同時にアサートされています(私は過去数年間、趣味のプロジェクトで68kに関する豊富な経験を持っています)。

TX/RX信号の極性を含め、すべての配線を二重三重に確認し、念のためSCC1のフロー制御入力も無効状態に戻しました。オシロスコープで測定したところ、USBシリアルアダプターが私が求めるボーレートを確実に生成し、TXからRXへのループでパテに送った文字をエコーバックできるので、特に異常はないとかなり自信を持っています。

メモリバスはまだ配線していません。今のところ、シリアルでコードを読み込んでLEDを点滅させられるかどうか試したいだけなのですが、BUSWピンは16ビットバス動作用にストラップされています。もし関係あるなら?

ハンダ付けを外す前に、他に何か良い提案があれば教えてください。

よろしくお願いします!

Re: 68LC302 and serial bootstrap feature

こんにちは、メッセージありがとうございます。

SCC1関連のピンを使用していることを確認しました。

私のセットアップはワイヤーラップ付きのパーフボード上なので、ワイヤーラップ以外にピンに影響はありません。マルチメーターで確認したところ、リセットとハルトが同時にアサートされ、0Vに達していること、およびすべてのストラップピンが必要な電圧レベルに達しており、ピンが浮いている状態ではないことを確認しました。

また、私の投稿で述べたように、信号発生器から供給される4.192MHzとデータシートに記載されているボーレートも試してみましたが、効果はありませんでした。

CD1を否定状態に結びつけたと言ったのは、用語を混同していただけで、実際にはCTS1とともに接地(アサート)に結び付けられています。

テストとして576バイトを送ってみます。もしかしたら何らかの理由でエコーリングが返っていないのかもしれませんが、正しく受信しているかもしれません。

よろしくお願いします。

Re: 68LC302 and serial bootstrap feature

こんにちは、

まず最初に確認するのはCD1です。LC302のシリアルブートストラップエコーパスについては、マニュアルによるとSCCハードウェアは TXD1 で受信した文字をエコー返すが、 CD1 を主張しなければならない。SCC1では外部 CD1 ピンをローに結びつける必要がある。SCC1モデム制御入力を「否定」状態にした場合、それがエコーが表示されない理由かもしれません。

LC302のブート説明におけるその他の重要なポイント:

  • シリアルブートストラップは、ハードリセット時にサンプリング PA7 = 0 によって有効化されます。ここでハードリセットとは、 RESETHALT の両方が主張されることを意味します。
  • PA7浮いてはいけません。リセット時には、意図的に上下に引っ張る必要があります。
  • SCC1で受信した最初の576バイトはデュアルポートRAMに格納され、受信した各文字はTXD1からエコーバックされます。デバイスは576バイトすべてを受信するまでブートモードを終了しません。
  • 内部クロックブートストラップの場合、公称クロックの仮定は4.192 MHzまたは32.768 kHzで、SCCは約9600ボーにプログラムされています。
  • 非同期UARTモードでは、外部クロックオプションを使用する場合、ビットレートはTCLK1/RCLK1クロックレートの1/16になります。

部品交換前に、まさにこの最小限のセットアップを試してみてください。

  1. RESETHALTを同時に低レベルで押し続けます。
  2. PA7/BOOTボード上のどんな負荷にも負けないくらいの強さで、低い位置にしっかりと固定してください。
  3. PA5で目的の時計モードを選択してください。
    • PA5 = 0 : 内部ブートクロックモード。
    • PA5 = 1 : TCLK1/RCLK1の外部クロック、16 ボー。
  4. PA12/MODCLK0クロックソースと常に一致させて接続してください。マニュアルでは、ハードリセット中にこれをサンプリングして、公称EXTAL周波数を識別します。
  5. CD1低く結ぶ。
  6. RXD1TXD1RCLK1 、およびTCLK1配線は、SCC2ではなくSCC1に準拠させてください。LC302の説明にあるブート機能はSCC1に関するものです。
  7. 受信が正常に機能していれば、エコーは文字ごとに表示されるはずですが、1文字だけでなく、576バイトのテストストリーム全体を送信してください。

PA7から発生する3~4mAは疑わしい。データシートレベルで取得された入力リーク電流値は最大でもわずか20μAで、ミリアンペアをはるかに下回っています。PA7双方向の多機能ピンでもあるため、他の何かがそれを駆動している場合や、部品がすでにリセットサンプリング状態を終了している場合は競合が発生する可能性がありますが、ブートストラップとしてのリセット中は、ローを読み取るためだけに数mAをシンクする必要はありません。PA7の基板レベルのプルアップ/ドライバー/はんだブリッジを確認し、パッケージのピンの向きを確認し、RESETHALTの両方がアクティブに設定されている間に電流を測定してください。

もう一つ実用的な注意点があります。あなたの4MHzの内部クロックの試みは、4.192MHzとは等価ではありません。反対側を調整すれば一部のUARTsでは十分に近いかもしれませんが、ドキュメント内の内部ブートストラップモードは標準的なLC302クロック値を想定しているため、変数を除外するには4.192 MHzで記載されたボーを使ったり、外部クロックモードを使いクリーン TCLK1/RCLK1 = 16 × baud を提供したりできます。

 

よろしくお願いします。

Re: 68LC302 and serial bootstrap feature

SO、68LC302を別のものに交換し、約2秒間は動作しました(送信していた文字が反響しました)が、電源を入れ直すとまた動作しなくなりました。

最初はCD1を接地していませんでした。なぜならデータシートにはシリアルブートストラップの目的で「気にしない」と書かれており、この構成では確かに動作していたからです。動作しなくなった後、CD1を接地してみましたが、効果はありませんでした。

とても近く、しかし遠い。このプロジェクトは呪われているに違いない。

このモデルはPA7に重い電流源があり、十分に引き下げるにはかなり強い抵抗か、それを上書きするためにトライステートドライバーが必要です。

Re: 68LC302 and serial bootstrap feature

チップを壊していると思うよ。それにはいくつかの方法がありますが、あなたの投稿を読む限り、2つの可能性が考えられます。

あなたは外部信号発生器からクロックを供給している(または供給していた)。反射やオーバーシュートを避けるために、信号発生器からのケーブルを終端しましたか?信号発生器から50オームの同軸ケーブルが出ていて、その端に50オームの抵抗器が接続されていない場合、(反射による)電圧が10Vから-5Vまで変動します。それでは確実にチップが壊れるだろう。

Agilent製の信号発生器(他のメーカーのものも同様かもしれません)をお持ちの場合は、「0~5V」にプログラムし、「終端あり/なし」オプションに気づかずに、終端ありに設定して信号を追加しない場合、0~10Vが生成され、その後-10V~20Vにグリッチします。CPUのクロック信号を、高性能な(100MHz以上の高周波)オシロスコープで確認してください。

CPUのシリアルポートを駆動するチップはどのように電源を供給していますか?CPUに電力を供給しているMAX RS232トランシーバ(PCなどから12V RS232が供給されている)はありますか?それともCPUに直接コネクテッドされた外部TTLレベルのシリアルポート(3V3または5V)を使っていますか?後者を使用している場合、CPUの電源を切っても、そのCPUピンには外部電圧が供給され続けます。TTL-RS232は5Vでアイドル状態なので、そうするとピンを損傷させたり、致命的なラッチアップを引き起こす可能性があります。Googleによると、このチップはこれをすると致命的なラッチアップを起こす可能性があるそうです。Wikipediaで「ラッチアップ」を調べてみてください。

そして、すべての機器がしっかりと接地されていることを確認してください。これは、CANを使っている人がいつも忘れてしまうこともあります。RS-232も同様です。

Tom


Re: 68LC302 and serial bootstrap feature

最初に信号発生器を使ってテストしたときは、終端処理をしていませんでした。最近のCASEでは、搭載の20MHz発振器を使い、PLLの設定は一時的に使って簡略化しています。(ただし、これはプロジェクトの最終バージョン(もし完成すればの話ですが)で実行したい構成ではありません。なぜなら、別の部品を駆動するためにも4MHzの発振器を使用したいからです。)

基板全体の電源は、Mikroe製の小型USB-シリアルモジュールから供給されており、このモジュールにはMCP2221Aが搭載されている。残念ながらこれは5V電源と直列のダイオードがつながっているため、基板は4.7Vに近い電圧しか見ていませんが、ベンチ型電源ユニットを使って5Vを供給したこともあります。CPUに電源がないのに、どのピンにも5V信号が出るCASEは思い浮かびません。すべてのピンに電源が入っているか、ないかのどちらかです。

しかし、もしそれがラッチアップでチップを壊す可能性があるなら、今のうちにプロジェクト全体を諦めるかもしれません。なぜなら、Arduinoスタイルのボードにビルディングすることを検討しているからです。もしこれらの部品が奇妙で奇妙な電源状況に過敏すぎるなら、このプロジェクトにはおそらく非常に適さないでしょう。

Re: 68LC302 and serial bootstrap feature

別の選択肢としては、プリント基板上にきちんと何かを製作するという方法もあるでしょう。すでに設計済みですが、まずプロトタイプでその設計をテストしてからPCBに移行したいと思っています。電気的な環境がより優れたプリント基板上に構築してみたら、もしかしたらうまくいくかもしれない、という気がしているんです。

試作を考えた理由の一つは、ストラップとGPIOの間のストラップピンを多重化してリセット時にブートストラップモードに入る正しいロジックを確保するためでした。リセットとブートストラップ有効化は、一部のMCP2221A GPIOによって提供されており、単独でリセットを行うか、ブートストラップを有効にしたままリセットできます。

私の信号発生器はSiglent SDG2122Xです。私がこれを使用する際は、ピークツーピークを5Vに設定し、オフセットを2.5Vに設定することで、-2.5Vから+2.5Vではなく、0Vから5Vの範囲で動作するようにしています。

私のオシロスコープはKeysight MSOX2024Aで、それを使って信号発生器から送られてくる信号を確認しました。その時点で完全に最適なグラウンドセットアップを使っていたとは言えず、クロック信号にオーバーシュートやアンダーシュートが見られましたが、それはスコーププローブにグループクリップやグラウンドスプリングを使っていなかったからだと思います。チップのピンで見た周波数を測定し、電圧が5Vに達しているかを二重に確認することに興味がありました。何にも引きずり込まれることはない。どれくらいオーバーシュート/アンダーシュートだったかは覚えていないので、もう一度測ってみる必要があるでしょう。

Re: 68LC302 and serial bootstrap feature

ワイヤーラッピングには何の問題もありません。それをベースにした非常に高速なシステムをいくつか見たことがあります。必要なのは、電源配線またはグランドプレーンが描かれたユニバーサル基板を用意することです。接地面を設けるのが最善です(そして、反対側には送電網を設置するのも良いでしょう)。次に、アースピンを短いワイヤーで巻き付け、電源プレーンにはんだ付けします。それらの方がPCBよりも信号強度が良いです。

すべてのグランドピンが確実に接地されていること、および基板上に大小のバイパスコンデンサが十分に配置されていることを確認してください。

うまくいくはずだ。もしあなたの持っているチップがダークグレーマーケットで、不良基板から削り取ったものでなければ。私もそれを見たことがあります。

それは優れた信号発生器だ。しかし、ユーザーマニュアルに示されているように「負荷:50オーム」にデフォルト設定にしていて、その終端器を使わなければ、(ドキュメントにも記載されていますが)-2.5Vから7.5Vの信号を50オームのソースインピーダンスで送ります。基板に接続すると、MPU入力保護ダイオードがカットインして50mAをアースや電源レールに導くので、オシロスコープ上ではそれがわからないかもしれません。しかし、50mAは多すぎる。

Tom


Re: 68LC302 and serial bootstrap feature

帰宅したら信号発生器の設定を確認しないといけません。何に設定されているかすぐには思い出せません。

ただ、最初に試したチップの信号発生器しか使っていませんが、2つ目は搭載の20MHz発振器しか接続されていません。

Re: 68LC302 and serial bootstrap feature

私たちはワイヤーラップを使って月まで飛んだこともあるんです。

電源は、チップがはんだ付けされるブレークアウトボードのフットプリントの周囲に私が配線した複数のワイヤーリングによって供給されます。おそらく100%理想的とは言えないだろうが、これまでのところ、この基本的な手法は私にとってはかなりうまくいっている。しかし、チップにできるだけ近いすべての電源ピンにデカップリングキャップを取り付けました。

古いシスコ製モジュールからチップを回収しました。私がそれらを取り外した時点では正常に動作していたことが確認されており、シスコ製であれば偽物である可能性は低いだろう。

今は仕事で出張中ですが、帰国したらROMを配線して、簡単なコードでプログラムしてデータ受信とエコーバックを試みようと考えています。

标记 (1)
无评分
版本历史
最后更新:
星期四
更新人: