برخی ویژگی های USART در میکروکنترلرهای STM32F1

توسط | 26 اسفند, 1398 | STM32, میکروکنترلر | 6 دیدگاه ها

ویژگی-امکانات-usart-stm32

آموزش STM32 یوبرد

شروع بازی ST

آموزش های رایگان STM32

فیلم های آموزش STM32

آموزش خصوصی STM32

USART در میکروکنترلرهای STM32F1 همانند بسیاری از ویژگی های میکروکنترلرهای STM32 با میکروکنترلرهای دیگر شرکت ها متفاوت است. برای پروتکل ارتباطی USART در میکروکنترلرهای STM32 می توان تفاوت هایی را بر شمرد. در این نوشته قصد داریم به بررسی قابلیت های USART در STM32 بپردازیم. این موارد عبارتند از:

  • قابلیت LIN؛
  • قابلیت فرستنده / گیرنده مادون قرمز IrDA؛
  • قابلیت Smart Card؛
  • قابلیت Single Wire؛
  • قابلیت DMA.اینکه USART در میکروکنترلرها چیست و به طور کلی مفاهیم پروتکل ارتباطی USART به چه صورت است، مورد بحث این نوشته نیست. برای اطلاعات بیشتر در این رابطه به نوشتۀ راه اندازی USART در AVR مراجعه بفرمایید.در آموزش STM32 یوبرد، قبل از ورود و آشنایی با این ویژگی ها لازم است تا با برخی از تعاریف مهم آشنا شویم:

 

سیگنال NRZ و RZ در پروتکل های ارتباطی

نام NRZ مخفف عبارت Non Return to Zero است. تصویر 1 نمایش دهندۀ یک سیگنال NRZ است. این سیگنال نوعی پالس بوده که بین پروتکل های ارتباطی دو دستگاه انتقال پیدا می کند. همان طور که در تصویر 1 مشاهده می کنید، این پالس در سطح صفر قرار نمی گیرد. یعنی یا در سطح 1 و یا در سطح 1- قرار می گیرد. به صورت کلی سیگنال NRZ یکی از روش های کدگذاری محسوب می شود.

از دیگر روش های کد گذاری می توان به سیگنال RZ اشاره کرد. این سیگنال بر خلاف سیگنال NRZ که به هیچ عنوان سطح صفر نداشت، پس از هر مرحله و قبل از ورود به سطح دیگر، برای مدتی هر چند کوتاه وارد سطح صفر می شود و پس از آن تغییر سطح می دهد.

پالس-nrz-rz-پروتکل-ارتباطی

تصویر 1 – پالس NRZ و RZ در پروتکل های ارتباطی

حال جملۀ زیر از دیتاشیت میکروکنترلرهای STM32F1 را ببینیم:

سیگنالی که بین دو دستگاه از طریق پروتکل ارتباطی USART انتقال پیدا می کند، به شرط اینکه یکی از این دو دستگاه، یکی از میکروکنترلرهای STM32F1 باشد، پالس NRZ است. به طور خلاصه می توان گفت سیگنال انتقالی در USART در میکروکنترلرهای STM32F1، پالس NRZ است.

 

سیگنال Break

سیگنال Break، سیگنالی است که می توان آن را به راحتی ساخت، آن را توسط پروتکل های ارتباطی ارسال کرد و پس از دریافت، آن را شناسایی کرد و تشخیص داد. همان طور که در تصویر 2 مشاهده می کنید، سیگنال Break، از بیت شروع تا بیت پایان مقدار صفر دارد. از این سیگنال در مد LIN در بخش پروتکل ارتباطی USART در میکروکنترلرهای STM32F1 استفاده می شود.

کاربرد این سیگنال تشخیص تفاوت بین Baud Rate دو دستگاه مرتبط شده به هم است. انتقال داده در دستگاه ها و رایانه های امروزی از طریق داده های سریال صورت می گیرد. این یعنی داده ها به صورت بیت به بیت منتقل می شوند. نرخ Baud Rate در واقع به تعداد تغییرات سیگنال در هر ثانیه گفته می شود. در حقیقت به صورت کلی نرخ Baud Rate سرعت انتقال داده ها را مشخص می کند. زمانی که قرار است داده ای بین دو دستگاه انتقال پیدا کند، لازم است تا سرعت ارسال و دریافت داده در هر دو دستگاه یکسان باشد. در غیر این صورت، داده ها به صورت اشتباه دریافت می شوند. از سیگنال Break به همین منظور استفاده می شود.

