اطلاعیه

Collapse
No announcement yet.

تفاوت spi و usart در دیتا فرم چیست

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تفاوت spi و usart در دیتا فرم چیست

    دوستان همونطور که میدونیم تو ارتباط usart دیتا به صورت یک فریم ارسال میشه
    Click image for larger version

Name:	USARTvsUART.jpg
Views:	1
Size:	24.3 کیلو بایت
ID:	1126281
    تو spi در مورد ارسال اطلاعات چطور هست یا فریم داره مثل سریال یا نه رو نفهمیدم.
    لطف میکنید مقدار توضیح بدین که تفاوت ارسال دیتا به چه شکله تو spi .
    ممنونم.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : تفاوت spi و usart در دیتا فرم چیست

    نوشته اصلی توسط hosseinam نمایش پست ها
    دوستان همونطور که میدونیم تو ارتباط usart دیتا به صورت یک فریم ارسال میشه
    [ATTACH=CONFIG]10179[/ATTACH]
    تو spi در مورد ارسال اطلاعات چطور هست یا فریم داره مثل سریال یا نه رو نفهمیدم.
    لطف میکنید مقدار توضیح بدین که تفاوت ارسال دیتا به چه شکله تو spi .
    ممنونم.
    سلام. وقتتون بخیر.
    در پروتکل SPI احتیاج به ارسال داده به صورت فریم نیست و میتونید بیت ها رو به صورت استریم ارسال یا دریافت کنید.
    یعنی میتونید یک بیت ، دو بیت و هر تعداد دلخواه بیت پشت سر هم ارسال یا دریافت کنید.
    توی SPI با هر لبه بالا رونده ( یا پایین رونده ) master یک بیت داده را راسال میکنه و slave دریافت میکنه.
    در پروتکل SPI کلاک توسط master تولید می شود و به slave انتقال می یابد.
    اینجا نحوه پیکربندی های مختلفی وجود داره مثلا master توی لبه بالارونده بیت رو ارسال میکند و slave در لبه پایین رونده کلاک داده را دریافت میکنه و یا برعکس.
    در پروتکل SPI چهار پایه ( در نوع خاصی 3 پایه ) از میکرو استفاده میشود.
    1- clock
    2- MISO ( Master Input Slave Output)
    3- MOSI ( Master Output Slave Input)
    4- CS ( Chip Select)
    موفق باشید.
    جدیدترین ویرایش توسط saati.sms; ۱۱:۱۸ ۱۴۰۰/۰۱/۰۶.

    دیدگاه


      #3
      پاسخ : تفاوت spi و usart در دیتا فرم چیست

      نوشته اصلی توسط saati.sms نمایش پست ها
      سلام. وقتتون بخیر.
      در پروتکل SPI احتیاج به ارسال داده به صورت فریم نیست و میتونید بیت ها رو به صورت استریم ارسال یا دریافت کنید.
      یعنی میتونید یک بیت ، دو بیت و هر تعداد دلخواه بیت پشت سر هم ارسال یا دریافت کنید.
      توی SPI با هر لبه بالا رونده ( یا پایین رونده ) master یک بیت داده را راسال میکنه و slave دریافت میکنه.
      در پروتکل SPI کلاک توسط master تولید می شود و به slave انتقال می یابد.
      اینجا نحوه پیکربندی های مختلفی وجود داره مثلا master توی لبه بالارونده بیت رو ارسال میکند و slave در لبه پایین رونده کلاک داده را دریافت میکنه و یا برعکس.
      در پروتکل SPI چهار پایه ( در نوع خاصی 3 پایه ) از میکرو استفاده میشود.
      1- clock
      2- MISO ( Master Input Slave Output)
      3- MOSI ( Master Output Slave Input)
      4- CS ( Chip Select)
      موفق باشید.
      ممنونم.متوجه شدم .
      دوتا بحث دیگه تو ذهنمه که سواله هنوز برام . اگه لطف کنید یه راهنمایی بفرمایید ممنون میشم.
      یکی بحث سرعت انتقال داده هست و یکی بحث روش انتقال داده .

      فرض کنید یه داده 100 بایتی رو میخواییم از یه میکرو به میکرو ی دیگه ارسال کنیم.با usart - مراحل به چه صورته؟
      من فکر میکنم باید اینطور باشه -
      1- ریختن داده در بافر فرستنده
      2-ارسال بایت اول از میکروی اول
      3- دریافت بایت اول در میکروی گیرنده
      4- ریختن دیتا در متغییر مورد نظر در میکروی دوم
      5- اطلاع دادن به میکرو ی اول از سمت میکروی دوم برای ارسال بایت بعدی
      حالا فرض کنیم خطای داده رخ نداده باشه. درسته این مراحل به نظرتون ؟


      بحث دوم سرعت هستش.مثلا میگن 100 بایت بر ثانیه . خوب من اگه بخوام مراحل بالا رو برم برای ارسال 100 بایت تا بیام چک کنم رسیده و ذخیره کنم و به میکروی بعدی اطلاع بدم که بایت بعدی رو بفرسته - این سرعتش پایین میآد دیگه.

      اینم راهنماییی بفرمایید ممنون میشم. یا دنبال چی تو گوگل باشم که پاسخ سوالاتم رو بگیرم.
      به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
      (پيش به سوي هدف)

      دیدگاه


        #4
        پاسخ : تفاوت spi و usart در دیتا فرم چیست

        نوشته اصلی توسط hosseinam نمایش پست ها
        ممنونم.متوجه شدم .
        دوتا بحث دیگه تو ذهنمه که سواله هنوز برام . اگه لطف کنید یه راهنمایی بفرمایید ممنون میشم.
        یکی بحث سرعت انتقال داده هست و یکی بحث روش انتقال داده .

        فرض کنید یه داده 100 بایتی رو میخواییم از یه میکرو به میکرو ی دیگه ارسال کنیم.با usart - مراحل به چه صورته؟
        من فکر میکنم باید اینطور باشه -
        1- ریختن داده در بافر فرستنده
        2-ارسال بایت اول از میکروی اول
        3- دریافت بایت اول در میکروی گیرنده
        4- ریختن دیتا در متغییر مورد نظر در میکروی دوم
        5- اطلاع دادن به میکرو ی اول از سمت میکروی دوم برای ارسال بایت بعدی
        حالا فرض کنیم خطای داده رخ نداده باشه. درسته این مراحل به نظرتون ؟


        بحث دوم سرعت هستش.مثلا میگن 100 بایت بر ثانیه . خوب من اگه بخوام مراحل بالا رو برم برای ارسال 100 بایت تا بیام چک کنم رسیده و ذخیره کنم و به میکروی بعدی اطلاع بدم که بایت بعدی رو بفرسته - این سرعتش پایین میآد دیگه.

        اینم راهنماییی بفرمایید ممنون میشم. یا دنبال چی تو گوگل باشم که پاسخ سوالاتم رو بگیرم.
        معمولا در پروتکل های ارتباطی وقتی برای ارسال ، داده را داخل بافر ارسالی قرار میدید هنگامی که داده ارسال شد یک پرچمی رو فعال میکنن یا وقفه میدن. که توصیه این هستش که از وقفه استفاده کنید چون هم از لحاظ پردازشی برای پردازنده سبک تر هست و برنامه خوانا تر و عملکرد بهتری دارد ( البته اگر برنامه ساده ای هستش خیلی تفاوت نمیکنه. )
        در میکرو گیرنده هم مثل میکرو فرستنده هست هنگامی که فریم شما کامل دریافت شد یک پرچمی رو فعال میکنه یا اگر وقفه رو فعال کرده باشین بهتون وقفه میده حالا توی روتین وقفه مقدار بافر داخل یک متغیر ذخیره میکنید و ازش استفاده میکنید.
        این که شما میگید سرعتش میاد پائین درست نیست. چون چک کردن اینجا قرار نیست که زمانی از شما بگیره. عملا به صورت سخت افزاری چک میشه. مثلا یه شمارنده داخل ماژول usart شما قرار داره که وقتی 8 بیت دریافت شد وقفه میده و شما از این طریق متوجه میشید که داده کامل دریافت شده حالا میتونید به فرستنده بگید داده بعدی رو بفرسته. یا مثلا اگر مسیر به گونه ای هست که داده ها دچار خطا نمیشن دیگه نیازی به چک کردن هم نیست. فرستنده به محض اینکه فریم اولش رو ارسال کرد پشت سرش فریم بعدی رو دریافت میکنه. در میکرو گیرنده هم به محض اینکه داده دریافت شد ذخیره میشه.
        برای پیدا کردن اطلاعات داخل گوگل هم میتونید کلیدواژه های " پروتکل SPI " ، " پروتکل UART" و یا " پروتکل USART " رو سرچ کنید. خوب قاعدتا اینجا ها معمولا کلیت پروتکل توضیح داده میشه. اگر از پردازنده خاصی استفاده میکنید بهتر هست که دیتاشیت رو مطالعه کنین تمام این موارد داخلش هست. اگر هم از پردازنده های معمول و پر استفاده ، استفاده میکنید که باز توی سایت های مختلف قابل جست و جو هستند.

        دیدگاه


          #5
          پاسخ : تفاوت spi و usart در دیتا فرم چیست

          نوشته اصلی توسط saati.sms نمایش پست ها
          معمولا در پروتکل های ارتباطی وقتی برای ارسال ، داده را داخل بافر ارسالی قرار میدید هنگامی که داده ارسال شد یک پرچمی رو فعال میکنن یا وقفه میدن. که توصیه این هستش که از وقفه استفاده کنید چون هم از لحاظ پردازشی برای پردازنده سبک تر هست و برنامه خوانا تر و عملکرد بهتری دارد ( البته اگر برنامه ساده ای هستش خیلی تفاوت نمیکنه. )
          در میکرو گیرنده هم مثل میکرو فرستنده هست هنگامی که فریم شما کامل دریافت شد یک پرچمی رو فعال میکنه یا اگر وقفه رو فعال کرده باشین بهتون وقفه میده حالا توی روتین وقفه مقدار بافر داخل یک متغیر ذخیره میکنید و ازش استفاده میکنید.
          این که شما میگید سرعتش میاد پائین درست نیست. چون چک کردن اینجا قرار نیست که زمانی از شما بگیره. عملا به صورت سخت افزاری چک میشه. مثلا یه شمارنده داخل ماژول usart شما قرار داره که وقتی 8 بیت دریافت شد وقفه میده و شما از این طریق متوجه میشید که داده کامل دریافت شده حالا میتونید به فرستنده بگید داده بعدی رو بفرسته. یا مثلا اگر مسیر به گونه ای هست که داده ها دچار خطا نمیشن دیگه نیازی به چک کردن هم نیست. فرستنده به محض اینکه فریم اولش رو ارسال کرد پشت سرش فریم بعدی رو دریافت میکنه. در میکرو گیرنده هم به محض اینکه داده دریافت شد ذخیره میشه.
          برای پیدا کردن اطلاعات داخل گوگل هم میتونید کلیدواژه های " پروتکل SPI " ، " پروتکل UART" و یا " پروتکل USART " رو سرچ کنید. خوب قاعدتا اینجا ها معمولا کلیت پروتکل توضیح داده میشه. اگر از پردازنده خاصی استفاده میکنید بهتر هست که دیتاشیت رو مطالعه کنین تمام این موارد داخلش هست. اگر هم از پردازنده های معمول و پر استفاده ، استفاده میکنید که باز توی سایت های مختلف قابل جست و جو هستند.
          ممنونم از توضیحات خوبتون.
          الان تقریبا بعد چند رو ز گشت و تحقیق و دیتاشیت تونستم با رجیستر ها بین دوتا میکرو ارتباط برقرار کنم و اطلاعات رو بفرستم.
          حالا یه سوال پیش اومد برام . اینکه چه فرستنده و یا گیرنده یه میکرو یه بایت رو داخل یه رجیستر مشترک میریزه - حالا وقتی که حالت فرستنده گیرنده رو فعال میکنیم یعنی در آن واحد هم یه بایت بفرسته و هم یه بایت بگیره .
          خوب این یا باید اول بفرسته بعد بگیره یعنی نمیتونه در آن واحد هم بفرسته هم بگیره . چون فرض کنین ما در آن واحد هم باید دیتا بریزیم داخل رجیستر تا بفرسته هم از اون طرف دیتا داره وارد میشه و رو ی این مینویسه .
          این قسمتشو هنوز نگرفتم که چی میشه داستانش. اگه لطف کنید توضیح بدید ممنون میشم. یخورده گنگه برا من.
          ممنونم.
          به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
          (پيش به سوي هدف)

          دیدگاه


            #6
            پاسخ : تفاوت spi و usart در دیتا فرم چیست

            نوشته اصلی توسط hosseinam نمایش پست ها
            ممنونم از توضیحات خوبتون.
            الان تقریبا بعد چند رو ز گشت و تحقیق و دیتاشیت تونستم با رجیستر ها بین دوتا میکرو ارتباط برقرار کنم و اطلاعات رو بفرستم.
            حالا یه سوال پیش اومد برام . اینکه چه فرستنده و یا گیرنده یه میکرو یه بایت رو داخل یه رجیستر مشترک میریزه - حالا وقتی که حالت فرستنده گیرنده رو فعال میکنیم یعنی در آن واحد هم یه بایت بفرسته و هم یه بایت بگیره .
            خوب این یا باید اول بفرسته بعد بگیره یعنی نمیتونه در آن واحد هم بفرسته هم بگیره . چون فرض کنین ما در آن واحد هم باید دیتا بریزیم داخل رجیستر تا بفرسته هم از اون طرف دیتا داره وارد میشه و رو ی این مینویسه .
            این قسمتشو هنوز نگرفتم که چی میشه داستانش. اگه لطف کنید توضیح بدید ممنون میشم. یخورده گنگه برا من.
            ممنونم.
            خواهش میکنم.
            مثلا پروتکل spi به این صورت هست که داده به صورت چرخشی بین فرستنده و گیرنده جا به جا میشه. یعنی همزمان هر بار که کلاک توسط master ایجاد شده و به slave میرسد یک بیت از بافر فرستنده ( مثلا بیت MSB ) خارج شده ( به عبارت بهتر بافر فرستنده شیفت به چپ میخوره ) و وارد گیرنده میشه ( مثلا وارد LSB گیرنده میشه) و همزمان با این اتفاق بیت MSB از گیرنده خارج شده و در LSB فرستنده قرار میگیره و داده جا به جا میشه.
            توی گیف زیر بهتر دیده میشه ( البته سرعتش یه خورده زیاد هست میتونید سرعتش رو با پلیر ها بیارید پایین که قشنگ روند جا به جا شدن داده رو ببینید. )


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

            الان مثلا در عکس فوق بافر ارسالی رو آبی رنگ کردم و بافر دریافت رو زرد رنگ. و یک شیفت رجیستر میانی وجود داره که نارنجی رنگ شده.
            حالا در بعضی از پردازنده ها میتونه بخش آبی رنگ و زرد رنگ یکی باشه.
            موفق باشید.

            دیدگاه


              #7
              پاسخ : تفاوت spi و usart در دیتا فرم چیست

              نوشته اصلی توسط saati.sms نمایش پست ها
              خواهش میکنم.
              مثلا پروتکل spi به این صورت هست که داده به صورت چرخشی بین فرستنده و گیرنده جا به جا میشه. یعنی همزمان هر بار که کلاک توسط master ایجاد شده و به slave میرسد یک بیت از بافر فرستنده ( مثلا بیت MSB ) خارج شده ( به عبارت بهتر بافر فرستنده شیفت به چپ میخوره ) و وارد گیرنده میشه ( مثلا وارد LSB گیرنده میشه) و همزمان با این اتفاق بیت MSB از گیرنده خارج شده و در LSB فرستنده قرار میگیره و داده جا به جا میشه.
              توی گیف زیر بهتر دیده میشه ( البته سرعتش یه خورده زیاد هست میتونید سرعتش رو با پلیر ها بیارید پایین که قشنگ روند جا به جا شدن داده رو ببینید. )


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

              الان مثلا در عکس فوق بافر ارسالی رو آبی رنگ کردم و بافر دریافت رو زرد رنگ. و یک شیفت رجیستر میانی وجود داره که نارنجی رنگ شده.
              حالا در بعضی از پردازنده ها میتونه بخش آبی رنگ و زرد رنگ یکی باشه.
              موفق باشید.
              ممنونم از توضیحات خوبتون .
              میدونید فرض چه زمانی یا برای چه کاری میشه در آن واحد هم دیتا فرستاد هم دریافت کرد؟
              من اینطور فکر میکنم که شاید به طور اتفاقی دوتا میکرو در آن واحد برا هم داده بفرستن با این روش از بین نره - اینو برا این گذاشتن .
              به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
              (پيش به سوي هدف)

              دیدگاه


                #8
                پاسخ : تفاوت spi و usart در دیتا فرم چیست

                نوشته اصلی توسط hosseinam نمایش پست ها
                ممنونم از توضیحات خوبتون .
                میدونید فرض چه زمانی یا برای چه کاری میشه در آن واحد هم دیتا فرستاد هم دریافت کرد؟
                من اینطور فکر میکنم که شاید به طور اتفاقی دوتا میکرو در آن واحد برا هم داده بفرستن با این روش از بین نره - اینو برا این گذاشتن .
                اطلاعات ه قرار نیست از بین برن. چون وقتی یه چیزی رو ارسال میکنید قطعا داخل یه متغیری ذخیره شده. و جدای از این اگر دیتا هنگام ارسال از بین برود داده دریافتی هم دچار خطا شده و اصلا قابلیت استفاده را ندارد.
                خوب انواع ارتباط داریم :
                1 - simplex ( یک طرفه ) : فقط فرستنده ارسال می کند. و گیرنده دریافت میکند. به عبارت دیگر مسیری برای انتقال دیتا از گیرنده به فرستنده در نظر گرفته نشده است.
                2- half duplex ( نیمه دوطرف ) : هم فرستنده به گیرنده ارسال میکنه و هم گیرنده به فرستنده اما همزمان این اتفاق نمی افتد. یعنی در هر لحظه از زمان یا مسیر فرستنده به گیرنده متصل هست یا گیرنده به فرستنده.
                3- full duplex ( تمام دو طرفه ) : فرستنده و گیرنده به طور همزمان برای یکدیگر داده ارسال میکنن.
                خوب حالا هر کدوم از روش های فوق در سیستم های متفاوتی میتونن استفاده بشن.
                اگر برای تمام دو طرفه بخوام مثال بزنم ساده ترینش تلفن و موبایل هست که شما همزمان میتونید هم صحبت کنید و هم بشنوید. کاربرد های میکروکنترلی هم داره.
                من خودم خیلی تجربه ندارم که بخوام یه ارتباط تمام دوطرفه میکروکنترلی بگم. ولی خوب قطعا کاربرد داره.

                دیدگاه

                لطفا صبر کنید...
                X