بروتوكول I2S: العمل والاختلافات وتطبيقاته

جرب أداة القضاء على المشاكل





الأنظمة الرقمية ومتطلبات البيانات الصوتية الخاصة بها داخل الأجهزة المحمولة وأجهزة الكمبيوتر و أتمتة المنزل تغيرت المنتجات بشكل كبير على مدار فترة زمنية. أصبحت الإشارة الصوتية من أو إلى المعالجات رقمية. تتم معالجة هذه البيانات في أنظمة مختلفة من خلال العديد من الأجهزة مثل DSPs ، ADC ، DACs ، واجهات الإدخال / الإخراج الرقمية ، إلخ. لكي تتمكن هذه الأجهزة من توصيل البيانات الصوتية مع بعضها البعض ، يلزم وجود بروتوكول قياسي. أحدها هو بروتوكول I2S. إنها واجهة ناقل تسلسلي ، صممها Philip Semiconductor في فبراير 1986 لواجهة الصوت الرقمية بين الأجهزة. تتناول هذه المقالة نظرة عامة على I بروتوكول 2S عملها مع التطبيقات.


ما هو بروتوكول I2S؟

يُعرف البروتوكول المستخدم لنقل البيانات الصوتية الرقمية من جهاز إلى جهاز آخر باسم بروتوكول I2S أو بروتوكول Inter-IC Sound. ينقل هذا البروتوكول البيانات الصوتية PCM (رمز النبض المعدل) من IC إلى آخر داخل جهاز إلكتروني. يلعب I2S دورًا رئيسيًا في نقل الملفات الصوتية التي تم تسجيلها مسبقًا من MCU إلى DAC أو مكبر الصوت. يمكن أيضًا استخدام هذا البروتوكول لرقمنة الصوت باستخدام ميكروفون. لا يوجد ضغط داخل بروتوكولات I2S ، لذلك لا يمكنك تشغيل OGG أو MP3 أو تنسيقات الصوت الأخرى التي تكثف الصوت ، ومع ذلك ، يمكنك تشغيل ملفات WAV.



سمات

ال ميزات بروتوكول I2S تشمل ما يلي.

  • يحتوي على 8 إلى 32 بت بيانات لكل عينة.
  • المقاطعات Tx & Rx FIFO.
  • وهو يدعم DMA.
  • فترة تحديد كلمة 16 بت أو 32 بت أو 48 بت أو 64 بت.
  • دفق صوتي ثنائي الاتجاه في وقت واحد.
  • عرض نموذج 8 بت و 16 بت و 24 بت.
  • لديها معدلات عينة مختلفة.
  • يصل معدل البيانات إلى 96 كيلو هرتز خلال فترة تحديد الكلمات المكونة من 64 بت.
  • معشق FIFOs أو FIFOs القناة اليمنى واليسرى المستقلة
  • تمكين مستقل لـ Tx & Rx.

يعمل بروتوكول الاتصال I2S

I2S بروتوكول الاتصالات هو بروتوكول 3 أسلاك يتعامل ببساطة مع البيانات الصوتية من خلال ناقل تسلسلي مكون من 3 أسطر يتضمن SCK (الساعة التسلسلية المستمرة) و WS (تحديد Word) و SD (البيانات التسلسلية).



اتصال 3 أسلاك من I2S:

SCK

SCK أو Serial Clock هو السطر الأول من بروتوكول I2S والذي يُعرف أيضًا باسم BCLK أو خط ساعة البت الذي يستخدم للحصول على البيانات في دورة مماثلة. يتم تعريف تردد الساعة التسلسلي ببساطة باستخدام صيغة مثل التردد = معدل العينة × بت لكل قناة × لا. من القنوات.

WS

في بروتوكول الاتصال I2S ، يكون WS أو تحديد الكلمة هو الخط المعروف أيضًا باسم FS (Frame Select) الذي يفصل بين القناة اليمنى أو اليسرى.

