نقوم بإخراج الإشارة البعيدة من راديو السيارة مع مضخم يتم التحكم فيه بواسطة i2c



إن إشارة REMOTE (جهد 12 فولت ، الذي يستخدم لتشغيل مكبرات الصوت الخارجية عند تشغيل الراديو) ليس من السهل إزالتها من مسجلات الراديو القياسية الحديثة. إذا كان من الممكن في وقت سابق استخدام المحطة ST-BY لشريحة مكبر الصوت ، والآن لا يستخدم مطورو الراديو هذه المحطة لأنه ظهرت شرائح مضخم يتم التحكم فيها رقميًا.

يمكنك البحث في لوحة الدائرة عن المسارات التي يظهر عليها الجهد عند تشغيل الراديو ، ولكن في معظم الحالات لا تكون مناسبة. يمكنك الاتصال بقوة الإضاءة الخلفية للشاشة ، فقط في هذه الحالة يمكن تشغيل مكبر الصوت بشكل غير مجدول - قبل تشغيل مكبر الصوت المدمج (الذي يصحبه نقرات في المسار) أو عند ضبط المناخ أو عندما تعمل أجهزة استشعار وقوف السيارات.

سأحاول أن أصف طريقة أخرى للخروج من الموقف على سبيل المثال راديو سوينغ القياسي على سكودا اوكتافيا A7

ندرس الجهاز


مكبر الصوت الطرفي هو TDA7563 ، وتأتي إشارة تناظرية إليه مع DSP SAF7741HV.

إن TDA7563 ، كما اتضح ، يحظى بشعبية كبيرة بين مطوري الوحدة الرئيسية لأن الرقاقة لديها تحكم رقمي وتشخيص في ناقل i2c ، وقد تم استخدام i2c في الراديو لفترة طويلة جدًا. تقوم الدائرة المصغرة للمكبر ، عند تشغيل الراديو ، بأمر المعالج الرئيسي ، باختبار مكبرات الصوت ، وتعطي نتيجة الاختبار وفقًا لـ i2c - يتم تحديد دائرة مفتوحة / قصيرة ، مما يسمح لوحدة الراديو بإصدار هذه الأخطاء عبر معدات التشخيص CAN. يتم أيضًا وضع الدائرة المصغرة للمكبر في وضع السكون بواسطة أوامر i2c (لا يتم استخدام المحطة ST-BY الخاصة بمكبر الصوت) ، مما يعقد بشكل كبير استقبال إشارة REMOTE.

بشكل عام ، يتم تشغيل الراديو بالكامل باستمرار ، بغض النظر عما إذا كان قيد التشغيل والإشعال. إنها مجرد تغطية جميع الدوائر الصغيرة غير الضرورية (بما في ذلك مكبر الصوت) حتى يتم الاحتياج إليها ويوقظها المعالج الرئيسي لمسجل الشريط الراديوي (في حالتنا).

يستقبل جهاز استقبال الراديو حالة تشغيل الأبعاد وتشغيل الإشعال عبر CAN. استبدل بأزرار عجلة القيادة - عبر CAN إلى وحدة بوابة ناقل التشخيص ، ثم - عبر LIN إلى وحدة تحكم الأزرار في عجلة القيادة.

فكرة


الفكرة هي وضع جهاز آخر يعتمد على متحكم بسيط ورخيص في الحافلة الداخلية لـ i2c ، والتي سوف تدعي أنها رقاقة مكبر للصوت وتستمع إلى جميع الأوامر التي تطير إليها من معالج الراديو. علاوة على ذلك ، يسمح i2c "للتجسس" الخاص بنا بالبقاء غير مرئي لمعالج الراديو. سيعمل مكبر الصوت المدمج كما كان من قبل ، وسيتم إنشاء إشارة REMOTE بواسطة وحدة التحكم الدقيقة عندما يقوم الراديو بتشغيل مكبر الصوت المدمج. هذه الطريقة مناسبة لجميع مسجلات الأشرطة الراديوية التي تستخدم فيها رقاقة TDA7563 أو متوافقة معها عبر بروتوكول التبادل.

تم تجميع الجهاز نفسه خلال عطلة نهاية الأسبوع على لوحة حيث ، بالإضافة إلى وحدة التحكم الدقيقة ، لم يكن هناك سوى 3 مقاومات و 2 مصباح LED (اختياري). يتم اختيار وحدة التحكم الدقيقة من جهاز غير ضروري ، لذلك لم أفكر لفترة طويلة في اختيار ميكرون.




برنامج تحكم التصحيح


