i2cバスをキャプチャしてKenwood GX806EF2無線テープレコーダーへのAUX入力を作成する

画像



このノートの主人公であるケンウッドGX806EF2ラジオテープレコーダーは、非常に多くの輸出日本車に搭載されていることで有名で(少なくともスバルフォレスターが必要)、外部オーディオソースを接続するためのAUX入力も、CDからMP3ファイルを再生する機能もありません外付けドライブも)。 ラジオテープレコーダーは、6-CDチェンジャーにもかかわらず、当時(2004-2007年)に非常に実用的でした。 CDオーディオ、FM / AMチューナー、それだけです。ただし、カセットレシーバーはなくなりました。



それでも、外観と機能を損なうことなく、AUX入力にすることができます。



私はこのラジオを車で手に入れました。 7インチAndroidタブレットをナビゲーションボックスにマウントして、タブレットからラジオに音声を出力する方法を探し始めましたが、このために新しい「ヘッド」を購入したくありませんでした。

多くの人が内蔵のCDチェンジャーをオフにし、市販のエミュレーターをUSB経由でMP3を再生できるように接続したことが判明しましたが、過度のコストで不必要な破壊行為のように思えました。



外部機器からの音声伝送もFMトランスミッターを使用して解決できますが、このオプションの音質は非常に悪く、FMトランスミッターとキャビン内の配置に余分なコストとのリンクもあります。



一部の場所では、AMチューナーラインをラジオから切断し、残りを外部サウンドに使用することについて言及しましたが、この特定のラジオでは、チューナーのすべてのモードで信号が1本のラインに沿って送られます。 「脆弱性」について無線の回路全体を分析することが決定されました。



メインボードの接着回路はこちらにあります 。 図の興味深い部分は次のとおりです。



画像



望ましいものは、STMicroelectronicsのTDA7406オーディオプロセッサ(図のIC203)の隣にあります。 メインコントローラーをIC203チップに接続するi2cバスを赤で囲み、青で未使用のMDおよびTAPEオーディオ入力を囲みました。 このチップのデータシートからわかるように、4つの独立したステレオオーディオ入力と4つの独立したモノラルオーディオ入力があります。 ただし、それらのすべてが使用されるわけではありませんが、未使用のものは、グランドへのコンデンサによって「消音」されます(C233-C236が例です)。



TDA7406の動作原理を研究した結果、メインコントローラーの制御に干渉し、必要に応じて未使用のオーディオ入力を使用できることがわかりました。 ワイヤーをSDAおよびSCLライン(抵抗R855、R857)にはんだ付けし、それらにロジックアナライザーを接続しました。



画像



通常の動作中、コントローラは0.5秒ごとにi2cバス経由でTDA7406のステータスを要求することが判明しました。 このリクエストには興味深いものはありません-TDA7406ステータスフラグがあります。 停止中の制御コマンドはありません。



画像

画像



バス上で最も興味深いのは、CD / BANDモードの切り替え時および音量の変更時に発生します。 このような場合、コントローラーはTDA7406制御レジスターに長いメッセージを提供します。 このパッケージには、使用可能なほとんどすべてのレジスタの設定が含まれています。 前提の例を次に示します(小さな初期部分)。



画像



このパッケージを解析しましょう:

0x8C(チップアドレス)-R / WビットがリセットされたTDA7406チップのアドレス(コントローラーはレジスタに書き込みを行います)。

0x60(サブアドレス)-パッケージを記録する最初のレジスターのアドレスと記録順序の設定(この場合、コントローラーがTDA7406を構成するときは常に、ゼロアドレスから記録されます:常にレジスター0から始まる構成を書き込みます)。

0x0E(レジスタ0)-レジスタ0の構成、次に必要なもの、ドキュメントから判断すると、これは入力セレクタレジスタです。 現在選択されているオーディオミキサー入力と、このチャンネルに必要なゲイン(ボリューム)を示します。



画像



チューナーチャンネルを選択してさらに操作する(音量を上げる/下げる)と、コントローラーはビット110をゼロレジスタのソースセレクターフィールドに送信します。AUXにMD入力を使用するには、ビット010をこのフィールドに転送する必要があるため、これは非常に便利です。参考:i2cバスには電源電圧に対するサスペンダーがあり、常にフリーであり、バスのアクティブレベルはゼロです。 管理はオープンコレクター(オープンドレイン)によって行われます。 いつでも、このバス上のすべてのデバイスに損傷を与えることなく、i2cバスの任意のラインをゼロにプルできます。



適切なタイミングでコントローラーとオーディオミキサーとの通信を妨害し、FMモードをMDモードに切り替えることができます。 唯一必要なことは、「110」が「010」に変わるように、パルスの適切な時間を正確に追跡することです。 また、コントローラーがTDA7406と通信するたびにこれを行う必要があります。 これがダイアグラム上で必要な瞬間です。赤で強調表示されたSCLラインの強調表示の瞬間に、SDAラインをゼロに設定する必要があります。