إذا كانت WS = 0 ، فسيتم استخدام القناة اليسرى أو القناة 1.

إذا كانت WS = 1 ، فسيتم استخدام القناة أو القناة الصحيحة 2.

SD

البيانات التسلسلية أو SD هي السلك الأخير حيث يتم نقل الحمولة خلال 2 مكمل. لذلك ، من المهم جدًا نقل MSB أولاً ، لأن كلاً من المرسل والمستقبل قد يشتمل على أطوال كلمات مختلفة. وبالتالي ، يجب أن يتعرف المرسل أو المستقبل على عدد البتات التي يتم إرسالها.

  • إذا كان طول كلمة المستقبل أكبر من جهاز الإرسال ، يتم تقصير الكلمة (يتم ضبط بتات LSB على صفر).
  • إذا كان طول كلمة جهاز الاستقبال أقل من طول كلمة جهاز الإرسال ، فسيتم تجاهل بتات LSB.

ال الارسال يمكن إرسال البيانات إما على الحافة الأمامية أو الحافة الخلفية لنبض الساعة . يمكن تكوين هذا في المقابل سجلات التحكم . لكن ال يقوم جهاز الاستقبال بتثبيت البيانات التسلسلية و WS فقط على الحافة الأمامية لنبض الساعة . يرسل جهاز الإرسال البيانات فقط بعد نبضة ساعة واحدة بعد التغيير في WS. يستخدم جهاز الاستقبال إشارة WS لمزامنة البيانات التسلسلية.

مكونات شبكة I2S

عندما يتم توصيل العديد من مكونات I2S ببعضها البعض ، فإن هذا يسمى شبكة I2S. يشتمل مكون هذه الشبكة على أسماء مختلفة ووظائف مختلفة أيضًا. لذلك ، يوضح الرسم البياني التالي 3 شبكات مختلفة. هنا يتم استخدام لوحة ESP NodeMCU كجهاز إرسال ويتم استخدام لوحة كسر الصوت I2S كجهاز استقبال. الأسلاك الثلاثة المستخدمة لتوصيل جهاز الإرسال والاستقبال هي SCK و WS و SD.

  مكونات شبكة I2S
مكونات شبكة I2S

في الرسم التخطيطي الأول ، يكون جهاز الإرسال (Tx) هو الرئيسي لذا فهو يتحكم في سطور SCK (الساعة التسلسلية) و WS (تحديد الكلمة).

في الرسم البياني الثاني ، المتلقي هو السيد. لذلك يبدأ كل من خطي SCK و WS من جهاز الاستقبال وينتهي جهاز الإرسال.

في الشكل الثالث ، يتم توصيل وحدة تحكم خارجية بالعقد الموجودة داخل الشبكة والتي تعمل مثل الجهاز الرئيسي. لذلك يولد هذا الجهاز SCK & WS.

في شبكات I2S فوق كل شيء ، يتوفر جهاز رئيسي واحد فقط والعديد من المكونات الأخرى التي ترسل أو تستقبل بيانات الصوت.

في I2S ، يمكن لأي جهاز أن يكون هو الرئيسي من خلال توفير إشارة الساعة.

مخطط توقيت I2S

لفهم I2S ووظائفه بشكل أفضل ، لدينا مخطط توقيت بروتوكول اتصال I2S الموضح أدناه. يظهر أدناه مخطط توقيت بروتوكول I2S والذي يتضمن ثلاثة أسلاك SCK و WS و SD.

  مخطط توقيت بروتوكول I2S
مخطط توقيت بروتوكول I2S

في الرسم البياني أعلاه ، أولاً ، الساعة التسلسلية لها تردد = معدل العينة * بت لكل قناة * لا. من القنوات). سطر تحديد الكلمة هو السطر الثاني الذي يتغير بين '1' للقناة اليمنى و '0' للقناة اليسرى.

السطر الثالث هو خط البيانات التسلسلي حيث يتم نقل البيانات في كل دورة ساعة على حافة السقوط مع الإشارة إلى النقاط من HIGH إلى LOW.

