
به نام خدا
مبانی پروتکل ارتباطی ۱۲C
پروتکل I2C در واقع ادغام شده از بهترین ویژگی های SPI و UART می باشد. توسط I2C امکان اتصال چند اسلیو به یک مستر (مانند SPI) و یا استفاده از چند مستر برای کنترل یک یا چند اسلیو وجود دارد. این ویژگی زمانی که شما می خواهید از چند میکروکنترلر برای ارسال داده به یک کارت حافظه و یا نمایش بر روی LCD استفاده کنید، بسیار مناسب می باشد.
مانند روش UART در I2C نیز از دو سیم برای انتقال اطلاعات استفاده می شود.
چگونگی کار کرد
در I2C داده ها به صورت پیام هایی فرستاده شده و پیام ها نیز خود به چند بخش تقسیم می شوند. هر پیام شامل یک بخش آدرس بوده، که همان آدرس باینری مربوط به اسلیو است. یک یا دو بخش مربوط به داده نیز در پیام های ارسالی وجود دارد. پیام همچنین شامل شرایط اولیه و پایانی، بیت های read/write و بیت های ACK / NACK بین هربخش از پیام می شود.
SDA (Serial Data) = ارسال و دریافت داده بین مستر و اسلیو
SCL (Serial Clock) = حامل سیگنال کلاک
I2C یک پروتکل ارتباطی سریال می باشد، لذا داده ها به صورت بیت به بیت از طریق خط SDA منتقل خواهند شد.
همانند SPI، پروتکل I2C نیز به صورت همزمان می باشد، لذا بیت های خروجی با بیت های نمونه توسط سیگنال کلاک همزمان می باشند. سیگنال کلاک توسط مستر کنترل می شود.
بعد از این که فریم آدرس ارسال شد، ارسال داده میتواند شروع شود. مستر به تولید پالس کلاک با وقفههای منظم ادامه میدهد، و بسته به بیت R/W داده توسط مستر یا اسلیو روی SDA قرار داده میشود. بخش داده همیشه شامل ۸ بیت بوده و بیت های باارزش تر(MSB) در ابتدا فرستاده می شوند. این بخش ها بلافاصله با بیت ACK / NACK همراه شده تا تشخیص داده شود، که داده به درستی دریافت شده است. بیت ACK قبل از اینکه داده بعدی ارسال گردد، باید توسط مستر و یا اسلیو دریافت شود ( بستگی دارد به اینکه کدام یک داده را ارسال کرده باشند).بعد از ارسال تمامی بخش های پیام، مستر می تواند شرایط توقف را به اسلیو ارسال کند تا انتقال اطلاعات متوقف شود. شرایط پایانی در واقع تغییر ولتاژ خط SDA از حالت low به high، بعد از تغییر خط SCL به همین صورت و باقی ماندن در وضعیت high می باشد.
.
مراحل ارسال داده
مستر به تمامیه اسلیو های متصل شرایط شروع را می فرستد . در شکل زیر می توانید مشاهده کنید :
مستر به هر اسلیو ۷ یا ۱۰ بیت آدرس اسلیوی که میخواهد متصل شود را می فرستد.
هر اسلیو آدرس فرستاده شده از مستر را با آدرس خود مقایسه می کند. اگر آدرس ها مطابقت داشتند اسلیو یک بیت ACK از طریق خط sda باز می گرداند.
مسرت دیتا فریم را ارسال و یا دریافت می کند
بعد از ارسال هر کدام از بسته های داده، دستگاه دریافت کننده یک بیت ACK به فرستنده ارسال می کند، تا از دریافت موفق داده اطلاع دهد.
برای توقف انتقال داده ها، مستر شرایط توقف را به اسلیو ارسال می کند، به این صورت که ابتدا خط SCL و سپس خط SDA را از حالت low به حالت high تغییر می دهد.
استفاده از یک مستر برای کنترل چند اسلیو
به دلیل اینکه ۱۲C از آدرس دهی استفاده می کند ، چند اسلیو را می توان با استفاده از یک مستر کنترل کرد.
استفاده از چند مستر برای کنترل چند اسلیو
امکان اتصال چند مستر به یک و یا چند اسلیو وجود دارد. در این حالت مشکل زمانی به وجود می آید که دو مستر بخواهند به طور هم زمان از یک خط SDA داده را ارسال و یا دریافت کنند. برای حل این مشکل هر کدام از مستر ها قبل از ارسال پیام باید تشخیص دهند که خط SDA در حالت low قرار دارد و یا حالت high.
مزایا:
- استفاده از دو سیم
- پشتیبانی کردن از چند مستر و چند اسلیو
- اطلاع از انتقال صحیح داده ها توسط بیت های ACK/NACK
- ساختار سخت افزاری ساده تر نسبت به روش UART
معایب:
- سرعت پایین تر انتقال اطلاعات نسبت به روش SPI
- حداکثر طول داده ۸ بیت می باشد.
- تجهیزات سخت افزاری مشکل تر برای پیاده سازی نسبت به روش SPI
دیدگاهها (0)