سؤال

عقلي مقلي ، لذلك اعتقدت أنني سوف أنقل هذا إلى المجتمع.

عند إرسال حرف واحد إلى نظامي المضمن ، فإنه يعتقد باستمرار أنه يتلقى حرفين. يبدو أن الشخصية الأولى التي تم استلامها تقوم بتخطيط الشخصية المرسلة (بطريقة غير معروفة) ، والشخصية الثانية المستلمة هي دائمًا 0xFF.

هذا ما لاحظته:

Tx char (in hex)    Rx character (in hex), I left out the second byte (always ff)
31                    9D
32                    9B
33                    99
61                    3D
62                    3B
63                    39
64                    37
65                    35
41                    7D
42                    7B
43                    79

لقد تحقق من ساعاتي ويبدو أنها على ما يرام. الفرق الوحيد بين هذا الإصدار غير العاملة والإصدار السابق هو أنني أستخدم الآن رقاقة RS485.

لقد تتبعت الإشارة على طول الطريق حتى MCU وتبدو جيدة (أكدت قيمة بت على دبوس RX)

هل كانت مفيدة؟

المحلول

يبدو أن الشخصية الأولى التي تم استلامها تخطط للشخصية المرسلة (بطريقة غير ملائمة)

في كل حالة يتم تحويل بايت TX إلى اليسار 1 بت ثم مقلوب.

على سبيل المثال:

31 = 00110001 9D = 10011101

0x31 << 1 = 01100010

مكمل 01100010 هو 0x9D

راجعت اثنين من الآخرين ، ويبدو أن تكون هي نفسها بالنسبة لهم جميعًا. لا أعرف من أين يأتي البايت الثاني ، لكن قد يكون ذلك نتيجة لانعكاس الإشارة المحتمل الذي يحدث.

RS485 يستخدم الإشارة التفاضلية. تنبعث منه رائحة كما استخدمت الإخراج المقلوب من الشريحة وتوصيله بإدخال RS232.

لقد تتبعت الإشارة على طول الطريق حتى MCU وتبدو جيدة (أكدت قيمة بت على دبوس RX)

ما هي الإشارة التي استخدمتها كمرجع الأرض؟

نصائح أخرى

يختلف RS485 تمامًا عن RS232 على المستوى الكهربائي (التفاضلي مقابل المفرد المفرد و +/- 6V مقابل +15/-3V)-هل كلا جانبي رابط الاتصال الخاص بك باستخدام نفس البروتوكول؟

إذا كان RS485 هل حصلت على "الحالة الافتراضية" من مجموعة الحافلة بشكل صحيح؟ ماذا عن العدد الصحيح لبتات التوقف؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top