بالإضافة إلى ذلك ، يمكننا أن نلاحظ أن خط WS يغير دورة CLK قبل إرسال MSB مما يمنح المتلقي وقتًا لتخزين الكلمة السابقة ومسح سجل الإدخال للكلمة التالية. يتم إرسال MSB عندما يتغير SCK بعد تغييرات WS.

كلما تم إرسال البيانات بين المرسل والمستقبل ، سيكون هناك تأخير في الانتشار

تأخير الانتشار = (فارق التوقيت بين الساعة الخارجية والساعة الداخلية للمستقبل) + (فرق التوقيت بين الساعة الداخلية حتى وقت استلام البيانات).

لتقليل تأخير الانتشار ولمزامنة نقل البيانات بين المرسل والمستقبل ، يلزم أن يكون لدى المرسل فترة ساعة تبلغ

T> tr - لنفترض أن T هي فترة ساعة جهاز الإرسال و tr هي أقل فترة ساعة لجهاز الإرسال.

تحت الشرط أعلاه إذا أخذنا في الاعتبار على سبيل المثال أ جهاز إرسال مع معدل نقل بيانات 2.5 ميجا هرتز ثم:

tr = 360ns

ساعة tHC عالية (الحد الأدنى)> 0.35 T.

الساعة منخفضة tLC (الحد الأدنى>> 0.35T.

جهاز الاستقبال كعبد مع معدل نقل البيانات 2.5 ميجا هرتز ثم:

ساعة عالية tHC (الحد الأدنى) <0.35 ت

ساعة منخفضة tLC (الحد الأدنى) <0.35T.

وقت الإعداد tst (الحد الأدنى) <0.20T.

بروتوكول I2S اردوينو

الهدف الرئيسي من هذا المشروع هو إنشاء واجهة I2S Theremin باستخدام مكتبة Arduino I2S. المكونات المطلوبة لعمل هذا المشروع هي ؛ Arduino MKR Zero ، اللوح ، أسلاك توصيل ، Adafruit MAX98357A ، 3W ، مكبر صوت 4 أوم ، و RobotGeek Slider.

تتيح لك مكتبة Arduino I2S ببساطة إرسال واستقبال بيانات الصوت الرقمي عبر ناقل I2S. لذلك يهدف هذا المثال إلى شرح كيفية استخدام هذه المكتبة لتشغيل I2S DAC لإعادة إنتاج الصوت المحسوب في تصميم Arduino.

يمكن توصيل هذه الدائرة كـ ؛ يتطلب I2S DAC المستخدم في هذا المثال ثلاثة أسلاك بالإضافة إلى مصدر طاقة لحافلة I2S. تتبع اتصالات I2S على Arduino MKRZero على النحو التالي ؛

البيانات التسلسلية (SD) على الطرف A6 ؛

الساعة التسلسلية (SCK) على pin2 ؛

الإطار أو Word Select (FS) على pin3 ؛

عمل

في الأساس ، يحتوي الثيرمين على اثنين من عناصر التحكم في درجة الصوت والحجم. لذلك ، يتم تعديل هاتين المعلمتين عن طريق تحريك اثنين من مقاييس فرق الجهد ، ومع ذلك ، يمكنك أيضًا ضبطهما لقراءتهما. يتم توصيل مقياسي فرق الجهد في شكل مقسم للجهد ، لذا فإن تحريك مقاييس الجهد هذه ستحصل على القيم من 0 إلى 1023. بعد ذلك ، يتم تعيين هذه القيم بين الحد الأقصى والأدنى للتردد والصغرى والأعلى للحجم.

  مخطط I2S Thermin
مخطط I2S Thermin

الصوت المرسل على ناقل I2S عبارة عن موجة جيبية بسيطة يتم تعديل اتساعها وترددها بناءً على قراءة مقاييس الجهد.

شفرة

الكود الخاص بواجهة Theremin مع Arduino MKRZero ، ومقاييس جهد 2 منزلق و I2S DAC مذكورة أدناه.

# تضمين

const int maxFrequency = 5000 ؛ // الحد الأقصى للتردد المتولد
const int minFrequency = 220 ؛ // الحد الأدنى من التردد المتولد
const int maxVolume = 100 ؛ // الحجم الأقصى للتردد المتولد
const int minVolume = 0 ؛ // دقيقة حجم التردد المتولد
معدل العينة const = 44100 ؛ // أخذ عينات من التردد المتولد
const int wavSize = 256 ؛ //حجم المخزن المؤقت
جيب قصير [wavSize] ؛ // المخزن المؤقت الذي يتم فيه تخزين قيم الجيب
تردد كثافة العمليات الحسابية = A0 ؛ // دبوس متصل بالوعاء الذي يحدد تردد الإشارة
ثبات int سعة Pin = A1 ؛ // دبوس متصل بالوعاء الذي يحدد سعة الإشارة
زر كثافة العمليات = 6 ؛ // دبوس متصل بالتحكم في الزر لعرض التردد

الإعداد باطل()
{

Serial.begin (9600) ؛ // تكوين المنفذ التسلسلي
// تهيئة جهاز الإرسال I2S.
إذا (! I2S.begin (I2S_PHILIPS_MODE، sampleRate، 16)) {
Serial.println ('فشل تهيئة I2S!') ؛

بينما (1) ؛
}

توليد Sine () ؛ // ملء المخزن بقيم الجيب
pinMode (زر ، INPUT_PULLUP) ؛ / / ضع دبوس الزر في سحب الإدخال

}
حلقة فارغة() {

إذا (قراءة رقمية (زر) == منخفض)

{

تردد تعويم = خريطة (analogRead (FrequencyPin) ، 0 ، 1023 ، minFrequency ، maxFrequency) ؛ // تردد الخريطة
سعة int = خريطة (analogRead (amplitudePin) ، 0 ، 1023 ، minVolume ، maxVolume) ؛ // خريطة السعة
playWave (التردد ، 0.1 ، السعة) ؛ //تشغيل الصوت
// طباعة القيم على المسلسل
Serial.print ('التردد =') ؛
Serial.println (تردد) ؛
Serial.print ('السعة =') ؛
Serial.println (السعة) ؛

}

}
إنشاء باطل
لـ (int i = 0 ؛ i
جيب [i] = ushort (float (100) * sin (2.0 * PI * (1.0 / wavSize) * i)) ؛ // 100 يستخدم لعدم وجود أعداد صغيرة
}
}
void playWave (تردد عائم ، ثوان عائمة ، سعة int) {
// قم بتشغيل المخزن المؤقت لشكل الموجة المقدم للملف المحدد
// مقدار الثواني.
// احسب أولاً عدد العينات التي تحتاج إلى إعادة التشغيل للتشغيل
// لمقدار الثواني المطلوب.

التكرارات غير الموقعة = ثانية * sampleRate ؛

// ثم احسب 'السرعة' التي نتحرك بها خلال الموجة
// مؤقت بناءً على تردد النغمة التي يتم تشغيلها.

فلوت دلتا = (التردد * wavSize) / عائمة (sampleRate) ؛

// الآن قم بتكرار جميع العينات وتشغيلها ، وحساب
// الموقف داخل الموجة العازلة لكل لحظة في الوقت المناسب.

لـ (unsigned int i = 0؛ i <التكرارات؛ ++ i) {
نقطة البيع القصيرة = (بدون إشارة int) (i * delta)٪ wavSize ؛
عينة قصيرة = السعة * الجيب [نقاط البيع] ؛

// قم بتكرار العينة حتى يتم إرسالها إلى القناتين اليمنى واليسرى.
// يبدو أن الترتيب هو القناة اليمنى ، القناة اليسرى إذا كنت تريد الكتابة
// صوت ستيريو.

while (I2S.availableForWrite () <2) ؛
I2S.write (عينة) ؛
I2S.write (عينة) ؛

}
}

