پیکربندی STM32 و ارتباطات اترنت: راه‌اندازی SPI و اصول شبکه | قسمت چهارم آموزش Embedded Ethernet

blog
۱۴۰۳-۱۲-۲۶
6 دقیقه

مقدمه‌ای بر پروژه راه‌اندازی میکروکنترلر STM32

نرم افزار STM32CubeMX رو باز کنید. یک پروژه جدید ایجاد کنید. یک پورت SPI و دو پین خروجی برای  و  تعریف کنید. با توجه به استفاده از کریستال خارجی 8MHz برای میکروکنترلر؛ ما کلاک داخلی رو، روی 72MHz تنظیم كرديم.

ایجاد و پیکربندی پروژه در STM32CubeMX

تنظیمات پورت SPI

شکل 7 تنظیمات ارتباط SPI

تنظیمات ارتباط SPI

تنظیمات پورت SPI مثل شکل بالا باید باشه (داده 8 بیتی به فرمت MOTOROLA, MSB first,prescaler 8, CPOL=Low, CPHA=1Edge ). توجه داشته باشید با اینکه پورت SPI چهار حالت برای تنظیم پلاریته و لبه کلاک داره؛ اما تراشه ENC فقط حالت اول آن، یعنی پلاریته Low و لبه اول، رو ساپورت (پشتیبانی) میکنه، پس تنظیم SPI فقط در این حالت باید انجام بشه. بیشترین سرعت کلاک پورت SPI که تراشه ENC قادر به دریافت هست، طبق گفته دیتاشیت 20MHz هست؛ در تنظیم مقدار prescaler به این موضوع توجه داشته باشید و در ابتدا از انتخاب سرعت های بالا (جهت کاهش احتمال رخداد خطا) پرهیز کنید.

ذخیره و انتقال پروژه به محیط توسعه KEIL

 پروژه رو ذخیره کنید و پروژه رو برای اجرا روی کامپایلر KEIL ایجاد کنید.

اضافه کردن فایل‌های راه‌اندازی تراشه و پروتکل‌ها به پروژه

  • برای استفاده راحت تر در حين برنامه نویسي، ما دو زوج فایل به محیط برنامه اضافه میکنیم. یک زوج بصورت .c, .h برای راه اندازی تراشه و یک زوج .c, .h برای مابقی پروتکل ها.
قابلیت‌های تراشه ENC و ویژگی‌های آن
تراشه ENC قابلیت ارتباط DMA رو هم داره که استفاده نکردیم. محاسبه چک سام (check sum) رو هم ميتونه به صورت سخت افزاری انجام بده كه ما این مورد رو هم در نرم افزار انجام میدیم تا با فرآیند محاسبه اون آشنا بشیم.

 

تفاوت اصطلاحات داده، فریم، استریم و بسته در شبکه‌های کامپیوتری

اصطلاحات داده (data) ، فریم (frame) ، استریم (stream) ، بسته (packet) فعلا به یک معنی به کار میروند؛ اما در ادامه متوجه میشیم که این کلمات در لایه های خاص استفاده میشن و برای درک بهتر موضوعات، تعریف شده اند.

 

خب بریم سراغ فریم اصلی اترنت. همونطور که چند خط بالاتر گفتیم؛ ما هر تراشه ای استفاده کنیم؛ باید قادر به ارسال و دریافت فریم های اصلی اترنت باشه. حالا برای اینکه بدونیم این فریم چیه و از چه چیزهایی تشکیل شده یه مقدمه کوتاه از بعضی اصول شبکه بگیم و کار رو ادامه بدیم.

اصول و مدل‌های پایه در شبکه‌های کامپیوتری

مفهوم آدرس‌دهی در شبکه

فرض کنید شما میخواهید یک نامه برای کسی ارسال کنید. شرکت پست باید بدونه این نامه، به چه کسی و در کجا تحویل داده بشه؛ لذا شما به یک آدرس یکتا (unique) نیاز دارید که برای هر گیرنده خاص هست. بالطبع فرستنده هم، آدرسی همانند آدرس گيرنده داره. مثلا یک آدرس در حالت كلي اینطوریه: کشور X شهر یا استان Y محله یا منطقه Z خیابان K کوچه M ساختمان با پلاک N و…. وقتي هم که ارسال در داخل يك شهر انجام ميشه، ديگه نياز به آدرس دهي كشور يا شهر نيست و مستقيم ميريم سراغ محله!

مدل‌های شبکه

به عنوان یک مثال دیگه فرض کنید تصمیم دارید به شخصی تلفن کنید، طبیعتا شخص مورد نظر دارای شماره تلفنی ست که در شبکه تلفن یکتاست (پس خودتون هم از یک شماره یکتا دارید زنگ میزنید).

