دليل مستخدم HOLTEK HT32 MCU UART
مقدمة
جهاز الاستقبال / المرسل غير المتزامن العالمي - UART هو واجهة إرسال تسلسلية مستخدمة على نطاق واسع توفر نقل بيانات مزدوج الاتجاه غير متزامن مرن. تستخدم شفرة التطبيق "Module_UART" المتوفرة في ملاحظة التطبيق هذه مقاطعات TX / RX مع مخازن حلقة برمجية لتنفيذ وظائف إرسال / استقبال UART بسيطة من خلال واجهات برمجة التطبيقات ، والتي يتم وصف الوظائف ذات الصلة أدناه. سيؤدي ذلك إلى تبسيط عملية نقل البيانات بالكامل والسماح للمستخدمين بفهم تطبيقات اتصالات UART وتنفيذها بسرعة.
- وظائف الإرسال / الاستلام: قراءة البايت ، كتابة البايت ، قراءة المخزن المؤقت ، كتابة المخزن المؤقت ، إلخ.
- وظائف الحالة: الحصول على طول المخزن المؤقت ، حالة الإرسال ، إلخ.
سيقدم هذا المستند أولاً بروتوكول الاتصال UART ، والذي سيساعد المستخدمين على فهم اتصال UART بشكل أفضل من المبدأ إلى التطبيق. يتبع ذلك تنزيل وإعداد الموارد المطلوبة لرمز التطبيق ، بما في ذلك مكتبة البرامج الثابتة ، وتنزيل كود التطبيق ، file وتكوين الدليل بالإضافة إلى مقدمة لأداة البرنامج الطرفية المستخدمة في ملاحظة التطبيق. في فصل الوصف الوظيفي ، سيتم تقديم بنية دليل رمز التطبيق وإعدادات المعلمات ووصف واجهة برمجة التطبيقات. سيتم وصف استخدام API باستخدام رمز التطبيق "Module_UART" وسيتم أيضًا سرد استهلاك موارد Flash / RAM المطلوب لواجهات برمجة التطبيقات. سيوجه فصل تعليمات الاستخدام المستخدم من خلال خطوات الإعداد البيئي والتجميع والاختبار للتأكد من أن كود التطبيق سيعمل بشكل صحيح. سيوفر بعد ذلك تعليمات تشرح كيفية دمج واجهات برمجة التطبيقات في مشاريع المستخدم وأخيراً توفر مرجعًا للتعديلات والمشكلات الشائعة التي قد تتم مواجهتها.
الاختصارات المستخدمة:
- UARTs: جهاز استقبال / مرسل عالمي غير متزامن
- واجهة برمجة التطبيقات: واجهة برمجة التطبيقات
- إل إس بي: بت الأقل دلالة
- مسب: البت الأكثر أهمية
- الكمبيوتر الشخصي: كمبيوتر شخصي
- SK: مجموعة المبتدئين ، لوحة تطوير HT32
- بيئة تطوير متكاملة: بيئة التطوير المتكاملة
بروتوكول الاتصالات UART
UART هو نوع اتصال تسلسلي للواجهة التي تنفذ تحويل البيانات المتوازية إلى التسلسلية في جهاز الإرسال الخاص بها ثم تتصل بشكل تسلسلي مع جهاز استقبال مماثل. يقوم جهاز الاستقبال بعد ذلك بتحويل بيانات تسلسلي إلى متوازي بعد استقبال البيانات. يوضح الشكل 1 مخططًا تخطيطيًا للاتصال التسلسلي يوضح كيفية نقل البيانات بترتيب أحادي. لذلك ، بالنسبة للاتصال ثنائي الاتجاه بين المرسل والمستقبل ، يلزم وجود سلكين فقط ، TX و RX ، لنقل البيانات بشكل تسلسلي بين بعضهما البعض. TX هو الدبوس الذي يقوم UART بنقل البيانات التسلسلية عليه ومتصل بدبوس RX لجهاز الاستقبال. لذلك تحتاج أجهزة الإرسال والاستقبال إلى توصيل دبابيس TX و RX لإجراء اتصال ثنائي الاتجاه UART ، كما هو موضح في شكل 2.
الشكل 1. مخطط الاتصال التسلسلي
الشكل 2. مخطط حلبة UART
أثناء الاتصال التسلسلي UART ، يكون نقل البيانات غير متزامن. هذا يعني أنه لا توجد ساعة أو إشارة مزامنة أخرى بين المرسل والمستقبل. هنا يتم استخدام معدل البث بالباود ، وهو سرعة إرسال / استقبال البيانات التسلسلية والتي يتم تعيينها من قبل كلا الجانبين قبل نقل البيانات. بالإضافة إلى ذلك ، تتم إضافة بتات خاصة مثل بتات البدء والإيقاف إلى بداية حزمة البيانات ونهايتها لتشكيل حزمة بيانات UART كاملة. يوضح الشكل 3 بنية حزمة بيانات UART بينما يوضح الشكل 4 حزمة بيانات UART 8 بت بدون بت تماثل.
الشكل 3. هيكل حزمة البيانات UART
الشكل 4. تنسيق حزم البيانات UART 8 بت
يتم تقديم كل جزء من حزمة بيانات UART بالترتيب أدناه.
- بداية بت: يشير هذا إلى بداية حزمة البيانات. عادةً ما يظل دبوس UART TX عند مستوى منطقي مرتفع قبل بدء الإرسال. إذا بدأ نقل البيانات ، فسيسحب جهاز الإرسال UART دبوس TX من الأعلى إلى الأدنى ، أي من 1 إلى 0 ، ثم يحتفظ به هناك لدورة ساعة واحدة. سيبدأ جهاز الاستقبال UART في قراءة البيانات عند اكتشاف انتقال عالي إلى منخفض على دبوس RX.
- بيانات: هذه هي البيانات الفعلية المنقولة ، بطول بيانات 7 أو 8 أو 9 بتات. يتم عادةً نقل البيانات باستخدام LSB أولاً.
- بت التكافؤ: يتم استخدام رقم المنطق "1" في البيانات لتحديد ما إذا كانت أي بيانات قد تغيرت أثناء الإرسال. بالنسبة إلى التكافؤ الزوجي ، يجب أن يكون العدد الإجمالي للمنطق "1" في البيانات عددًا زوجيًا ، وعلى العكس من ذلك ، يجب أن يكون العدد الإجمالي للمنطق "1" في البيانات عددًا فرديًا للتكافؤ الفردي.
- توقف بت: يشير هذا إلى نهاية حزمة البيانات ، حيث يقوم جهاز الإرسال UART بسحب طرف TX من الأقل إلى الأعلى ، أي من 0 إلى 1 ، ثم الاحتفاظ به هناك لفترة زمنية 1 أو 2 بت.
كما ذكرنا سابقًا ، نظرًا لعدم وجود إشارة ساعة في دارة UART ، يجب تحديد نفس سرعة إرسال / استقبال البيانات التسلسلية ، والتي تُعرف باسم معدل البث بالباود ، بين المرسل والمستقبل لتنفيذ إرسال خالٍ من الأخطاء. يتم تحديد معدل البث بالباود من خلال عدد البتات المنقولة في الثانية ، بوحدة بت في الثانية (بت في الثانية). بعض معدلات الباود القياسية والمستخدمة بشكل شائع هي 4800 بت في الثانية ، 9600 بت في الثانية ، 19200 بت في الثانية ، 115200 بت في الثانية ، إلخ. الوقت المقابل المطلوب لنقل بت بيانات واحد موضح أدناه.
الجدول 1. معدل الباود مقابل وقت الإرسال 1 بت
معدل الباود | 1-بت الإرسال وقت |
4800 بت في الثانية | 208.33 ميكروثانية |
9600 بت في الثانية | 104.16 ميكروثانية |
19200 بت في الثانية | 52.08 ميكروثانية |
115200 بت في الثانية | 8.68 ميكروثانية |
تنزيل الموارد والتحضير لها
سيقدم هذا الفصل رمز التطبيق وأداة البرنامج المستخدمة ، بالإضافة إلى كيفية تكوين الدليل و file طريق.
مكتبة البرامج الثابتة
أولاً ، تأكد من تنزيل مكتبة البرامج الثابتة Holtek HT32 قبل استخدام رمز التطبيق. رابط التحميل مبين أدناه. يوجد هنا خياران ، HT32_M0p_Vyyyymmdd.zip لسلسلة HT32F5xxxx و HT32_M3_Vyyyymmdd.zip لسلسلة HT32F1xxxx. قم بتنزيل وفك ضغط ملف file.
الرمز البريدي file يحتوي على العديد من المجلدات التي يمكن تصنيفها كمستند ، ومكتبة البرامج الثابتة ، والأدوات وعناصر أخرى ، ويظهر مسار موضعها في الشكل 5. ملف مضغوط لمكتبة البرامج الثابتة HT32 file مع file يقع اسم HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip ضمن مجلد Firmware_Library.
الشكل 5. محتويات HT32_M0p_Vyyyymmdd.zip
كود التطبيق
قم بتنزيل كود التطبيق من الرابط التالي. يتم حزم كود التطبيق في ملف مضغوط file مع file اسم HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. يرى الشكل 6 من اجل file اصطلاحات الاسم.
الشكل 6. كود التطبيق File مقدمة الاسم
رابط التحميل: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File وتكوين الدليل
نظرًا لأن كود التطبيق لا يحتوي على مكتبة البرامج الثابتة HT32 files ، رمز التطبيق ومكتبة البرامج الثابتة غير مضغوطين fileيجب وضع s في المسار الصحيح قبل بدء التجميع. رمز التطبيق البريدي file يحتوي عادةً على مجلد واحد أو أكثر ، مثل التطبيق والمكتبة ، كما هو موضح في الشكل 7. ضع مجلد التطبيق ضمن الدليل الجذر لمكتبة البرامج الثابتة HT32 لإكمال file تكوين المسار ، كما هو موضح في الشكل 8. بدلاً من ذلك ، قم بفك ضغط رمز التطبيق ومكتبة البرامج الثابتة HT32 في نفس الوقت في نفس المسار لتحقيق نفس نتائج التكوين.
الشكل 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip المحتويات
الشكل 8. مسار تخفيف الضغط
برنامج المحطة الطرفية
يمكن لرمز التطبيق نقل الرسائل عبر منفذ COM لتنفيذ اختيار الوظيفة أو عرض الحالة. يتطلب ذلك تثبيت البرنامج الطرفي مسبقًا من جانب المضيف. يمكن للمستخدمين اختيار برنامج اتصال مناسب ، أو استخدام برامج مرخصة مجانية مثل Tera Term. في كود التطبيق ، تم تكوين قناة UART بطول كلمة 8 بت ، بدون تماثل ، 1 بت توقف ومعدل باود 115200 بت في الثانية.
الوصف الوظيفي
سيوفر هذا الفصل وصفًا وظيفيًا لكود التطبيق ، بما في ذلك معلومات حول بنية الدليل ، وبنية API ، ووصف الإعداد ، وما إلى ذلك
بنية الدليل
كود التطبيق file يحتوي على مجلد التطبيق. الطبقة التالية هي مجلد “Module_UART” الذي يحتوي على برنامجي تطبيق ، “UART_Module_Example "و" UART_Bridge ". ذات الصلة files مدرجة وموصوفة أدناه.
الجدول 2. بنية دليل كود التطبيق
مجلد / File اسم | وصف |
\\ application \ Module_UART \ UART_Module_Example*1 | |
_CreateProject.bat | نصوص مجمعة لإنشاء المشروع files |
_ProjectSource.ini | التهيئة file لإضافة شفرة المصدر إلى المشاريع |
ht32_board_config.h | يثبت file المتعلقة بتخصيص I / O المحيطي لـ IC |
ht32fxxxxxx_01_it.c | برنامج خدمة المقاطعة file |
ج الرئيسية | الكود المصدري للبرنامج الرئيسي |
\\ application \ Module_UART \ UART_Bridge*2 | |
_CreateProject.bat | نصوص مجمعة لإنشاء المشروع files |
_ProjectSource.ini | التهيئة file لإضافة شفرة المصدر إلى المشاريع |
ht32_board_config.h | يثبت file المتعلقة بتخصيص I / O المحيطي لـ IC |
ht32fxxxxxx_01_it.c | برنامج خدمة المقاطعة file |
ج الرئيسية | كود المصدر للبرنامج الرئيسي |
uart_bridge.h uart_bridge.c | رأس جسر UART file وشفرة المصدر file |
\\ المرافق \ البرامج الوسيطة | |
uart_module.h*3 uart_module.c*3 | رأس API file وشفرة المصدر file |
\\ المرافق \ المشتركة | |
Ringbuffer.h Ring_buffer.c | رأس حلقة البرنامج العازلة file وشفرة المصدر file |
ملحوظة:
- في “UART_Module_Example "، يتم تنفيذ عمليات القراءة والكتابة الخاصة بواجهة برمجة التطبيقات بطريقة الاسترجاع ، والرجوع إلى" مثال استخدام واجهة برمجة التطبيقاتampلمزيد من التفاصيل.
- في كود التطبيق "UART_Bridge" ، يتم تنشيط قناتين UART ، UART CH0 و UART CH1 ، ويتم تنفيذ بروتوكول الاتصال المخصص من خلال هياكل COMMAND بين جهازي UART. لمزيد من المعلومات ، راجع "استخدام واجهة برمجة التطبيقات (API) على سبيل المثالampقسم ليه.
- يحتاج رمز التطبيق إلى استخدام uart_module.c / h files التي لها متطلبات إصدار مكتبة البرامج الثابتة. قد يتغير المتطلب من وقت لآخر وفقًا للتحديث. لتأكيد متطلبات إصدار مكتبة البرامج الثابتة الحالية ، ارجع إلى محتوى فحص التبعية بالبحث عن الكلمة الأساسية "فحص التبعية" في main.c file. إذا كان إصدار مكتبة البرامج الثابتة لا يفي بالمتطلبات ، فقم بتنزيل أحدث إصدار من الرابط الموجود في قسم "مكتبة البرامج الثابتة".
هندسة API
تحتوي كل واجهة برمجة تطبيقات على معلمة مهمة CH ، وهي قناة UART. هذا يحدد قناة UART التي يجب التحكم فيها. حاليًا يتم دعم ما يصل إلى أربع قنوات UART وبالتالي يتم تحديد أربعة رموز ثابتة على النحو التالي. يتم استخدام هذه المعلمة CH التي توفر لواجهات برمجة التطبيقات أساس التحكم.
- UARTM_CH0: معلمة الإدخال - التحكم أو تكوين UART CH0
- UARTM_CH1: معلمة الإدخال - التحكم أو تكوين UART CH1
- UARTM_CH2: معلمة الإدخال - التحكم أو تكوين UART CH2
- UARTM_CH3: معلمة الإدخال - التحكم أو تكوين UART CH3
لن تضيع مساحة الذاكرة إذا تم استخدام قناة UART واحدة فقط. وذلك لأنه يمكن تعيين عدد قنوات UART المدعومة وسيتم إزالة رمز قناة UART غير المستخدم بواسطة المعالج المسبق لزيادة مساحة الذاكرة المتاحة. تظهر بنية API بتنسيق الشكل 9.
الشكل 9. مخطط كتلة هندسة API
تتكون كل واجهة برمجة تطبيقات من أربع مجموعات من الإعدادات أو عناصر التحكم المتعلقة بقناة UART بحيث يحتاج المستخدمون فقط إلى إدخال معلمة CH المطلوبة. لتكوين واجهة برمجة التطبيقات ذات الصلة ، يلزم فقط وجود جدول معلمات تكوين أساسي إضافي لـ UART مع نموذج الهيكل ، USART_InitTypeDef. ستقوم API بتنفيذ التكوين الأساسي UART وفقًا لمحتويات المعلمة في الجدول. راجع قسم "وصف واجهة برمجة التطبيقات" للحصول على جدول هيكل التكوين الأساسي لـ UART.
uart_module.c / .h fileتحتوي s فقط على المقاطعة (CHx_IRQ) وجدول الحالة (حالة CHx) لكل قناة UART بينما يتم توفير جميع الإعدادات المطلوبة لاتصال UART بواسطة ht32_board_config.h. المعلمات ذات الصلة بالأجهزة في ht32_board_config.h file موضحة في الجدول أدناه. يتم توفير مزيد من التفاصيل في قسم "وصف الإعداد".
تتضمن المعلمات ذات الصلة بالأجهزة في ht32_board_config.h إعدادات الإدخال / الإخراج وإعدادات منفذ UART الفعلية ، على النحو التالي.
الجدول 3. تعريف الرموز في ht32_board_config.h
رمز | وصف |
HTCFG_UARTM_CH0 | اسم منفذ UART الفعلي ؛ السابقample: UART0 ، UART1 ... |
HTCFG_UARTM0_TX_GPIO_PORT | يحدد اسم منفذ TX لـ CH0 ؛ السابقample: أ ، ب ، ج ... |
HTCFG_UARTM0_TX_GPIO_PIN | يحدد رقم التعريف الشخصي لـ TX لـ CH0 ؛ السابقampجنيه: 0 ~ 15 |
HTCFG_UARTM0_RX_GPIO_PORT | يحدد اسم منفذ RX لـ CH0 ؛ السابقample: أ ، ب ، ج ... |
HTCFG_UARTM0_RX_GPIO_PIN | يحدد رقم التعريف الشخصي لـ TX لـ CH0 ؛ السابقampجنيه: 0 ~ 15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | يحدد حجم مخزن TX المؤقت لـ CH0 ؛ السابقampجنيه: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | يحدد حجم المخزن المؤقت RX لـ CH0 ؛ السابقampجنيه: 128 |
لتعديل تكوين قناة UART AFIO ، راجع ورقة بيانات الجهاز ذات الصلة. تسري حاليًا تعريفات الإدخال / الإخراج لـ UART CH0 فقط حيث تم تكوين UART CH0 فقط في ht32_board_config.h. لإضافة UART CH1 ~ 3 ، يجب إكمال تعريفات الإدخال / الإخراج الخاصة بهم بالرجوع إلى تعريف UART CH0 أو الرجوع إلى قسم "إعداد التعديل والأسئلة الشائعة".
هناك ثلاث ميزات رئيسية لبنية API:
- يتم دعم ما يصل إلى أربع قنوات UART. معلمات الإدخال الخاصة بهم هي UARTM_CH0 و UARTM_CH1 و UARTM_CH2 و UARTM_CH3.
- يمكن ضبط عدد قنوات UART ولن تقلل القنوات غير المستخدمة من مساحة الذاكرة المتاحة.
- يتم فصل جميع إعدادات UART وتعريفات الإدخال / الإخراج تمامًا عن واجهات برمجة التطبيقات. هذا يزيد من راحة الإدارة في تحديد القيم ويقلل من احتمال وجود إعدادات غير صحيحة أو مفقودة.
وصف الإعداد
سيقدم هذا القسم إعدادات المعلمة في ht32_board_config.h و uart_module.h files.
- ht32_board_config.h: هذا file يستخدم لتعريفات الدبوس والإعدادات ذات الصلة بلوحة التطوير ، والتي تشمل قناة UART IP (UART0 ، UART1 ، USART0 ...) التي تستخدمها مجموعة المبتدئين (SK) ، ومواقع TX / RX pin المقابلة وحجم المخزن المؤقت TX / RX. يوضح الشكل 10 محتويات الإعدادات الخاصة بـ HT32F52352 Starter Kit. اعتمادًا على التكامل الوظيفي للتطوير ، يمكن للمستخدمين الرجوع إلى قسم "تعيين الدبوس" في ورقة البيانات الخاصة بالجهاز المستخدم لتنفيذ تعريفات الدبوس. سيتم وصف المزيد من التفاصيل حول إعداد التعديل في قسم "إعداد التعديل والأسئلة الشائعة".
الشكل 10. إعدادات ht32_board_config.h (HT32F52352)
- uart_module.h: هذا هو رأس API file يستخدم بواسطة كود التطبيق ، والذي يتضمن الإعدادات الافتراضية ذات الصلة ، وتعريفات الوظائف ، وما إلى ذلك. كما هو موضح في الشكل 11 ، يمكن الكتابة فوق محتويات الإعداد الافتراضي بواسطة التكوينات الخارجية ، مثل الإعدادات الموجودة في ht32_board_config.h file.
الشكل 11. الإعدادات الافتراضية في uart_module.h
وصف API
- وصف نوع بيانات رمز التطبيق.
- USART_InitTypeDef
هذا هو هيكل التكوين الأساسي لـ UART والذي يتكون من تكوينات BaudRate و WordLength و StopBits و Parity و Mode ، كما هو موضح أدناه.عامل اسم يكتب وصف USART_BaudRate تحت 32 سنة معدل باود الاتصالات UART USART_WordLength تحت 16 سنة طول كلمة اتصال UART: 7 أو 8 أو 9 بت USART_StopBits تحت 16 سنة طول بت توقف اتصال UART: 1 أو 2 بت USART_ النقاء تحت 16 سنة تكافؤ اتصالات UART: زوجي أو فردي أو علامة أو مسافة أو بدون تكافؤ USART_Mode تحت 16 سنة وضع الاتصال UART ؛ تدعم واجهات برمجة التطبيقات الوضع العادي فقط
- USART_InitTypeDef
- قبل استخدام وظائف API ، أكمل التكوين الأساسي UART في البرنامج الرئيسي. يتم عرض التكوين الأساسي UART لكود التطبيق هذا في الشكل 12. هنا معدل البث بالباود هو 115200 بت في الثانية ، وطول الكلمة 8 بت ، وطول بت الإيقاف 1 بت ، ولا يوجد تكافؤ.
الشكل 12. التكوين الأساسي UART
- يوضح الشكل 13 وظائف API المعلنة في uart_module.h file. توضح الجداول التالية الوظيفة ومعلمات الإدخال واستخدام وظائف API.
الشكل 13. تصريحات وظيفة API في uart_module.h
اسم | UARTM_Init باطل (u32 CH ، USART_InitTypeDef * pUART_Init ، u32 uRxTimeOutValue) | |
وظيفة | تهيئة وحدة UART | |
مدخل | CH | قناة UART |
pUART_Init | مؤشر هيكل التكوين الأساسي UART | |
uRxTimeOutValue | قيمة مهلة UART RX FIFO. عندما يتلقى RX FIFO بيانات جديدة ، سيتم إعادة تعيين العداد وإعادة تشغيله. بمجرد أن يصل العداد إلى قيمة المهلة المحددة مسبقًا وتم تمكين مقاطعة المهلة المقابلة ، سيتم إنشاء مقاطعة انتهاء المهلة. | |
الاستخدام | UARTM_Init (UARTM_CH0، & USART_InitStructure، 40)؛ // تنفيذ التكوين الأساسي لـ UART // راجع الشكل 12 لتكوين USART_InitStructure |
اسم | u32 UARTM_WriteByte (u32 CH ، u8 uData) | |
وظيفة | عملية كتابة وحدة UART (TX) | |
مدخل | CH | قناة UART |
uData | البيانات المراد كتابتها | |
الناتج | نجاح | ناجح |
خطأ | فشل | |
الاستخدام | UARTM_WriteByte (UARTM_CH0، "A") ، // يكتب UART 1 بايت - "A" |
اسم | u32 UARTM_Write (u32 CH ، u8 * pBuffer ، u32 uLength) | |
وظيفة | عملية كتابة وحدة UART (TX) | |
مدخل | CH | قناة UART |
منتفخ | مؤشر العازلة | |
الطول | طول البيانات المراد كتابتها | |
الناتج | نجاح | ناجح |
خطأ | فشل | |
الاستخدام | u8 Test [] = "هذا اختبار! \ r \ n"؛ UARTM_Write (UARTM_CH0 ، اختبار ، sizeof (اختبار] -1) ؛ // يكتب UART بيانات pBuffer |
اسم | u32 UARTM_ReadByte (u32 CH ، u8 * pData) | |
وظيفة | وحدة UART قراءة بايت العملية (RX) | |
مدخل | CH | قناة UART |
pData | العنوان لوضع البيانات المقروءة | |
الناتج | نجاح | ناجح |
خطأ | فشل (لا توجد بيانات) | |
الاستخدام | u8 TempData ؛ إذا كان (UARTM_ReadByte (UARTM_CH0، & TempData) == نجاح) {UARTM_WriteByte (UARTM_CH0، TempData)؛} // إذا قام UARTM_ReadByte () بإرجاع SUCCESS فإن UART يكتب بايت البيانات هذا |
اسم | u32 UARTM_Read (u32 CH ، u8 * pBuffer ، u32 uLength) | |
وظيفة | عملية قراءة وحدة UART (RX) | |
مدخل | CH | قناة UART |
منتفخ | مؤشر العازلة | |
الطول | طول البيانات المراد قراءتها | |
الناتج | قراءة العد | تمت قراءة طول البيانات |
الاستخدام | u8 Test2 [10] ؛ u32 لين Len = UARTM_Read (UARTM_CH0، Test2، 5)؛ if (Len> 0) {UARTM_Write (UARTM_CH0، Test2، Len)؛} // UARTM_Read () يقرأ 5 بايت من البيانات ويخزن البيانات في Test2 ، ويعين عدد بايتات القراءة إلى Len // اكتب البيانات التي تم الحصول عليها من Test2 |
اسم | تحت 32 سنة UARTM_GetReadBufferLength (u32 CH) | |
وظيفة | الحصول على طول المخزن المؤقت للقراءة (RX) | |
مدخل | CH | قناة UART |
الناتج | الطول | قراءة طول المخزن المؤقت |
الاستخدام | UARTM_Init (UARTM_CH0، & USART_InitStructure، 40) ؛ // تهيئة وحدة UART while (UARTM_GetReadBufferLength (UARTM_CH0) <5) ؛ // انتظر حتى يتلقى UARTM_ReadBuffer 5 بايت من البيانات |
اسم | تحت 32 سنة UARTM_GetWriteBufferLength (u32 CH) | |
وظيفة | الحصول على طول المخزن المؤقت للكتابة (TX) | |
مدخل | CH | قناة UART |
الناتج | الطول | اكتب طول المخزن المؤقت |
اسم | u8 UARTM_IsTxFinished (u32 CH) | |
وظيفة | الحصول على حالة الإرسال | |
مدخل | CH | قناة UART |
الناتج | حقيقي | حالة الإرسال: انتهى |
خطأ شنيع | حالة الإرسال: لم تنته | |
الاستخدام | UARTM_WriteByte (UARTM_CH0، 'O') ، #if 1 // “uart_module.c” SVN> = 525 مطلوب بينما (UARTM_IsTxFinished (UARTM_CH0) == FALSE) #elsewhile (1) #endif // يمكن استخدام واجهة برمجة التطبيقات هذه للتحقق من حالة الإرسال ، كما هو موضح أعلاه ؛ انتظر حتى تنتهي واجهة برمجة تطبيقات UARTM_WriteByte () ، على سبيل المثال ، حالة الإرسال هي TRUE ، ثم تابع الإجراءات اللاحقة. // تمت إضافة قيد لأن هذه الوظيفة لم تتم إضافتها حتى رقم إصدار SVN في uart_module.c هو 525. |
اسم | فارغ UARTM_DiscardReadBuffer (u32 CH) | |
وظيفة | تجاهل البيانات الموجودة في المخزن المؤقت للقراءة | |
مدخل | CH | قناة UART |
استخدام واجهة برمجة التطبيقات (API) على سبيل المثالampليه
سيوضح هذا القسم كتابة API وقراءته السابقينampعدد قليل من كود التطبيق "Module_UART" باستخدام عملية التهيئة و "UART_Module_Example "عملية رمز التطبيق. قبل استخدام واجهات برمجة التطبيقات ، يحتاج المستخدمون إلى تضمين رأس API file في التعليمات البرمجية المصدر للبرنامج الرئيسي file (# تضمين “middleware / uart_module.h”).
كما هو مبين في الشكل 14 ، عند الدخول في عملية التهيئة ، حدد أولاً بنية التكوين الأساسية UART. ثم قم بتكوين أعضاء هيكل التكوين الأساسي لـ UART بما في ذلك BaudRate و WordLength و StopBits و Parity و Mode. أخيرًا ، قم باستدعاء وظيفة تهيئة API ، والتي يشير إكمالها إلى نهاية عملية التهيئة. بعد ذلك ، يمكن للمستخدمين متابعة عمليات الكتابة والقراءة بناءً على التكوين الأساسي UART المحدد مسبقًا.
الشكل 14. مخطط انسيابي التهيئة
"UART_Module_Exampيوضح كود تطبيق le ”أن API قراءة وكتابة عمليات بطريقة الاسترجاع. مخطط انسيابي لهذا موضح في الشكل 15. تتضمن وظائف API المستخدمة UARTM_WriteByte () و UARTM_Write () و UARTM_ReadByte () و UARTM_Read () و UARTM_GetReadBufferLength (). يتم توفير وصفهم في قسم "وصف API".
الشكل 15. مخطط انسيابي للكتابة والقراءة Exampليه
يوجد رمز تطبيق "UART_Bridge" آخر ضمن مجلد "Module_UART" المرتبط به file تم تقديم الوصف في قسم "بنية الدليل". ينشط كود التطبيق “UART_Bridge” قناتين من قنوات UART ، UART CH0 و UART CH1 ، ثم يخصص بروتوكول الاتصال بين جهازي UART من خلال هياكل COMMAND ، gCMD1 و gCMD2. يتم تعريف هذه في uart_bridge.c ، كما هو موضح أدناه. UARTBridge_CMD1 نوع التعريف gCMD1:
عامل اسم | يكتب | وصف |
uHeader | u8 | رأس الصفحة |
uCmd | u8 | يأمر |
uData [3] | u8 | بيانات |
UARTBridge_CMD2TypeDef gCMD2:
عامل اسم | يكتب | وصف |
uHeader | u8 | رأس الصفحة |
uCmdA | u8 | الأمر أ |
uCmdB | u8 | الأمر ب |
uData [3] | u8 | بيانات |
في كود التطبيق "UART_Bridge" ، استخدم gCMD1 لتلقي البيانات كحزمة أوامر ثم قم بتحليلها. ثم وفقًا لبروتوكول الاتصال المخصص ، قم بتعيين gCMD2 كحزمة استجابة وإرسالها. التالي هو السابقينample لحزمة الأوامر gCMD1) وحزمة الاستجابة (gCMD2). حزمة الأوامر (UARTBridge_CMD1TypeDef gCMD1):
بايت 0 | بايت 1 | بايت 2 ~ بايت 4 |
uHeader | uCmd | يو داتا [3] |
"أ" | "1" | "س ، ص ، ع" |
حزمة الاستجابة (UARTBridge_CMD2TypeDef gCMD2):
بايت 0 | بايت 1 | بايت 2 | بايت 3 ~ بايت 5 |
uHeader | uCmdA | uCmdB | يو داتا [3] |
"ب" | "أ" | "1" | "س ، ص ، ع" |
احتلال الموارد
أخذ HT32F52352 على سبيل المثالample ، الموارد التي تحتلها وحدة UART موضحة أدناه.
HT32F52352 | |
حجم ذاكرة القراءة فقط | 946 بايت |
حجم ذاكرة الوصول العشوائي (RAM) | 40*1 + 256*2 بايتات |
ملحوظة:
- المتغيرات العالمية بما في ذلك العلامات والحالة لقناة واحدة تشغل 40 بايت من ذاكرة الوصول العشوائي.
- هذا لشرط حيث يتم استخدام قناة واحدة وحجم المخزن المؤقت TX / RX هو 128/128 بايت. يمكن ضبط حجم المخزن المؤقت وفقًا لمتطلبات التطبيق.
الجدول 4. مهنة مورد رمز التطبيق
- بيئة التجميع: MDK-Arm V5.36 و ARMCC V5.06 التحديث 7 (الإصدار 960)
- خيار التحسين: المستوى 2 (-O2)
تعليمات الاستخدام
سيقدم هذا الفصل الإعداد البيئي لرمز التطبيق "Module_UART" ، بالإضافة إلى خطوات التجميع والاختبار.
التحضير البيئي
الأجهزة والبرامج المطلوبة لرمز التطبيق "Module_UART" مذكورة أدناه.
الجدول 5. الإعداد البيئي للأجهزة / البرامج
الأجهزة/البرمجيات | عدد | ملحوظة |
مجموعة البداية | 1 | تستخدم ملاحظة التطبيق هذه HT32F52352 Starter Kit كملف سابقample |
كابل يو اس بي | 1 | Micro USB ، متصل بجهاز الكمبيوتر |
كود التطبيق | — | مسار التنزيل ، file ويتم تقديم تكوين الدليل في قسم "تنزيل الموارد وإعدادها". المسار: "\\ application \ Module_UART \ UART_Module_Exampلو " |
مصطلح تيرا | — | راجع قسم "البرامج الطرفية" |
كايل IDE | — | كايل uVision V5.xx |
أولاً ، استخدم HT32F52352 Starter Kit مع وظيفة Virtual COM Port (VCP) الخاصة بـ e-Link32 Lite لمقدمة تطبيق UART. يتطلب هذا الإعداد البيئي التالي ليتم تنفيذه:
- هناك نوعان من واجهات USB على اللوحة. استخدم كبل USB لتوصيل الكمبيوتر وواجهة eLink32 Lite على اللوحة كما هو موضح في الشكل 16- (أ).
- نظرًا لأن كود التطبيق يحتاج إلى استخدام وظيفة e-Link32 Lite Virtual COM Port (VCP) ، تأكد من أنه تم اختصار PAx * 2 و DAP_Tx لـ UART Jumper-J2 * 1 باستخدام وصلة مرور. يشار إلى موقع J2 بالشكل 16- (ب).
ملحوظة
- يحتوي J2 على Starter Kit على خيارين ، PAx و DAP_Tx مختصرة أو PAx و RS232_Tx مختصرة. راجع دليل مستخدم Starter Kit للحصول على وظائف الإعداد التفصيلية.
- يختلف موقع دبوس MCU UART RX في مجموعات Starter Kits المختلفة. هذا على سبيل المثالampيستخدم le PAx للإشارة إلى دبوس RX.
الشكل 16. مخطط كتلة HT32 Starter Kit
استخدم الآن لوحة المستخدم المستهدفة جنبًا إلى جنب مع وظيفة Virtual COM Port (VCP) الخاصة بـ e-Link32 Pro لمقدمة تطبيق UART. يتطلب هذا الإعداد البيئي التالي ليتم تنفيذه:
- يتم توصيل جانب واحد من e-Link32 Pro بجهاز كمبيوتر باستخدام كبل USB صغير والجانب الآخر متصل بلوحة هدف المستخدم من خلال الكابل الرمادي 10 بت. يتم تنفيذ الاتصال بين واجهات SWD للكابل واللوحة المستهدفة باستخدام خطوط Dupont ، كما هو موضح في الشكل 17- (أ).
- دبابيس الاتصال التسلسلي لـ e-Link32 Pro هي Pin # 7 VCOM_RXD و Pin # 8- VCOM_TXD. يجب توصيلها بدبابيس TX و RX للوحة هدف المستخدم ، كما هو موضح في الشكل 17- (ب).
الشكل 17. e-Link32 Pro + مخطط كتلة اللوحة المستهدفة للمستخدم
التجميع والاختبار
سيأخذ هذا القسم "application \ Module_UART \ UART_Module_Example "كسابقample لتقديم عمليات التجميع والاختبار. قبل ذلك ، تأكد من تنفيذ جميع الاستعدادات الموضحة في القسم السابق وأنه تم تنزيل برنامج Tera Term Terminal.
يتم تلخيص خطوات العملية التفصيلية أدناه.
الخطوة 1. اختبار التشغيل
قم بإعداد بيئة الأجهزة كما هو موضح في القسم السابق. بعد التشغيل ، سيُضيء مؤشر الطاقة D9 الموجود في الجزء السفلي الأيسر من مجموعة المبتدئين. سيُضيء مؤشر D1 USB LED الموجود في e-Link32 Lite أعلى اليمين بعد اكتمال تعداد USB. إذا لم يضيء D1 بعد فترة طويلة من الزمن ، فتأكد مما إذا كان كبل USB قادرًا على الاتصال. إذا لم يكن كذلك ، فقم بإزالته وإعادة إدخاله مرة أخرى.
الخطوة 2. إنشاء مشروع
افتح التطبيق \ Module_UART \ UART_Module_Example ، انقر فوق _CreateProject.bat file لإنشاء مشروع ، كما هو موضح في الشكل 18. نظرًا لأن مذكرة التطبيق هذه تستخدم HT32F52352 Starter Kit ، افتح مشروع Keil IDE "Project_52352.uvprojx" الموجود ضمن مجلد MDK_ARMv5.
الشكل 18. تنفيذ _CreateProject.bat لإنشاء المشروع
الخطوة 3. الترجمة والبرمجة
بعد فتح المشروع ، انقر أولاً على "إنشاء" (أو استخدم الاختصار "F7") ، ثم انقر فوق "تنزيل" (أو استخدم الاختصار "F8"). بعد ذلك ، سيتم عرض نتائج الإنشاء والتنزيل في نافذة إخراج البناء. انظر الشكل 19.
الشكل 19. بناء وتحميل النتائج
الخطوة 4. افتح برنامج Tera Term وقم بتكوين المنفذ التسلسلي
افتح برنامج Tera Term ومنفذ COM. انتبه إلى ما إذا كان رقم منفذ COM الذي تم إنشاؤه بواسطة Starter Kit صحيحًا أم لا. ثم انقر فوق "إعداد >> المنفذ التسلسلي" للدخول إلى واجهة التكوين. يتم وصف تكوين واجهة UART لكود التطبيق "Module_UART" في قسم "البرامج الطرفية". تظهر نتيجة الإعداد في الشكل 20.
الشكل 20. نتيجة إعداد المنفذ التسلسلي لمصطلح Tera
الخطوة 5. إعادة ضبط النظام والاختبار
اضغط على مفتاح إعادة تعيين SK - إعادة تعيين B1. بعد ذلك ، "ABCT هذا اختبار!" ستكون الرسالة
يتم إرسالها عبر API وسيتم عرضها في نافذة Tera Term ، كما هو موضح في الشكل 21. فيما يتعلق بوظيفة الاستلام ، عند إدخال البيانات في نافذة Tera Term ، سيتم استخدام واجهة برمجة التطبيقات ذات الصلة لتحديد طول المخزن المؤقت للاستلام. عندما تصل البيانات التي يتلقاها الكمبيوتر إلى 5 بايت ، سيتم إرسال 5 بايت من البيانات المستلمة بالتتابع. كما هو مبين في الشكل 22 ، البيانات المدخلة بالتسلسل هي "1 ، 2 ، 3 ، 4 ، 5" ، والتي يتم استلامها وتحديدها من خلال واجهة برمجة التطبيقات. بعد ذلك ، ستتم طباعة البيانات "1 ، 2 ، 3 ، 4 ، 5" بعد المدخلات الخمسة.
الشكل 21. الاختبار الوظيفي لكود التطبيق "Module_UART" - الإرسال
الشكل 22. الاختبار الوظيفي لرمز التطبيق "Module_UART" - استلام
تعليمات الزرع
سيقدم هذا القسم كيفية دمج واجهات برمجة التطبيقات في مشاريع المستخدم.
الخطوة 1. أضف uart_module.c file في المشروع. انقر بزر الماوس الأيمن فوق مجلد المستخدم. حدد "إضافة الموجودة Files لمجموعة "المستخدم" ... "، ثم حدد uart_module.c file وانقر فوق "إضافة" ، كما هو موضح في الشكل 23. ارجع إلى قسم "هيكل الدليل" للحصول على file وصف المسار.
الشكل 23. أضف uart_module.c File للمشروع
الخطوة 2. أضف ring_buffer.c file في المشروع. انقر بزر الماوس الأيمن فوق مجلد المستخدم. حدد "إضافة الموجودة Files لمجموعة "المستخدم" ... "، ثم حدد ring_buffer.c file وانقر فوق "إضافة" ، كما هو موضح في الشكل 24. \ ارجع إلى قسم "بنية الدليل" للحصول على file وصف المسار.
الشكل 24. إضافة ring_buffer.c File للمشروع
الخطوة 3. قم بتضمين رأس API file في بداية main.c ، كما هو موضح في الشكل 25. (Ext: #include “middleware / uart_module.h”)
الشكل 25. تضمين رأس API File إلى main.c
الخطوة 4. قم بتنفيذ الإعدادات المطلوبة لاتصال UART باستخدام ht32_board_config.h file. يتم تقديم هذا بالتفصيل في قسمي "وصف الإعداد" و "إعداد التعديل والأسئلة الشائعة".
ضبط التعديل والأسئلة الشائعة
سيقدم هذا القسم كيفية تعديل إعدادات UART وشرح بعض الأسئلة الشائعة التي تمت مواجهتها أثناء الاستخدام.
تغيير UART Pin Assignment
- بالإشارة إلى فصل HT32F52352 في ورقة البيانات "تعيين الدبوس" ، ابحث عن جدول تعيين الوظائف البديلة الذي يسرد وظائف AFIO لنوع الجهاز. بالنسبة إلى المسامير ذات الصلة بـ UART ، ارجع إلى عمود "AF6 USART / UART" ، كما هو موضح في الشكل 26.
الشكل 26. HT32F52352 جدول تعيين الوظائف البديلة
- ستوجه هذه الخطوة المستخدمين لتحديد موقع دبابيس UART المقابلة باستخدام الجدول أعلاه. HT32F52352 exampيستخدم le USART1 كقناة افتراضية. هنا ، دبابيس TX و RX هي USR1_TX و USR1_RX وتقعان في PA4 و PA5 على التوالي. يوضح الشكل 27 مراسلات الدبوس بالإضافة إلى تعريفات الدبوس في "ht32_board_config.h". الحقول الفارغة "للحزمة" في جدول تخصيص رقم التعريف الشخصي تعني عدم وجود GPIOs ذات الصلة في هذه الحزمة. لتعديل دبابيس UART ، ابحث عن مواقع الدبوس الهدف وأعد تعريف المسامير باستخدام "ht32_board_config.h" file.
الشكل 27. دبوس المراسلات وتعديل الإعداد
أضف قناة UART
أخذ HT32F52352 HTCFG_UARTM_CH1 على سبيل المثالample ، هنا يتم وصف كيفية إضافة قناة UART جديدة.
قم بتعديل ht32_board_config.h file
بالإشارة إلى فصل HT32F52352 في ورقة البيانات "تعيين الدبوس" ، ابحث عن جدول تعيين الوظائف البديلة الذي يسرد وظائف AFIO لنوع الجهاز. نظرًا لاستخدام USART1 كـ HTCFG_UARTM_CH0 ، يمكن لـ HTCFG_UARTM_CH1 المضاف حديثًا اختيار USART0. هنا ، توجد دبابيس TX و RX في PA2 و PA3 على التوالي ، كما هو موضح في النصف العلوي من الشكل 28. يتم تنفيذ التعديلات المقابلة باستخدام أسطر الكود 120 ~ 126 في ht32_board_config.h ، كما هو موضح في المربع الأحمر المنقط في الشكل 28.
الشكل 28. أضف قناة UART
الأسئلة الشائعة
Q: في الخطوة 5 من قسم التجميع والاختبار ، يكون الاختبار الوظيفي للإرسال أمرًا طبيعيًا. هنا ، "ABCT هذا اختبار!" تم عرض الرسالة بنجاح ، ولكن بالنسبة لوظيفة الاستلام ، فلماذا لا يتم إرجاع قيم الإدخال الخمسة وعرضها؟
A: تحقق مما إذا كان قد تم تقصير دبابيس MCU UART RX و DAP_Tx في UART Jumper-J2 باستخدام وصلة مرور. نظرًا لأن كود التطبيق "Module_UART" يحتاج إلى استخدام منفذ COM الظاهري (VCP) الخاص بـ e-Link32 Lite ، يجب تطبيق إعداد الدائرة القصيرة على الدبابيس اليسرى من UART Jumper-J2 ، كما هو موضح في الشكل 29.
الشكل 29. إعداد UART Jumper-J2
س: بعد عند تنفيذ "Build" (أو الاختصار "F7") ، تظهر رسالة خطأ تشير إلى أن إصدار مكتبة البرامج الثابتة أقدم من الإصدار المطلوب؟ انظر الشكل 30.
A: يحتاج تنفيذ كود التطبيق "Module_UART" إلى تضمين uart_module.c / h files التي تتطلب إصدارًا معينًا من مكتبة البرامج الثابتة. عندما تظهر رسالة الخطأ هذه ، فهذا يعني أن مكتبة البرامج الثابتة المستخدمة حاليًا هي إصدار أقدم. لذلك من الضروري تنزيل أحدث إصدار من خلال الرابط الموجود في قسم "مكتبة البرامج الثابتة".
الشكل 30. رسالة خطأ إصدار مكتبة البرامج الثابتة
خاتمة
قدم هذا المستند مقدمة أساسية لمساعدة المستخدمين على فهم أفضل لكود التطبيق "Module_UART" وبروتوكول الاتصال UART. تبع ذلك تنزيل الموارد وإعدادها. قدم فصل الوصف الوظيفي ملف file هيكل الدليل ، وبنية API ، ووصف API واستخدام API على سبيل المثالampليه. أوضح فصل تعليمات الاستخدام الإعداد البيئي ، وتجميع واختبار كود التطبيق "Module_UART". كما قدمت تعليمات حول زرع الكود وإعداد التعديل بالإضافة إلى شرح بعض المشكلات الشائعة التي قد تتم مواجهتها. سيسمح كل هذا معًا للمستخدمين بفهم كيفية استخدام واجهات برمجة التطبيقات بسرعة وبالتالي تقليل مقدار الوقت للبدء.
المواد المرجعية
لمزيد من المعلومات ، راجع Holtek webالموقع: www.holtek.com
إصدارات وتعديل المعلومات
تاريخ | مؤلف | يطلق | معلومات التعديل |
2022.04.30 | 蔡 期 育 (تشي يو تساي) | رقم V1.00 | الاصدار الاول |
تنصل
جميع المعلومات والعلامات التجارية والشعارات والرسومات ومقاطع الفيديو والمقاطع الصوتية والروابط والعناصر الأخرى التي تظهر على هذا webالموقع ("المعلومات") للإشارة فقط ويخضع للتغيير في أي وقت دون إشعار مسبق ووفقًا لتقدير شركة Holtek Semiconductor Inc. والشركات المرتبطة بها (يشار إليها فيما يلي باسم "Holtek" ، "الشركة" ، "نحن" ، نحن أو "لدينا"). بينما يسعى Holtek لضمان دقة المعلومات المتعلقة بذلك webالموقع ، لا تقدم Holtek أي ضمان صريح أو ضمني لدقة المعلومات. لن تتحمل Holtek أي مسؤولية عن أي خطأ أو تسرب.
لن تكون Holtek مسؤولة عن أي أضرار (بما في ذلك على سبيل المثال لا الحصر ، فيروسات الكمبيوتر أو مشاكل النظام أو فقدان البيانات) من أي نوع تنشأ في استخدام أو فيما يتعلق باستخدام هذا webالموقع من قبل أي طرف. قد تكون هناك روابط في هذه المنطقة تسمح لك بزيارة webمواقع الشركات الأخرى.
هؤلاء webلا يتم التحكم في المواقع من قبل Holtek. لن تتحمل Holtek أي مسؤولية ولا ضمان على الإطلاق للمعلومات المعروضة في هذه المواقع. ارتباطات تشعبية للآخرين webالمواقع على مسؤوليتك الخاصة.
حدود المسؤولية
لا تتحمل شركة Holtek المحدودة بأي حال من الأحوال المسؤولية تجاه أي طرف آخر عن أي خسارة أو ضرر من أي نوع أو مهما كان سبب ذلك بشكل مباشر أو غير مباشر فيما يتعلق بوصولك إلى هذا أو استخدامه. webالموقع أو المحتوى الموجود فيه أو أي سلع أو مواد أو خدمات.
القانون الحاكم
إخلاء المسؤولية الوارد في webيخضع الموقع ويتم تفسيره وفقًا لقوانين جمهورية الصين. سيخضع المستخدمون للاختصاص القضائي غير الحصري لمحاكم جمهورية الصين.
تحديث إخلاء المسؤولية
تحتفظ Holtek بالحق في تحديث إخلاء المسؤولية في أي وقت مع أو بدون إشعار مسبق ، وتكون جميع التغييرات سارية فور نشرها على webموقع.
المستندات / الموارد
![]() |
ملاحظة تطبيق HOLTEK HT32 MCU UART [بي دي اف] دليل المستخدم HT32 MCU، UART Application Note، HT32 MCU UART، Application Note، HT32، MCU UART Application Note، HT32 MCU UART Application Note |