الفرق بين بروتوكول I2C و I2S

يشمل الاختلاف بين بروتوكول I2C و I2S ما يلي.

2 ج

I2S

ال بروتوكول I2C لتقف على بروتوكول ناقل بين IC يرمز I2S إلى بروتوكول الصوت Inter-IC .
يتم استخدامه بشكل أساسي لتشغيل الإشارات بين الدوائر المتكاملة الموضوعة على ثنائي الفينيل متعدد الكلور مماثل. يتم استخدامه لتوصيل أجهزة الصوت الرقمية.
يستخدم سطرين بين العديد من الأساتذة والعبيد مثل SDA & SCL . يستخدم ثلاثة خطوط WS و SCK و SD.
وهو يدعم متعدد السيد ومتعدد الرقيق. انها تدعم سيد واحد.
يدعم هذا البروتوكول تمديد CLK. لا يحتوي هذا البروتوكول على امتداد CLK.
يتضمن I2C بتات إضافية للتشغيل والإيقاف. لا يتضمن I2S أي بتات بدء وإيقاف.

مزايا

ال مزايا الحافلة I2S تشمل ما يلي.

  • يستخدم I2S خطوط بيانات منفصلة ومتسلسلة CLK. لذلك فهو يحتوي على تصميمات استقبال بسيطة للغاية مقارنة بالأنظمة غير المتزامنة.
  • إنه جهاز رئيسي واحد لذلك لا توجد مشكلة في مزامنة البيانات.
  • لا يحتاج الميكروفون المستند إلى I2S o / p إلى واجهة أمامية تمثيلية ولكن يتم استخدامه داخل ميكروفون لاسلكي باستخدام جهاز إرسال رقمي. باستخدام هذا ، يمكنك الحصول على اتصال رقمي بالكامل بين جهاز الإرسال والمحول.

