این بخش، سومین قسمت از مجموعه آموزش امبدد اترنت است. در این قسمت، به بررسی تراشه ENC28J60 میپردازیم که یکی از پرکاربردترین تراشهها برای افزودن قابلیت اترنت به میکروکنترلرها محسوب میشود.
بدنه تراشه (chasis) و همچنین سر آزاد خازنهای 1nF, 2KV که برای اتصال دو زمین جداگانه سمت ارسال و سمت دریافت (زمین مدار خودمان) داخل سوکت تعبیه شده (پین 8 سوکت) به زمین مدار متصل میشوند.
کاتد LEDها رو به زمین وصل کنید و آند اونها رو با یک مقاومت مناسب در حد 1K یا کمتر به ENC وصل کنید (در دیتاشیت گفته برای تنظیم ارتباط بهصورت Half-Duplex اینطوری متصل کنیم؛ اما اندازهای برای مقاومت تعیین نکرده. من 1k گذاشتم؛ اما در نت تا مقدار 180 اهم هم دیدم که استفاده شده؛ اهمیت خاصی هم نداره چون تنها محدودکننده جریان هست و وابسته به جریان مطلوب LED هاست)
با مراجعه به دیتاشیت ENC28j60 (که از این به بعد ممکنه بهاختصار ENC نامیده بشه) میبینیم که این تراشه قابلیت برقرار ارتباط با استاندارد 10Base-T رو داره. این استاندارد در سند IEEE802.3i توسط IEEE تنظیم و انتشار پیدا کرده و شامل تمام الزامات و پیشنهادهای این نوع ارتباط هست. حالا این استاندارد چی هست؟ اجازه بدید خیلی خلاصه وار یه مروری بکنیم:
در استاندارد شبکه اترنت، سه سرعت 10,100,1000 Mbps تعریف شدهاند. به این سه سرعت به ترتیب Regular, Fast, Gigabit Ethernet میگن. البته در حال حاضر سرعتهای بسیار بالاتر هم درحالتوسعه و استفاده هست. عدد 10 نشان میده که ENC میتونه بیتها رو با سرعت 10 مگابیت بر ثانیه منتقل کنه. یعنی برای انتقال یک بایت؛ سرعت ماکزیمم، یک هشتم این عدد یا 1.25MBps هست (در این سند b برای بیت و B برای بایت استفاده شده) اما به خاطر وجود سربار (overload) در پروتکلهای مختلف؛ عدد واقعی در ارسال دادههای اصلی، بسیار کمتر از این هست.
نگران نباشید؛ این سرعت برای بسیاری از کارهای ما کافیه. مثلاً وقتی بردی طراحی میکنید که مقدار چند سنسور رو میخونه و با TCP (یکی از پروتکلهای لایه چهارم هست که بهموقع توضیح داده خواهد شد) به کامپیوتری ارسال میشه و بعد از پردازش در کامپیوتر، پیغامهایی میگیره که باید یک تعداد نمایشگر LED، رله یا شیر برقی (Electric Valve) رو راهاندازی کنه. درصورتیکه این سرعت کم باشه، با فهم اصول شبکه و جایگزینی ENC با یک تراشه سریعتر مثل ENC424J600، مشکل حل میشه.
مورد بعدی در 10Base-T کلمه Base هست که به معنای خروجی Base band این تراشه است. Base band یا باند پایه در مقابل Broad band یا باند گسترده استفاده میشه و بیانگر اینه که دادههای ما گسسته (دیجیتال) شدهاند. بهعبارتدیگر در هر لحظه از زمان فقط یک بیت از داده روی خط قرار دارد. وقتی شما یه سیگنال مثلاً 5 ولتی رو دیجیتال میکنید؛ بازه صفر تا 5 ولت رو به دو (در حالت باینری) یا مثلاً 4 و 8 و… حالت جدا تقسیم میکنید و سیگنال دریافت شده رو اینطور تفسیر میکنید که مثلاً زیر 0.8 ولت نمایانگر سطح منطقی low یا ‘0’ و ولتاژ بالاتر از 2.5 ولت بیانگر سطح منطقی High یا ‘1’ هست؛ و سیگنال نباید در حدفاصل این دو منطقه یعنی بین 0.8 تا 2.5 قرار بگیره. در این حالت در هر بازه نمونهبرداری dt شما یک بیت رو ارسال میکنید؛ پس برای ارسال یک بایت به 8 کلاک نمونهبرداری نیاز دارید.
حالا فرض کنید که سطح ولتاژ 5 ولت رو به 4 بخش تقسیم کنید و این چهار بخش رو به چهار حالت “00”, “01”,”10”,”11” تفسیر کنید. لذا در این حالت در هر dt شما دو بیت رو ارسال کردید؛ پس برای ارسال یک بایت، تنها به 4 کلاک نیاز خواهید داشت. معمول اینه که فقط از حالت باینری (دو دویی) استفاده میشه. Base band یعنی این! اما در مقابل Broad band رو داریم و به این معناست که با سیگنال به عنوان یک سیگنال آنالوگ برخورد میشه.
اجازه بدید با یک مثال، موضوع رو روشنتر کنیم. فرض کنید برای نمایش یک تصویر بر روی مانیتور، شما حالت باینری استفاده میکنید. برای نمایش هر پیکسل بهصورت رنگی با فرمت RGB 8bit، جهت تعیین رنگ یک پیکسل، شما باید سه بایت یا 24 بیت ارسال کنید. اما در حالت Broad در هر dt شما رنگ یک پیکسل رو مشخص میکنید؛ مثلا سیگنال 2.4v نشاندهنده رنگ سبز (و ولتاژهای نزدیک به آن، مابقی طیف سبز)؛ ولتاژهای نزدیک 4.3 ولت نمایانگر طیف رنگ آبی و 0.8v نمایانگر طیف رنگ قرمز هست.
خب واضحه که این حالت بسیار سریعتر از حالت دیجیتال هست؛ اما درعینحال بسیار نسبت به نویز و تداخل ضعیفه و کافیه روی سیگنال اصلی، کمی نویز داشته باشیم یا مبدل آنالوگ به دیجیتال ما کمی خطا داشته باشه تا طیف رنگی بهم بریزه. اما در حالت دیجیتال، نویزی بسیار قوی لازم هست تا بتونه مثلاً ‘1’ رو به ‘0’ تغییر بده یا بالعکس.
تفاوت تصویر دیجیتال و آنالوگ
دوباره برگردیم سر وقت 10Base-T؛ حرف T در اینجا نشون دهنده کابل مورداستفاده است. T یعنی کابل با سیمکشی از نوع زوجهای بهم تابیده (Twisted pair) هست. برای فیبر نوری از حرف F استفاده میشه. در شبکههای اترنت اولیه، توپولوژی شبکه بهصورت باس بوده و از کابلهای کواکسیال (هم محور مثل سیم آنتن تلویزیون) استفاده میشده که به دلیل مشکلات و همینطور هزینه بالای اون در حال حاضر استفاده نمیشه. در حال حاضر شبکه به صورت ستاره پیادهسازی میشه. درون شبکه، هاستها توسط سوییچ به هم وصلند و برای ارتباط با شبکههای دیگه از قطعهای به نام روتر استفاده میشه.
برای ارتباط میکروکنترلر با ENC کافیه پینهای پورت SPI میکرو به ENC وصل بشه. علاوه بر اون، به پینهای (CS) ̅ و (RST) ̅ تراشه هم نیاز دارید. شما میتونید برای برد خودتون،PCB طراحی کنید یا حالت سادهتر اینه که از ماژول آماده ENC که به صورتهای مختلف در بازار موجود هست؛ استفاده کنید. برای برد میکروکنترلر هم از بردهای آموزشی مختلف مثل Blue pill میتوانید استفاده کنید.
توجه داشته باشید که تراشه ENC با تغذیه 3.3v کار میکنه. به همین دلیل، ما برای راحتی کار از میکروهای STM32 خانواده F103 استفاده کردیم. اگر شما از میکروی 5 ولتی مثل AVR یا PIC استفاده میکنید؛ باید بدونید که پینهای ورودی ENC قابلیت تحمل ورودیهای 5 ولتی رو دارند (5v Tolerant). سیگنال MISO که خرجی تراشه ENC هست؛ رو هم میتوانید مستقیم به میکرو وصل کنید یا اگر که میکروی شما 3.3V رو بهعنوان سطح منطقی ‘1’ قبول نمیکنه؛ از یک level shifter یا بافر استفاده کنید.
نمونه هاي ماژول آماده 60J28ENC به همراه سوکت و ملحقات
به طور خلاصه، به جز تغذیه و گراند ماژول، پنج پین دیگه رو هم به پینهای میکرو متصل میکنیم. سه پین ارتباط SPI یعنی MOSI, MISO, SCK رو به یکی از پورتهای SPI میکرو متصل میکنیم؛ علاوه بر این پینهای (CS) ̅ و (RST) ̅ رو هم به دو پین میکرو متصل میکنیم و تنظیمات این دو پین رو بهعنوان پورت خروجی انجام میدهیم. توجه داشته باشید که هر دو ورودی (CS) ̅ و (RST) ̅ پایین فعال (Active Low) هستند؛ لذا هنگام انجام تنظیمات اولیه میکروکنترلر، مقدار اولیه این دو پین رو در حالت High یا همون ‘1’ قرار بدید.
به مابقی پینها فعلاً نیازی نیست. بعد از اتمام این دوره و برای انجام کارهای سریعتر و کاملتر میتوانید از پینهایی مثل INT و WOL استفاده کنید. اولی برای راهاندازی وقفه (Interrupt) و دومی مخفف Wakeup On Lan برای استفاده از قابلیت sleep میکرو و ذخیره توان هست.
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.