سیگنال-break-پروتکل-ارتباطی-usart

تصویر 2 – سیگنال Break در پروتکل ارتباطی USART

اکنون که با برخی از تعاریف لازم آشنا شدیم به دیتاشیت میکروکنترلرهای STM32F1 مراجعه کرده و ارتباط سریال در STM32 را بررسی می کنیم.

 

قابلیت LIN در USART میکروکنترلرهای STM32F1

LIN مخفف عبارت Local Interconnect Network یک پروتکل ارتباطی سریال است. از پروتکل ارتباطی LIN به عنوان یک پروتکل بسیار ارتباطی ارزان در کنار پروتکل CAN در خودروها استفاده می شود. برای آشنایی بیشتر و استاندارد با پروتکل LIN که یک پروتکل ارتباطی تک سیم است، پیشنهاد می شود که استاندارد ISO 9141 را مطالعه بفرمایید. در سخت افزار UART میکروکنترلرهای امروزی، سخت افزار اختصاصی LIN نیز تعبیه می شود. از این جمله می توان به پروتکل USART در STM32F1 اشاره کرد. در زمانی که از قابلیت LIN در پروتکل UART میکروکنترلرهای STM32F1 استفاده می کنیم، قابلیتی داریم که با استفاده از آن می توان یک سیگنال Break ساخت و سپس آن را تشخیص داد. به عبارتی می توان یک سیگنال Break را ساخت، آن را روی مسیر TX ارسال کرد و روی مسیر RX تشخیص داد. به طور کلی از این قابلیت در کاربردهای خودرویی استفاده می شود. به طور مثال در برخی از خودروهای امروزی، ماژول دزدگیر (Intrusion) و همچنین آژیر (Siren) با استفاده از پروتکل ارتباطی LIN به ماژول کنترل بدنه (Body Control Module) متصل می شود.

پروتکل-ارتباطی-lin-در-خودرو

تصویر 3 – پروتکل ارتباطی LIN در خودرو

در آموزش میکروکنترلرهای AVR یوبرد دیدیم که قابلیت LIN در USART میکروکنترلرهای AVR  متداول وجود ندارد. اما در سری Automotive میکروکنترلرهای AVR قابلیت LIN وجود دارد. به طور کلی در اکثر میکروکنترلرهایی که برای کاربرد خودرویی ساخته می شوند و بنا بر اتصال آنها به شبکۀ خودرو به صورت مستقیم باشد، پروتکل LIN تدارک دیده شده است.

 

فرستنده / گیرنده مادون قرمز (IR یا Infrared Radiation)

راه اندازی USART در STM32 علاوه بر استفاده از سیم کشی مستقیم با استفاده از امواج مادون قرمز نیز امکان پذیر است. همان طور که می دانید برای ارتباط دو دستگاه از طریق پروتکل ارتباطی USART باید پایه های TX و RX هر دو دستگاه را به یکدیگر متصل کرد. این دو پایه را می توان با سیم به یکدیگر متصل کرد. راه دیگری که وجود دارد استفاده از فرستنده و گیرنده های مادون قرمز است. به این صورت که پایه های TX و RX هر دو طرف را فرستنده / گیرنده مادون قرمز متصل کرد. به طوری که این دو فرستنده / گیرنده در رو به روی هم قرار گیرند تا در دید هم باشند. بدین صورت می توان بدون استفاده از سیم، اطلاعات را بین دو دستگاه انتقال داد.

به طور کلی لازم است  تا بین فرستنده و گیرنده و میکروکنترلر، یک سخت افزار به نام Decoder به عنوان مثال TIR1000، برای تبدیل سطح منطقی قرار گیرد. زمانی که Decoder بر سر راه فرستنده قرار گیرد، سیگنال را از مسیر TX در قالب USART دریافت می کند و آن را به سیگنال مطلوب انتقال مادون قرمز تبدیل می کند. همچنین زمانی که این سخت افزار در مسیر RX قرار گیرد، سیگنال مادون قرمز را دریافت کرده و آن را به سیگنال مطلوب در قالب USART تبدیل می کند.