سلبيات

ال عيوب حافلة I2S تشمل ما يلي.

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

التطبيقات

ال تطبيقات بروتوكول I2S تشمل ما يلي.

  • يستخدم I2S لتوصيل أجهزة الصوت الرقمية.
  • يتم استخدام هذا البروتوكول على نطاق واسع في نقل البيانات الصوتية من DSP أو متحكم دقيق إلى برنامج ترميز الصوت لتشغيل الصوت.
  • في البداية ، يتم استخدام واجهة I2S في تصميمات مشغل الأقراص المضغوطة. الآن ، يمكن العثور عليها حيث يتم إرسال بيانات الصوت الرقمي بين الدوائر المتكاملة.
  • يتم استخدام I2S في DSPs و ADCs الصوتية و DACs والميكروكونترولر ومحولات معدل العينة وما إلى ذلك.
  • تم تصميم I2S بشكل خاص لاستخدامه بين الدوائر المتكاملة لتوصيل البيانات الصوتية الرقمية.
  • يلعب هذا البروتوكول دورًا رئيسيًا في توصيل وحدة التحكم الدقيقة والأجهزة الطرفية الخاصة بها عندما يركز I2S على نقل البيانات الصوتية بين أجهزة الصوت الرقمية.

وبالتالي ، فإن هذا كله يتعلق بإلقاء نظرة عامة على مواصفات بروتوكول I2S والذي يشمل العمل والاختلافات وتطبيقاته. I²S هو بروتوكول تسلسلي متزامن بثلاثة أسلاك تستخدم لنقل صوت ستيريو رقمي بين دائرتين متكاملتين. ال محلل بروتوكول I2S هو وحدة فك ترميز الإشارة التي تشمل جميع أجهزة تحليل المنطق DigiView. يوفر برنامج DigiView هذا ببساطة إمكانية البحث على نطاق واسع ، والتنقل ، والتصدير ، والقياس ، والتخطيط والطباعة لجميع أنواع الإشارات. إليك سؤال لك ، ما هو بروتوكول I3C؟