画像



Attiny13マイクロコントローラーを使って小さなスカーフを描き、すべてのピンにピンコネクターを付けてプログラミングを簡単にし、i2cと電源にさらに接続しました。



画像



ボードをTDA7406ヘッドに簡単に貼り付けることができるように、ピンを突き出さずにボードの最下層を意図的に平らにしました。



画像



残っているのは、電力線i2c、外部3.5 mmジャック(「マザー」)からATTiny13のボードへのワイヤ、無線ボードへのワイヤをMDラインにはんだ付けすることです(コンデンサC233、C234を取り外した後)。



画像

写真の品質をおforびします。ドキュメントではなく、作成プロセスに興味がありました。



写真の青い線は、ラジオのフロントパネルにあるニュースボタンに移動します。 コントロールインターセプトオーディオミキサーを有効にするために使用されるのは彼女です。 ボタンを押すことにより、インターセプトを有効にし、別のボタンを押す-無効にします。 重要:[ニュース]ボタンを押した後、音量を下げるか上げる必要があります。 思い出すと、オーディオミキサーは制御されておらず、ATTiny13マイクロコントローラー自体はバスに送信を送信しません。



マイクロコントローラーのプログラムは非常にシンプルであることがわかりました。 これは基本的に、中断を使用せずに「額」の問題を解決するものです。 私は少し低いプログラムに戻ります。



したがって、この方法を使用してこの無線のAUX入力を作成することを決定した場合:

1.ネジの種類と場所を覚えて、ラジオを分解します。

2.メインボードにアクセスして、TDA7406チップを見つけます。

3. ATTiny13(コンデンサC1-C3 0.1μF)でボードを作成およびプログラムするには:

画像

4.ボードをTDA7406チップに接着します。

5.メインボードC233、C234から削除します。 スキームに従って、メインボードからATTiny13ボードに配線をはんだ付けします。

画像

TDA7406の近くでは、ATTiny13には電力がありません。 TDA7406には8 Vが供給されており、5が必要です。XP2に引き込む:IC803(24C02)メモリチップのピン8から1本のワイヤー、SO-8パッケージ、上の写真を参照してください。

[ニュース]ボタンからのワイヤ(2つの接点があり、地面ではなく電源に接続する必要があります)XP1:2(PB3)に引きます。

6. AUX出力自体(ヘッドフォン延長コードからのワイヤが付いた工場出荷時の3.5mmの「マザー」コネクタを使用)をボードにはんだ付けします。XP1:左チャネル5、XP2:右チャネル5、およびXP1の共通ワイヤ。 前からコネクタから配線を開始します。外部からの方が便利です。

7.スピーカーをラジオに接続し、確認します。

8.ワイヤのはんだ付けをよくはんだ付けし、「モーメント」のような弾性接着剤でワイヤをボードに固定します。



この修正は、苦情なしでほぼ​​一ヶ月間私のために働きます。 唯一の不便は、2段階のオンとオフのAUXです。 まず、[ニュース]ボタンを押してから、少し音量を下げます。 これは、ボタンがクリックされたときにATTiny自体が構成をオーディオミキサーレジスタに送信するようにプログラムを追加することで回避できますが、これはプログラムを複雑にする不必要な介入であると考えました。 しかし、マイクロコントローラーを使用した適切な経験があれば、この機能は長続きしません。



プログラムについてのいくつかの言葉。 割り込みを使用せず、SCLラインでのクロック(エッジ)トラッキングは、サイクルでGIFRフラグを使用して実行されます。 各SCLクロックで、プログラムはSDAバスのステータスを評価し、シーケンス0x8C 0x60 0x0Eを満たしている場合、log.0が適切な場所のSDAラインに設定されます。 そして円で。 割り込みを使用する場合、ATTiny13は割り込みの入力と処理に多くのクロックを費やし、クロックに追いつきません。 彼にとってi2c周波数は少し高く、160 kHzです。



PCBフォーマットP-CAD 2006のボードはこちらです。

Intel hex形式のATTiny13のファームウェアはこちらです。



UPD:ユーザーの要求に応じて、「ヒューズ」に関する情報を追加します。

ATTniy13は、ヒューズロウバイトのプログラムビットCKDIV8を使用して生産されています。 フィールドにビット1を書き込むことで削除する必要があります。 たとえば、ATTiny13の工場出荷時のFuse Low Byte値が0x6Aである場合、0x7Aに等しくする必要があります。 したがって、最大クロック速度(9.6 MHz)を作成します。 異なるクロック速度では、プログラムは正常に動作しません。



All Articles