كل شيء بسيط للغاية. نحتاج فقط إلى تنفيذ i2c-slave بعنوان مثل TDA7563 (0x6C) وانتظار طلبات الكتابة. بعد ذلك ، تحتاج إلى أخذ 2 بايت بايت من معالج الراديو وتحليلها. بتات الاهتمام هي Standby Off في البايت IB2 والقنوات الخلفية الصامتة والقنوات الأمامية الصامتة في البايت IB1. بشكل عام ، اتضح أن مسجل الشريط الراديوي يقوم أولاً بتعيين بت إيقاف التشغيل الاحتياطي وبتأخير طفيف - القنوات الأمامية غير الصامتة وقنوات إلغاء صوت القنوات الخلفية الصامتة.



وصفت بايت الأوامر في شكل هياكل بت ، والتي وضعتها في اتحاد مع صفيف من 2 بايت ، حتى عند ملء المخزن المؤقت ، يمكنني الوصول إليه بايت بايت ، وعند تحليل الأمر ، يكون الوصول مناسبًا إلى البتات:

وصف المخزن المؤقت لتلقي الأوامر
typedef struct
{
unsigned char CD_10 :1;
unsigned char UnmuteRearChannels :1;
unsigned char UnmuteFrontChannels :1;
unsigned char RearChannelGain12db :1;
unsigned char FrontChannelGain12db :1;
unsigned char OffsetDetectionEnable :1;
unsigned char DiagnosticEnable :1;
unsigned char NotUsed1 :1;
} tIB1;

typedef struct
{
unsigned char HighEfficiencyMode_Left :1;
unsigned char HighEfficiencyMode_Right :1;
unsigned char CurrentDetectionDiagnosticEnable:1;
unsigned char LineDriverModeDiagnostic :1;
unsigned char StandbyOff :1;
unsigned char FastMuting :1;
unsigned char NotUsed1 :1;
unsigned char NotUsed2 :1;
} tIB2;

typedef union
{
struct
{
tIB1 IB1;
tIB2 IB2;
} IBs;
char Bytes[2];
} tTWI_Buff;


وهذه هي الطريقة التي يبدو بها فحص الأمر (أتحقق من إيقاف تشغيل بتات وضع الاستعداد وإلغاء كتم القنوات الأمامية):

الرمز
void CheckTWIbuff(void)
{
if ((TWI_Buff.IBs.IB2.StandbyOff) && (TWI_Buff.IBs.IB1.UnmuteFrontChannels))
REMOTE_ON();
else
REMOTE_OFF();
}


لمنع الجاسوس من التدخل في قراءة الحالة من TDA7563 ، سنقوم بإصدار بايت = 0xFF أثناء عمليات القراءة من العبد ، حتى يتمكن TDA من رسم خط SDA على الأرض في اللحظات المناسبة ولا يتدخل الجاسوس فيه.
معالج المقاطعة I2c
#pragma vector=TWI_vect
__interrupt void TWI_ISR()
{
switch (TWSR & 0xF8)
{
//===
case 0xa8: // , , Data.
case 0xb8: // Data, ACK.
case 0xc0: // Data, NACK.
TWDR = 0xFF;
break;
//===
case 0x60: // , , Data.
TWI_Buff_Idx = 0;
LED_Flash(5000);
break;
case 0x80: // Data, .
case 0x88: // Data, .
TWI_Buff.Bytes[TWI_Buff_Idx++] = TWDR;
break;
case 0xa0: // STOP RESTART.
CheckTWIbuff();
break;
case 0xF8:
case 0x00:
Init_Twi();
break;
default:
break;
}

TWCR |= (1 << TWINT); // .
}

يمكن تحميل المشروع بالكامل من هنا . من حيث المبدأ ، يمكن إعادة تصميم الكود بسهولة لأي مضخمات MS مع تحكم i2c. (التقى TDF8546 ، على سبيل المثال).

وحدة التحكم الخاصة بي تنام 99٪ من الوقت في وضع إيقاف التشغيل. يستيقظ عند الوصول إلى عنوان i2c الخاص به (باستخدام جهاز TWI) ، ويقبل الأمر ، ويحلله ، إذا لزم الأمر المخرجات 1 للإخراج REMOTE_3.3 ، ويومض مؤشر تصحيح الأخطاء الثاني (D2) ويغفو مرة أخرى.

عملية التصحيح:



نجمعها


عندما يتم تصحيح البرنامج الثابت ، يمكنك البدء في تجميع الراديو.

رسوم لصقها على موالف الشاشة:



لأن لم يكن لدي مكان للترانزستورات على اللوح ، لتشكيل جهد 12 فولت من وحدة تحكم REMOTE_3.3 ، لقد أخذت للتو 78R12 يتحكم فيها المستوى المنطقي. كما تمت إضافة مصهر N10 متكامل عند 0.4 أمبير.



تم توصيل TDA7563 بحافلة i2c للراديو على الأرجل:


تم تجميع الراديو . الأسلاك الزرقاء الثمينة



نفس الشيء ، ولكن على راديو مختلف وفي تنسيق فيديو:

All Articles