اما در ارتباط USART STM32، این سخت افزار به صورت داخلی در میکروکنترلر وجود دارد و می توان به صورت مستقیم و بدون نیاز به واسطی مثل تراشۀ دیکودر TIR1000، فرستنده و گیرندۀ مادون قرمز را به پایه های USART در میکروکنترلرهای STM32F1 وصل کرد. نمونه ای از ارتباط IrDA در USART میکروکنترلرهای STM32F1 در تصویر 4 مشاهده می شود.

قابلیت-irda-uart-میکروکنترلرهای-stm32f1

تصویر 4 – قابلیت IrDA در UART میکروکنترلرهای STM32F1

قابلیت Smart Card در USART میکروکنترلرهای STM32F1

Smart Card یا همان سیم کارت از واحد USART در میکروکنترلرهای STM32F1 استفاده می کند. در این حالت تنها از یک خط دیتا به نام TXو یک خط کلاک به نام SCLK استفاده می شود. استفاده از تنها مسیر TX به این معنی نیست که فقط می توان ارسال داده انجام داد. بلکه مسیر TX در زمان ارسال به سیم کارت، هر دو عمل ارسال و دریافت داده را انجام می دهد و این خود یکی دیگر از قابلیت های USART در میکروکنترلرهای STM32F1 است. نمونه ای از ارتباط Smart Card پروتکل USART میکروکنترلرهای STM32F1 در تصویر زیر در محیط نرم افزار آلتیوم دیزاینر مشاهده می شود. (آموزش طراحی PCB)

قابلیت-smart-card-uart-میکروکنترلرهای-stm32f1

تصویر 5 – قابلیت Smart Card در UART میکروکنترلرهای STM32F1

قابلیت Single Wire در USART میکروکنترلرهای STM32F1

در آموزش STM32 UART علاوه بر موارد مذکور قابلیت دیگری نیز وجود دارد که به آن قابلیت Single Wire، قابلیت تک سیمه یا Half Communication نیز گفته می شود.  یکی دیگر از قابلیت های USART در میکروکنترلرهای STM32F1 بوده که با استفاده از این قابلیت می توان به جای استفاده از هر دو پایۀ RX و TX، تنها یکی از پایه ها را استفاده کرد. در این نوع ارتباط باید از مقاومت Pull Up استفاده کرد. در تصویر زیر به عنوان نمونه، دو پایۀ TX در دو واحد USART یک میکروکنترلر  STM32F1 را به هم متصل کرده ایم.

قابلیت-single-wire-uart-میکروکنترلرهای-stm32f1

تصویر 6- قابلیت Single Wire در UART میکروکنترلرهای STM32F1

واحد DMA در USART میکروکنترلرهای STM32F1

واحد USART در میکروکنترلرهای STM32F1 دارای واحد DMA (مخفف Direct Memory Access) است. در راه اندازی سریال STM32 با استفاده از این قابلیت می توان اطلاعات دریافتی از طریق USART را در SRAM میکروکنترلرهای STM32F1 نوشت (و برعکس). این قابلیت یکی از مهم ترین قابلیت های USART در میکروکنترلرهای STM32F1 است. به این دلیل که هر چه از کانال های بیشتری از DMA استفاده شود، حجم کمتری از CPU میکروکنترلرهای STM32F1 اشغال می شود و همین باعث افزایش هر چه بیشتر سرعت عملکرد میکروکنترلرهای STM32F1 می شود.

به عنوان مثال فرض کنید بخواهیم اطلاعاتی را از پورت سریال USART در میکروکنترلرهای STM32F1 ارسال کنیم و حجمی از CPU را اشغال نکنیم. لازم است تا تنظیمات واحد DMA را انجام داده و سپس اطلاعات را بی وقفه و به صورت مداوم از ارسال کنیم. همین کار را نیز می توان برای دریافت اطلاعات نیز انجام داد. از پروتکل USART در میکروکنترلرهای STM32F1 اطلاعاتی را دریافت کرده و آن را در یک متغیر از پیش تعریف شده در SRAM میکروکنترلر به صورت مداوم ذخیره کنید.

 