اینو تا اینجا  داشته باشید تا کمی هم از مدل های شبکه براتون بگم. واضحه که ایجاد شبکه های اولیه محصول یک نیاز بود. فرض کنید دانشگاهی می خواست کامپیوترهاش رو به هم متصل کنه تا راحت تر بتونه اطلاعات رو بین اون ها جابجا کنه یا به خاطر کمبود یکسری تجهیزات مثل پرینتر، نیاز بود که اشخاص از کامپیوترهای مختلف، بتونن فایلی رو برای چاپ روی پرینتر مذکور ارسال کنند (قبلا خود پرینتر جابجا می شد یا برای جابجایی فایل ها، نیاز بود حافظه هارد(Hard Disk) از کامپیوتر خارج بشه یا اطلاعات روی فلاپی دیسک ها ریخته بشه و سختی های خودش رو داشت. ضمنا این کارها در فواصل کم امکان پذیر بود). بعد از ایجاد شبکه ها این نیاز مطرح شد که مدل هایی به صورت استاندارد بوجود بیان که هر شبکه ای بر اساس اون ها طراحی بشه تا طراحی و توصیف شبکه راحت تر باشه. این بود که دو مدل برای شبکه؛ یکی با نام OSI(Open Systems Inteconnection) در 7 لایه و دیگری با نام TCP/IP stack یا Internet Protocol Suite در 5 لایه ایجاد شد. خواهیم دید که این دو مدل بسیار به هم شبیه هستند.

لایه‌های مختلف مدل OSI در شبکه

  • یک ارتباط رو در ساده ترین حالت میشه به صورت یک مدل، فقط با دولایه هم تعریف کرد. لایه فیزیکی و لایه منطقی. لایه فیزیکی تفسیر سیگنال های دریافتی و تبدیل اونها به صفر و یک های متناظر هست و لایه منطقی هر تعریف دیگه در این ارتباط رو شامل میشه. مثلا یک ارتباط UART با استاندارد RS232 در لایه فیزیکی، تعریف میکنه که 0 یعنی ولتاژ بالاتر از +10v و 1 یعنی ولتاژ کمتر از -10v و لایه منطقی اینگونه تعریف شده: حالت توقف (Idle) در سطح ‘1’ هست. براي شروع ارتباط؛ یک بیت ‘0’ ارسال میشه؛ بعد داده ها(با طول متفاوت) ارسال میشن؛ در صورت نیاز بیت توزان (Parity) و در نهایت یک یا دو بیت ‘1’ به عنوان بیت پایان!

قصد نداریم به یکباره تمام این لایه ها رو توصیف کنیم و روال اینطوریه که تک تک این لایه ها رو، روی هم میچینیم تا هم مدلمون تکمیل بشه و هم مفاهیم و پروتکل ها رو یاد بگیریم.

لایه فیزیکی

لایه یک که پایین ترین لایه هست لایه فیزیکی نام داره، این لایه هیچ پردازشی انجام نمیده؛ جز اینکه بایت هایی که از لایه دوم دریافت کرده رو بصورت یک جریانی (Stream) از صفر ها و یک ها به سمت مقابل (گیرنده) بفرسته و یا از سمت مقابل یک استریم رو دریافت کنه و اون ها رو بایت به بایت تحویل لایه دوم بده. شکل زیر نمایشی از این عملیات هست. همونطور كه متوجه شديد در اين لايه براي داده ها از کلمه ی “استريم” استفاده ميشه كه به جرياني از بيت ها گفته ميشه.

پیکربندی STM32 و ارتباطات اترنت: راه‌اندازی SPI و اصول شبکه | قسمت چهارم آموزش Embedded Ethernet

  • مجددا یادآوری میکنیم: هر برد اکترونيکی؛ برای ارتباط اترنتی، باید حداقل شامل این دولایه باشه.

لایه دوم (Data Link Layer)

لایه دوم، تعدادی بایت به لایه اول تحویل میده (اینکه این بایت ها چه اطلاعاتی تو خودشون دارند رو کمی جلوتر میگیم) و لایه اول یعنی لایه فیزیکی، این بایت ها رو به ترتیب دریافت از بیت کم ارزش یعنی LSb ارسال میکنه. لایه دوم اما بایت های یک فریم رو از پر ارزشترین بایت به لایه اول تحویل میده؛ یعنی به صورت MSB (بایت پرارزش اول) . لایه دوم کارش چیه؟ یکسری بایت از لایه سوم میگیره و باید اون ها رو ارسال کنه!

مفهوم آدرس‌دهی و آدرس MAC در شبکه

 اولین سوال اینه که به کجا ارسال کنه و آدرس مقصد چیه؟ پس مقصد نیاز به یک آدرس داره که در کل شبکه یکتا باشه. بالطبع خودش هم آدرسی از همین نوع داره. طبق استاندارد، در شبکه اترنت؛ این نوع آدرس رو بهش میگن MAC Address . مک آدرس از 6 بایت تشکیل شده و معمول اینه که بصورت هگزادسیمال نمایش داده میشه به این صورت:

