ارتباط سریال بین دو سیستم امبدد

سلام

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

حالا سوالم این هست که بهترین نوع ارتباط سریال بین این دو برد به چه صورت هست ؟
توی دستگاه هم موتور dc و المنت و پمپ و غیره هست و نسبتا نویز داریم.

باید از RS485 استفاده کنم یا UART کافی هست ؟
آیا در صورت استفاده از RS485 نیاز به CRC هست ؟
کلا CRC نیاز هست یا نه ؟

نحوه ارسال دستورات و پکت بندی دیتا باید به چه صورت باشه و به چی بستگی داره ؟
مثلا کنترلر میخواد دما رو ارسال کنه و در زمانی دیگه ERROR ها رو ، آیا بهتره که تمامی اطلاعات بر اساس عدد ارسال بشه یا متن هم میشه ؟
مثلا ارسال یک پیام به این صورت باشه :

ERROR:temp_over,99
INFO:stable_system,ok

یا همه چیز تبدیل به عدد بشه

//message_type,message,param_1
0,1,99
2,52,1

همون عدد ها به صورت متن ارسال بشه یا به صورت هگز

و …

من سوالم رو به صورت نسبتا کلی پرسیدم ، چون به نظرم توی هر پروژه ای که داخلش ارتباط سریال باشه این سوالات به وجود میاد و باید جوابی براش پیدا بشه
برای همین از دوستان ممنون میشم که به صورت کامل جواب بدند تا بشه از این موضوع به عنوان رفرنس استفاده کرد

سلام و احترام

تبادل اطلاعات با هر پروتکلی که مد نظر است، CRC و handshaking داشته باشد.
روش های زیر اولویت دارد :

  1. RS485, Modbus RTU or ASCII

  2. CAN-BUS

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

3 پسندیده

علیکم السلام

همانطوری که دوست خوبمون این نکته رو گفتن: نحوه برقراری ارتباط بیشتر به شرایط محیط بستگی داره
و سرعت مورد نظر پروژه

در این بین هزینه تمام شده هم مهمه

داخل ماشین ها بدلیل نویز بسیار بالایی که وجود داره از خانواده CAN استفاده میشه. (اگر با اسیلوسکوپ نویز رو بگیرین از اینکه چطور بخش ecu داره کار میکنه تعجب خواهید کرد)

چون تو مد دیفرانسیل اطلاعات رو میفرسته و… .
مزیت های can:
سرعت خوب. صنعتی بودن. نویز موتور و بقیه چیزا روش تاثیری نداره. از CRC استفاده میکنه و چیزای دیگه
عیبش:
باید میکروی شما از can پشتیبانی کنه. به غیر از اینکه میکرو باید از can پشتیبانی کنه به یک سخت افزار واست can هم نیاز دارید که یک ic کوچیک هست. دیتا برای ارسال و دریافت به ساختار خاص خودش نیاز داره

واحد uart:
مزیت:
خیلی ساده. ارزان. هست
و فکر میکنم با یک کابل شیلد دار مناسب و مرغوب نویز مد نظر شما روش تاثیر خاصی نداشته باشه. با crc هم میتونید بررسی کنید که آیا دیتا سالم رسیده یا ارسال شده اگر نشده دوباره عملیات تکرار بشه و … .

عیب:
در شرایط پر نویز صنعتی جوابگو نیست. (شرایط پر نویز شامل موتورdc و المان هایی مثل پمپ و … نمیشه)


نحوه ارسال هم که عددی باشه یا اسکی به خود شما بستگی داره.

4 پسندیده