نتایج بررسی ویژگی های  USART در میکروکنترلرهای STM32F1:

  1. پالس انتقالی در USART میکروکنترلرهای STM32F1، پالس NRZاست.
  2. در USART میکروکنترلرهای STM32F1سخت افزار اختصاصی LIN تعبیه شده که در کاربردهای خودرویی می توان از آن استفاده کرد.
  3. هنگام استفاده از فرستنده ها و گیرنده های مادون قرمز جهت ارتباط از راه دور دو دستگاه، می توان از USART در میکروکنترلرهای STM32F1 استفاده کرد و در این حالت نیازی به استفاده از Decoder خارجی نیست.
  4. برای ارسال اطلاعات به یک سیم کارت و همچنین دریافت اطلاعات از آن، به واحد USART و پایه های TX و SCLK نیاز است.
  5. قابلیت Single Wire برای استفاده از تنها یک پایه در پروتکل USART در میکروکنترلرهای STM32F1 وجود دارد.
  6. استفاده از واحد DMA در USART میکروکنترلرهای STM32F1 یکی از بهترین راه ها در افزایش سرعت عملکرد میکروکنترلرهای STM32F1است.

 

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

جدیدترین تاپیک های STM32

راه-اندازی-dac-stm32

راه اندازی DAC در STM32

راه اندازی DAC در STM32، ویژگی های DAC در میکروکنترلرهای STM32F1، بلوک دیاگرام DAC در STM32، اتصالات راه اندازی DAC در میکروکنترلر STM32F107VC، نمونه کد رجیستری راه اندازی واحد DAC در میکروکنترلرهای STM32F1، ساخت موج سینوسی با STM32، راه اندازی مبدل دیجیتال به آنالوگ STM32 با توابع HAL

راه-اندازی-usart-stm32

راه اندازی UART در STM32، رجیستری و HAL

راه اندازی UART در STM32، اتصالات و نرم افزار مورد نیاز، نمونه کد USART در STM32 به صورت رجیستری، نمونه کد رجیستری USART با وقفۀ دریافت، نمونه کد HAL برای راه اندازی USART در STM32، نمونه کد HAL با وقفۀ دریافت، نحوه محاسبه Baud rate در USART میکروکنترلرهای STM32F1

برنامه-نویسی-میکروکنترلر-ویژوال-استودیو

برنامه نویسی میکروکنترلرها با ویژوال استودیو

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

راه-اندازی-adc-stm32

راه اندازی ADC در STM32، رجیستری و HAL

راه اندازی ADC در STM32، استفاده از پیکربندی Independent، کانال تکی، تبدیل Discontinuous و کانال Regular، اتصالات لازم برای راه اندازی واحد ADC در STM32، نمونه کد رجیستری، نمونه کد ADC میکروکنترلر STM32 با HAL، خواندن از چند کانال ADC با توابع HAL، توابع HAL راه اندازی ADC

6 دیدگاه ها

  1. سلام استاد.فکرکنم من اولین نفری باشم که این نوشته رو میخونم چون تاچند دقیقه پیش این نوشته توی سایت نبود. من خودم STM32 کار میکنم اما نمیدونستم که LIN چیه و بخصوص اینکه توی USART چیکار میکنه. کاربردش رو خیلی خوب گفتید. تشکر.

    پاسخ
    • سلام. خواهش میکنم. ان شاء الله که مفید بوده باشه.

      پاسخ
  2. سلام استاد. لطفا درمورد DMA در USART میکروکنترلرهای STM32 یا کلا DMA مطلب قرار میدید؟

    پاسخ
    • سلام. بله حتماً. DMA مبحث خیلی مهمیه و حتماً در آینده مطالبی درباره ش قرار میدیم.

      پاسخ
  3. سلام و عرض ادب. نمونه کدهایی که برای قابلبت هایی که توی این نوشته گفتید رو جایی قرار دادید که بتونیم استفاده کنیم؟ مثلا قابلیت LIN یا، قابلیت فرستنده / گیرنده مادون قرمز IrDA یا، قابلیت Smart Card، قابلیت Single Wire، قابلیت DMA.

    پاسخ
    • سلام وقت بخیر. درحال حاضر خیر. در آینده در قسمت پروژه قرار خواهند گرفت.

      پاسخ

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دیگر آموزش های یوبرد

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

آموزش میکروکنترلرهای AVR یوبرد

شاهکار 8 بیتی Atmel

آموزش میکروکنترلرهای LPC یوبرد

یادگار فیلیپس

آموزش های شاخص

ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است