0A:55:4C:12:AF:B3     یا     40-AA-00-10-05-D4

همونطور که می بینید برای جدسازی بخش های مختلف آدرس از : یا – استفاده میشه. توجه داشته باشید که 0 ها رو هم حتما بنویسید.

خب این آدرس چیه؟ عملا از دو بخش تشکیل شده، به سه بایت سمت چپ که بایت های پر ارزش هستند اصطلاحا OUI(Organization Unique Identifier) گفته میشه. از طرف سازمان IEEE به شرکت های تولید کننده چیپ های کنترلر اترنت، یک شماره سه بایتی اختصاص داده میشه که در ابتدای مک آدرس قرار میگیره؛ مثلا این شناسه برای شرکت میکروچیپ که تولید کننده ENC هست 00:04:A3 هست. نرم افزارهای شنود (sniffer) شبکه مثل wireshark از این شناسه برای تشخیص شرکت سازنده چیپ کنترلر شبکه استفاده میکنند. سه بایت بعدی، شماره سریال هر چیپ هست. این مجموعه 6 بايتي، بايست در شبكه ما يکتا باشه. این شش بایت، معمولا از طرف سازنده تراشه، درون چیپ نوشته میشن و هر چيپ شماره يا مك آدرس يكتايي داره. اگر هم مثل چیپ ENC براي مك آدرس؛ حافظه خالي گذاشتن و شما بايد مقدار اون رو تعیین کنید؛ باید مراقب باشید که به هر چیپ یک مک آدرس یکتا (Unique) بدید!

  • کم ارزشترین بیت از اولین بایت (در قسمت OUI) که اولین بیت ارسالی فریم هم هست، اگر ‘1’ باشه؛ اصطلاحا این آدرس یک آدرس multicast هست. هنگامیکه آدرس multicast باشه؛ میتوان تعیین کرد که یک یا چند دستگاه در شبکه این فریم رو دریافت و پردازش کنند. به عنوان مثال؛ فریمی که برای استفاده از این حالت تعریف شده؛ فریم “Pause” هست با آدرس مقصد 01-80-c2-00-00-01 که باعث میشه برای لحظاتی دستگاه های موجود در شبکه؛ از ارسال فریم خودداری کنند (به شرطی که این قابلیت در اون ها تعریف شده باشه). این بیت وقتی ‘0’ باشه؛ گفته میشه که آدرس مقصد؛ unicast هست؛ یعنی فقط دستگاهی که آدرس دهی شده؛ این فریم رو پردازش خواهد کرد. لذا آدرس خصوصی تمام دستگاه ها در شبکه (منجمله برد ما) باید در این بیت، شامل ‘0’ باشد.
  • ست بودن بیت دوم از پرارزشترین بایت هم نشوندهنده اینه که آدرس توسط شرکت سازنده درون تراشه نوشته شده در حالیکه ‘0’ بودن این بیت به این معنیه که این آدرس توسط استفاده کننده نهایی تعیین شده (مثل وضعیت ما در تعیین آدرس برای ENC). عموما این تعریف برای بیت دوم مورد استفاده قرار نمیگیره و کاربران توجهی به ست بودن یا نبودن آن ندارند.
  • یک مک آدرس خاص هم که تمام بیت های اون با ‘1’ پر شده (یعنی به فرم FF:FF:FF:FF:FF:FF هست) رو میگیم مک آدرس عمومی (broadcast). هر گاه آدرس مقصد با این آدرس پر شده باشه؛ همه گیرنده ها در شبکه، این پیام رو دریافت و پردازش خواهند کرد.

ساختار فریم‌های شبکه و اطلاعات اضافی در لایه Data Link

 خب دوباره برگردیم سراغ لایه دوم شبکه که در مدل OSI بهش Data Link Layer میگن. این لایه علاوه بر 12 بايت شامل مک آدرس ها (6 تا برای گیرنده و 6 تا برای فرستنده)، دو بایت هم  برای شناسایی نوع داده هایی که داره ارسال میشه، به ابتدای فریم اضافه میکنه.

بررسی CRC و صحت داده‌ها در لایه Data Link

همچنین برای بررسی صحت دریافت داده ها در سمت گیرنده؛ در انتهای فریم، چهار بایت برای بازبینی اطلاعات قرار میده. این چهار بایت یک عملیات CRC روی بایت های ارسال شده ست. لایه دوم تنها لایه ای هست که علاوه بر هدر (12 بایت مک آدرس ها و 2 بایت نوع فریم)، فوتری از نوع CRC هم به داده ها اضافه میکنه. به این بخش FCS (Frame Check Sequence) گفته میشه.

اطلاعات
0
0
لینک و اشتراک
profile

مجتبی داشخانه

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت

سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم

سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ

آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی

پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله