HOLTEK HT32 MCU UART অ্যাপ্লিকেশন নোট ব্যবহারকারী ম্যানুয়াল
HOLTEK HT32 MCU UART অ্যাপ্লিকেশন নোট

ভূমিকা

ইউনিভার্সাল অ্যাসিঙ্ক্রোনাস রিসিভার/ট্রান্সমিটার - UART একটি বহুল ব্যবহৃত সিরিয়াল ট্রান্সমিশন ইন্টারফেস যা নমনীয় অ্যাসিঙ্ক্রোনাস ফুল-ডুপ্লেক্স ডেটা ট্রান্সমিশন প্রদান করে। এই অ্যাপ্লিকেশন নোটে দেওয়া "মডিউল_ইউআরটি" অ্যাপ্লিকেশন কোডটি এপিআই-এর মাধ্যমে সাধারণ UART ট্রান্সমিট/রিসিভ ফাংশনগুলি বাস্তবায়ন করতে সফ্টওয়্যার রিং বাফারগুলির সাথে TX/RX বাধাগুলি ব্যবহার করে, যার সম্পর্কিত ফাংশনগুলি নীচে বর্ণনা করা হয়েছে৷ এটি সম্পূর্ণ ডেটা ট্রান্সমিশন প্রক্রিয়াকে সহজ করবে এবং ব্যবহারকারীদের দ্রুত UART যোগাযোগ অ্যাপ্লিকেশনগুলি বুঝতে এবং প্রয়োগ করতে অনুমতি দেবে।

  • ট্রান্সমিট/রিসিভ ফাংশন: বাইট রিড, বাইট রাইটিং, বাফার রিড, বাফার রাইট ইত্যাদি।
  • স্থিতি ফাংশন: বাফার দৈর্ঘ্য, TX স্ট্যাটাস, ইত্যাদি প্রাপ্ত করুন।

এই নথিটি প্রথমে UART যোগাযোগ প্রোটোকল প্রবর্তন করবে, যা ব্যবহারকারীদের UART যোগাযোগকে নীতি থেকে প্রয়োগ পর্যন্ত আরও ভালভাবে বুঝতে সাহায্য করবে। এর পরে ফার্মওয়্যার লাইব্রেরি, অ্যাপ্লিকেশন কোড ডাউনলোড, সহ অ্যাপ্লিকেশন কোডের জন্য প্রয়োজনীয় সংস্থান ডাউনলোড এবং প্রস্তুত করা হয়। file এবং ডিরেক্টরি কনফিগারেশনের পাশাপাশি অ্যাপ্লিকেশন নোটে ব্যবহৃত টার্মিনাল সফ্টওয়্যার টুলের একটি ভূমিকা। কার্যকরী বিবরণ অধ্যায়ে, অ্যাপ্লিকেশন কোড ডিরেক্টরি কাঠামো, প্যারামিটার সেটিংস এবং API বিবরণ চালু করা হবে। API ব্যবহার "Module_UART" অ্যাপ্লিকেশন কোড ব্যবহার করে বর্ণনা করা হবে এবং API-এর জন্য প্রয়োজনীয় ফ্ল্যাশ/RAM সম্পদ খরচও তালিকাভুক্ত করা হবে। ব্যবহারের জন্য নির্দেশাবলী অধ্যায় ব্যবহারকারীকে পরিবেশগত প্রস্তুতি, সংকলন এবং পরীক্ষার ধাপগুলির মাধ্যমে নির্দেশিত করবে যাতে নিশ্চিত করা যায় যে অ্যাপ্লিকেশন কোডটি সঠিকভাবে কাজ করবে। তারপরে এটি ব্যবহারকারীর প্রকল্পগুলিতে API গুলিকে কীভাবে একীভূত করা যায় তা ব্যাখ্যা করে নির্দেশাবলী প্রদান করবে এবং পরিশেষে পরিবর্তন এবং সাধারণ সমস্যাগুলির জন্য একটি রেফারেন্স প্রদান করবে যা সম্মুখীন হতে পারে।

সংক্ষেপে ব্যবহৃত: 

  • UART: ইউনিভার্সাল অ্যাসিঙ্ক্রোনাস রিসিভার/ট্রান্সমিটার
  • API: অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস
  • LSB: সর্বনিম্ন উল্লেখযোগ্য বিট
  • MSB: সর্বাধিক উল্লেখযোগ্য বিট
  • পিসি: পার্সোনাল কম্পিউটার
  • এসকে: স্টার্টার কিট, HT32 উন্নয়ন বোর্ড
  • IDE: সমন্বিত উন্নয়ন পরিবেশ

UART কমিউনিকেশন প্রোটোকল

UART হল একটি সিরিয়াল কমিউনিকেশন টাইপ ইন্টারফেস যা এর ট্রান্সমিটারে সমান্তরাল-থেকে-সিরিয়াল ডেটা রূপান্তর প্রয়োগ করে এবং তারপর একই রকম রিসিভারের সাথে সিরিয়াল যোগাযোগ করে। তথ্য গ্রহণের পরে রিসিভার একটি সিরিয়াল থেকে সমান্তরাল ডেটা রূপান্তর সম্পাদন করে। চিত্র 1 সিরিয়াল কমিউনিকেশনের একটি পরিকল্পিত ডায়াগ্রাম দেখায় যা দেখায় কিভাবে ডেটা বিটওয়াইজ ক্রমে স্থানান্তরিত হয়। তাই ট্রান্সমিটার এবং রিসিভারের মধ্যে দ্বিমুখী যোগাযোগের জন্য, শুধুমাত্র দুটি তার, TX এবং RX, একে অপরের মধ্যে ধারাবাহিকভাবে ডেটা স্থানান্তর করতে হবে। TX হল সেই পিন যার উপর UART সিরিয়াল ডেটা প্রেরণ করে এবং রিসিভারের RX পিনের সাথে সংযুক্ত থাকে। তাই ট্রান্সমিটার এবং রিসিভার ডিভাইসগুলিকে তাদের TX এবং RX পিনগুলিকে ক্রস-সংযোগ করতে হবে UART দ্বিমুখী যোগাযোগ করতে, যেমনটি দেখানো হয়েছে চিত্র 2.

চিত্র 1. সিরিয়াল কমিউনিকেশন ডায়াগ্রাম
সিরিয়াল কমিউনিকেশন ডায়াগ্রাম

চিত্র 2. UART সার্কিট ডায়াগ্রাম
UART সার্কিট ডায়াগ্রাম

UART সিরিয়াল যোগাযোগের সময়, ডেটা ট্রান্সমিশন অ্যাসিঙ্ক্রোনাস হয়। এর মানে হল যে ট্রান্সমিটার এবং রিসিভারের মধ্যে কোন ঘড়ি বা অন্য সিঙ্ক্রোনাইজেশন সংকেত নেই। এখানে একটি বড রেট ব্যবহার করা হয়, যা সিরিয়াল ডেটা ট্রান্সমিটিং/প্রাপ্তির গতি এবং যা ডেটা স্থানান্তরের আগে উভয় পক্ষ দ্বারা সেট করা হয়। এছাড়াও, বিশেষ বিট যেমন স্টার্ট এবং স্টপ বিটগুলি ডাটা প্যাকেটের শুরুতে এবং শেষে যোগ করে একটি সম্পূর্ণ UART ডেটা প্যাকেট তৈরি করে। চিত্র 3 UART ডেটা প্যাকেট গঠন দেখায় যখন চিত্র 4 একটি প্যারিটি বিট ছাড়া একটি UART 8-বিট ডেটা প্যাকেট দেখায়।
চিত্র 3. UART ডেটা প্যাকেট কাঠামো
UART ডাটা প্যাকেট স্ট্রাকচার

চিত্র 4. UART 8-বিট ডেটা প্যাকেট বিন্যাস
ডাটা প্যাকেট ফরম্যাট
UART ডেটা প্যাকেটের প্রতিটি অংশ নিচের ক্রমে উপস্থাপন করা হয়েছে।

  • স্টার্ট বিট: এটি একটি ডেটা প্যাকেটের শুরু নির্দেশ করে। ট্রান্সমিশন শুরু হওয়ার আগে UART TX পিন সাধারণত একটি উচ্চ যুক্তির স্তরে থাকে। যদি ডেটা ট্রান্সমিশন শুরু হয়, তাহলে UART ট্রান্সমিটার TX পিনটিকে উঁচু থেকে নিচুতে টেনে নিয়ে যাবে, অর্থাৎ 1 থেকে 0 পর্যন্ত, এবং তারপর একটি ঘড়ি চক্রের জন্য সেখানে ধরে রাখবে। RX পিনে উচ্চ থেকে নিম্ন রূপান্তর সনাক্ত করা হলে UART রিসিভার ডেটা পড়া শুরু করবে।
  • তথ্য: এটি 7, 8 বা 9 বিটের ডেটা দৈর্ঘ্য সহ প্রকৃত ডেটা স্থানান্তরিত। ডেটা সাধারণত প্রথমে এলএসবি দিয়ে স্থানান্তর করা হয়।
  • সমতা বিট: ট্রান্সমিশনের সময় কোন ডেটা পরিবর্তিত হয়েছে কিনা তা নির্ধারণ করতে ডেটাতে লজিকের সংখ্যা "1" ব্যবহার করা হয়। জোড় সমতার জন্য, ডেটাতে মোট লজিক "1" একটি জোড় সংখ্যা হওয়া উচিত, বিপরীতভাবে, ডেটাতে মোট লজিকের সংখ্যা "1" বিজোড় সমতার জন্য একটি বিজোড় সংখ্যা হওয়া উচিত।
  • স্টপ বিট: এটি একটি ডেটা প্যাকেটের সমাপ্তি নির্দেশ করে, যেখানে UART ট্রান্সমিটার TX পিনটিকে নিম্ন থেকে উচ্চে, অর্থাৎ 0 থেকে 1 পর্যন্ত টেনে আনবে এবং তারপর এটিকে 1 বা 2-বিট সময়ের জন্য সেখানে ধরে রাখবে।

আগেই উল্লেখ করা হয়েছে, যেহেতু UART সার্কিটে কোনো ঘড়ির সংকেত নেই, তাই একই সিরিয়াল ডেটা ট্রান্সমিটিং/রিসিভিং স্পিড, যা বড রেট নামে পরিচিত, ত্রুটি-মুক্ত ট্রান্সমিশন বাস্তবায়নের জন্য ট্রান্সমিটার এবং রিসিভারের মধ্যে সংজ্ঞায়িত করা আবশ্যক। বড রেট প্রতি সেকেন্ডে স্থানান্তরিত বিটের সংখ্যা দ্বারা সংজ্ঞায়িত করা হয়, bps (বিট প্রতি সেকেন্ডে)। কিছু স্ট্যান্ডার্ড এবং সাধারণভাবে ব্যবহৃত বড রেট হল 4800bps, 9600bps, 19200bps, 115200bps, ইত্যাদি। একটি একক ডেটা বিট স্থানান্তর করার জন্য প্রয়োজনীয় সময় নীচে দেখানো হয়েছে।
সারণী 1. বড রেট বনাম 1-বিট ট্রান্সমিশন সময় 

বড রেট 1-বিট ট্রান্সমিশন সময়
4800bps 208.33µs
9600bps 104.16µs
19200bps 52.08µs
115200bps 8.68µs

সম্পদ ডাউনলোড এবং প্রস্তুতি

এই অধ্যায়ে অ্যাপ্লিকেশন কোড এবং ব্যবহৃত সফ্টওয়্যার টুল, সেইসাথে ডিরেক্টরি এবং কিভাবে কনফিগার করতে হবে পরিচয় করিয়ে দেবে file পথ

ফার্মওয়্যার লাইব্রেরি 

প্রথমে, নিশ্চিত করুন যে অ্যাপ্লিকেশন কোড ব্যবহার করার আগে Holtek HT32 ফার্মওয়্যার লাইব্রেরি ডাউনলোড করা হয়েছে। ডাউনলোড লিংক নিচে দেখানো হল। এখানে দুটি বিকল্প আছে, HT32F0xxxx সিরিজের জন্য HT32_M5p_Vyyyymmdd.zip এবং HT32F3xxxx সিরিজের জন্য HT32_M1_Vyyyymmdd.zip। ডাউনলোড করুন এবং পছন্দসই আনজিপ করুন file.

জিপ file ডকুমেন্ট, ফার্মওয়্যার লাইব্রেরি, টুলস এবং অন্যান্য আইটেম হিসাবে শ্রেণীবদ্ধ করা যেতে পারে এমন বেশ কয়েকটি ফোল্ডার রয়েছে, যার স্থান নির্ধারণের পথ চিত্র 5 এ দেখানো হয়েছে। HT32 ফার্মওয়্যার লাইব্রেরি জিপ file সঙ্গে a file HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip-এর নাম Firmware_Library ফোল্ডারের নিচে অবস্থিত।

চিত্র 5. HT32_M0p_Vyyyymmdd.zip বিষয়বস্তু
বিষয়বস্তু

অ্যাপ্লিকেশন কোড
নিম্নলিখিত লিঙ্ক থেকে অ্যাপ্লিকেশন কোড ডাউনলোড করুন. অ্যাপ্লিকেশন কোড একটি জিপ মধ্যে প্যাকেজ করা হয় file সঙ্গে a 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-এ দেখানো হয়েছে। file পাথ কনফিগারেশন, যেমন চিত্র 8-এ দেখানো হয়েছে। বিকল্পভাবে, একই কনফিগারেশন ফলাফল পেতে একই পাথে একই সাথে অ্যাপ্লিকেশন কোড এবং HT32 ফার্মওয়্যার লাইব্রেরি আনজিপ করুন।

চিত্র 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip বিষয়বস্তু
বিষয়বস্তু

চিত্র 8. ডিকম্প্রেশন পাথ
ডিকম্প্রেশন পাথ

টার্মিনাল সফটওয়্যার
অ্যাপ্লিকেশন কোড ফাংশন নির্বাচন বা স্থিতি প্রদর্শন বাস্তবায়ন করতে COM পোর্টের মাধ্যমে বার্তা স্থানান্তর করতে পারে। এর জন্য হোস্ট সাইডকে আগে থেকে টার্মিনাল সফ্টওয়্যার ইনস্টল করতে হবে। ব্যবহারকারীরা উপযুক্ত সংযোগ সফ্টওয়্যার চয়ন করতে পারেন, বা বিনামূল্যে লাইসেন্সপ্রাপ্ত সফ্টওয়্যার যেমন Tera Term ব্যবহার করতে পারেন৷ অ্যাপ্লিকেশন কোডে, UART চ্যানেলটি 8-বিট শব্দের দৈর্ঘ্য, নো প্যারিটি, 1 স্টপ বিট এবং 115200bps এর একটি বড রেট দিয়ে কনফিগার করা হয়েছে।

কার্যকরী বর্ণনা

এই অধ্যায়টি অ্যাপ্লিকেশন কোডের জন্য একটি কার্যকরী বিবরণ প্রদান করবে, যার মধ্যে ডিরেক্টরি কাঠামো, API আর্কিটেকচার, সেটিং বিবরণ ইত্যাদির তথ্য রয়েছে।

ডিরেক্টরি কাঠামো
অ্যাপ্লিকেশন কোড file একটি অ্যাপ্লিকেশন ফোল্ডার রয়েছে। পরবর্তী স্তরটি হল "Module_UART" ফোল্ডার যাতে দুটি অ্যাপ্লিকেশন প্রোগ্রাম রয়েছে, "UART_Module_Ex"ample" এবং "UART_Bridge"। প্রাসঙ্গিক files তালিকাভুক্ত এবং নীচে বর্ণনা করা হয়.
সারণি 2. অ্যাপ্লিকেশন কোড ডিরেক্টরি কাঠামো

ফোল্ডার / File নাম বর্ণনা
\\ অ্যাপ্লিকেশন\ মডিউল_UART\UART_Module_Example*1
_CreateProject.bat প্রকল্প তৈরির জন্য ব্যাচ স্ক্রিপ্ট files
_ProjectSource.ini সূচনা file প্রোজেক্টে সোর্স কোড যোগ করার জন্য
ht32_board_config.h সেটআপ file IC পেরিফেরাল I/O অ্যাসাইনমেন্ট সম্পর্কিত
ht32fxxxxxx_01_it.c বিঘ্নিত সেবা প্রোগ্রাম file
main.c প্রধান প্রোগ্রাম সোর্স কোড
\\ অ্যাপ্লিকেশন\ মডিউল_UART\UART_Bridge*2
_CreateProject.bat প্রকল্প তৈরির জন্য ব্যাচ স্ক্রিপ্ট files
_ProjectSource.ini সূচনা file প্রোজেক্টে সোর্স কোড যোগ করার জন্য
ht32_board_config.h সেটআপ file IC পেরিফেরাল I/O অ্যাসাইনমেন্ট সম্পর্কিত
ht32fxxxxxx_01_it.c বিঘ্নিত সেবা প্রোগ্রাম file
main.c মূল প্রোগ্রামের সোর্স কোড
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

দ্রষ্টব্য: 

  1. "UART_Module_Ex"-এample" অ্যাপ্লিকেশন কোড, API পড়া এবং লেখার ক্রিয়াকলাপগুলি লুপব্যাক পদ্ধতিতে সঞ্চালিত হয়, "এপিআই ব্যবহার প্রাক্তন" দেখুনampআরো বিস্তারিত জানার জন্য les" বিভাগ।
  2.  "UART_Bridge" অ্যাপ্লিকেশন কোডে, দুটি UART চ্যানেল, UART CH0 এবং UART CH1, সক্রিয় করা হয়েছে এবং COMMAND কাঠামোর মাধ্যমে কাস্টম যোগাযোগ প্রোটোকল দুটি UART ডিভাইসের মধ্যে প্রয়োগ করা হয়েছে। আরও তথ্যের জন্য, "এপিআই ব্যবহার প্রাক্তন" দেখুনampলেস" বিভাগ।
  3. অ্যাপ্লিকেশন কোড uart_module.c/h ব্যবহার করতে হবে files যার একটি ফার্মওয়্যার লাইব্রেরি সংস্করণ প্রয়োজন। প্রয়োজন আপডেট অনুযায়ী সময়ে সময়ে পরিবর্তন হতে পারে. বর্তমান ফার্মওয়্যার লাইব্রেরি সংস্করণের প্রয়োজনীয়তা নিশ্চিত করতে, main.c-এ "নির্ভরতা চেক" কীওয়ার্ড অনুসন্ধান করে নির্ভরতা চেক বিষয়বস্তু দেখুন। file. যদি ফার্মওয়্যার লাইব্রেরি সংস্করণ প্রয়োজনীয়তা পূরণ না করে, তাহলে "ফার্মওয়্যার লাইব্রেরি" বিভাগে দেওয়া লিঙ্ক থেকে নতুন সংস্করণটি ডাউনলোড করুন।

API আর্কিটেকচার
প্রতিটি API এর একটি গুরুত্বপূর্ণ পরামিতি CH আছে, যা UART চ্যানেল। এটি নির্ধারণ করে যে কোন UART চ্যানেল নিয়ন্ত্রণ করা হবে। বর্তমানে চারটি পর্যন্ত UART চ্যানেল সমর্থিত এবং তাই চারটি ধ্রুবক চিহ্ন নিম্নরূপ সংজ্ঞায়িত করা হয়েছে। এগুলি CH প্যারামিটার হিসাবে ব্যবহৃত হয় যা API-কে নিয়ন্ত্রণের ভিত্তি প্রদান করে।

  • UARTM_CH0: ইনপুট প্যারামিটার - নিয়ন্ত্রণ বা UART CH0 কনফিগার করুন
  • UARTM_CH1: ইনপুট প্যারামিটার - নিয়ন্ত্রণ বা UART CH1 কনফিগার করুন
  • UARTM_CH2: ইনপুট প্যারামিটার - নিয়ন্ত্রণ বা UART CH2 কনফিগার করুন
  • UARTM_CH3: ইনপুট প্যারামিটার - নিয়ন্ত্রণ বা UART CH3 কনফিগার করুন

শুধুমাত্র একটি UART চ্যানেল ব্যবহার করা হলে মেমরির স্থান নষ্ট হবে না। এটি কারণ সমর্থিত UART চ্যানেলের সংখ্যা সেট করা যেতে পারে এবং অব্যবহৃত UART চ্যানেল কোড উপলব্ধ মেমরি স্পেস বাড়ানোর জন্য প্রিপ্রসেসর দ্বারা সরানো হবে। এপিআই আর্কিটেকচার দেখানো হয়েছে চিত্র 9.

চিত্র 9. API আর্কিটেকচার ব্লক ডায়াগ্রাম
আর্কিটেকচার ব্লক ডায়াগ্রাম

প্রতিটি API UART চ্যানেল-সম্পর্কিত সেটিংস বা নিয়ন্ত্রণের চারটি গ্রুপের সমন্বয়ে গঠিত যাতে ব্যবহারকারীদের শুধুমাত্র পছন্দসই CH প্যারামিটার ইনপুট করতে হয়। প্রাসঙ্গিক API কনফিগার করার জন্য, শুধুমাত্র কাঠামো ফর্ম, USART_InitTypeDef সহ একটি অতিরিক্ত UART মৌলিক কনফিগারেশন প্যারামিটার টেবিল থাকা প্রয়োজন। API টেবিলের প্যারামিটার বিষয়বস্তু অনুযায়ী UART মৌলিক কনফিগারেশন বাস্তবায়ন করবে। UART মৌলিক কনফিগারেশন স্ট্রাকচার টেবিলের জন্য "API বিবরণ" বিভাগটি পড়ুন।

uart_module.c/.h files শুধুমাত্র প্রতিটি UART চ্যানেলের ইন্টারাপ্ট (CHx_IRQ) ​​এবং স্ট্যাটাস টেবিল (CHx স্ট্যাটাস) ধারণ করে যখন UART যোগাযোগের জন্য প্রয়োজনীয় সমস্ত সেটিংস ht32_board_config.h দ্বারা সরবরাহ করা হয়। ht32_board_config.h-এ হার্ডওয়্যার প্রাসঙ্গিক পরামিতি file নীচের টেবিলে দেখানো হয়. আরও বিশদ বিবরণ "সেটিং বিবরণ" বিভাগে দেওয়া আছে।

ht32_board_config.h-এর হার্ডওয়্যার প্রাসঙ্গিক পরামিতিগুলির মধ্যে নিম্নরূপ I/O সেটিংস এবং শারীরিক UART পোর্ট সেটিংস অন্তর্ভুক্ত রয়েছে।

সারণি 3. ht32_board_config.h-এ সংজ্ঞা চিহ্ন

প্রতীক বর্ণনা
HTCFG_UARTM_CH0 শারীরিক UART পোর্টের নাম; যেমনample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT CH0-এর জন্য TX-এর পোর্ট নাম সংজ্ঞায়িত করে; যেমনampলে: এ, বি, সি…
HTCFG_UARTM0_TX_GPIO_PIN CH0-এর জন্য TX-এর পিন নম্বর সংজ্ঞায়িত করে; যেমনample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT CH0-এর জন্য RX-এর পোর্টের নাম সংজ্ঞায়িত করে; যেমনampলে: এ, বি, সি…
HTCFG_UARTM0_RX_GPIO_PIN CH0-এর জন্য TX-এর পিন নম্বর সংজ্ঞায়িত করে; যেমনample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE CH0 এর জন্য TX বাফারের আকার নির্ধারণ করে; যেমনampলে: ১
HTCFG_UARTM0_RX_BUFFER_SIZE CH0 এর জন্য RX বাফার আকার নির্ধারণ করে; যেমনampলে: ১

UART চ্যানেল AFIO কনফিগারেশন পরিবর্তন করতে, প্রাসঙ্গিক ডিভাইস ডেটাশীট পড়ুন। বর্তমানে শুধুমাত্র UART CH0-এর I/O সংজ্ঞাগুলি কার্যকর হয় কারণ শুধুমাত্র UART CH0 কে ht32_board_config.h-এ কনফিগার করা হয়েছে। UART CH1~3 যোগ করতে, তাদের I/O সংজ্ঞাগুলি UART CH0 সংজ্ঞা উল্লেখ করে বা "সেটিং পরিবর্তন এবং FAQs" বিভাগে উল্লেখ করে সম্পূর্ণ করতে হবে।

তিনটি API আর্কিটেকচারের প্রধান বৈশিষ্ট্য রয়েছে: 

  1. চারটি পর্যন্ত UART চ্যানেল সমর্থিত। তাদের ইনপুট প্যারামিটার হল UARTM_CH0, UARTM_CH1, UARTM_CH2 এবং UARTM_CH3।
  2.  UART চ্যানেলের সংখ্যা সেট করা যেতে পারে এবং অব্যবহৃত চ্যানেলগুলি উপলব্ধ মেমরির স্থান হ্রাস করবে না।
  3. সমস্ত UART সেটিংস এবং I/O সংজ্ঞা সম্পূর্ণরূপে API থেকে পৃথক করা হয়েছে। এটি মান নির্ধারণের ব্যবস্থাপনার সুবিধা বাড়ায় এবং ভুল বা অনুপস্থিত সেটিংসের সম্ভাবনা হ্রাস করে।

বর্ণনা সেটিং 

এই বিভাগটি ht32_board_config.h এবং uart_module.h-এ প্যারামিটার সেটিংস প্রবর্তন করবে files.

  1. ht32_board_config.h: এটি file পিন সংজ্ঞা এবং ডেভেলপমেন্ট বোর্ড প্রাসঙ্গিক সেটিংসের জন্য ব্যবহৃত হয়, যার মধ্যে স্টার্টার কিট (SK) দ্বারা ব্যবহৃত UART IP চ্যানেল (UART0, UART1, USART0…) অন্তর্ভুক্ত, সংশ্লিষ্ট TX/RX পিনের অবস্থান এবং TX/RX বাফার আকার। চিত্র 10 HT32F52352 স্টার্টার কিটের সেটিং বিষয়বস্তু দেখায়। বিকাশের কার্যকরী একীকরণের উপর নির্ভর করে, ব্যবহারকারীরা পিন সংজ্ঞা বাস্তবায়ন করতে ব্যবহৃত ডিভাইসের ডেটাশিটের "পিন অ্যাসাইনমেন্ট" বিভাগটি উল্লেখ করতে পারেন। সেটিং পরিবর্তন সম্পর্কে আরও বিশদ বিবরণ "সেটিং পরিবর্তন এবং FAQs" বিভাগে বর্ণিত হবে।
    চিত্র 10. ht32_board_config.h সেটিংস (HT32F52352)
    সেটিংস
  2. uart_module.h: এটি এপিআই হেডার file অ্যাপ্লিকেশন কোড দ্বারা ব্যবহৃত হয়, যার মধ্যে প্রাসঙ্গিক ডিফল্ট সেটিংস, ফাংশন সংজ্ঞা, ইত্যাদি অন্তর্ভুক্ত রয়েছে। চিত্র 11-এ দেখানো হিসাবে, ডিফল্ট সেটিং বিষয়বস্তু বহিরাগত কনফিগারেশন দ্বারা ওভাররাইট করা যেতে পারে, যেমন ht32_board_config.h-এর সেটিংস। file.
    চিত্র 11. uart_module.h-এ ডিফল্ট সেটিংস
    ডিফল্ট সেটিংস
API বর্ণনা
  1. অ্যাপ্লিকেশন কোড ডেটা টাইপ বিবরণ।
    • USART_InitTypeDef
      এটি হল UART মৌলিক কনফিগারেশন কাঠামো যা BaudRate, WordLength, StopBits, প্যারিটি এবং মোড কনফিগারেশনের সমন্বয়ে গঠিত, যেমনটি নীচে দেখানো হয়েছে।
      পরিবর্তনশীল নাম টাইপ বর্ণনা
      USART_BaudRate u32 UART যোগাযোগ বড রেট
      USART_Wordlength u16 UART যোগাযোগ শব্দের দৈর্ঘ্য: 7, 8 বা 9 বিট
      USART_StopBits u16 UART যোগাযোগ স্টপ বিট দৈর্ঘ্য: 1 বা 2 বিট
      USART_Parity u16 UART যোগাযোগ সমতা: জোড়, বিজোড়, চিহ্ন, স্থান বা সমতা নেই
      USART_Mode u16 UART যোগাযোগ মোড; API শুধুমাত্র স্বাভাবিক মোড সমর্থন করে
  2. API ফাংশন ব্যবহার করার আগে, মূল প্রোগ্রামে UART মৌলিক কনফিগারেশন সম্পূর্ণ করুন। এই অ্যাপ্লিকেশন কোডের জন্য UART বেসিক কনফিগারেশন চিত্র 12-এ দেখানো হয়েছে। এখানে বড রেট 115200bps, শব্দের দৈর্ঘ্য 8-বিট, স্টপ বিটের দৈর্ঘ্য 1-বিট, এবং কোন সমতা নেই।
    চিত্র 12. UART বেসিক কনফিগারেশন
    মৌলিক কনফিগারেশন
  3. চিত্র 13 uart_module.h-এ ঘোষিত API ফাংশনগুলি দেখায় file. নিম্নলিখিত সারণীগুলি API ফাংশনগুলির ফাংশন, ইনপুট পরামিতি এবং ব্যবহার ব্যাখ্যা করে৷
    চিত্র 13. uart_module.h-এ API ফাংশন ঘোষণা 
    API ফাংশন ঘোষণা
নাম void 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 মৌলিক কনফিগারেশন চালান//USART_InitStructure কনফিগারেশনের জন্য চিত্র 12 পড়ুন
নাম 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 চ্যানেল
pBuffer বাফার পয়েন্টার
uদৈর্ঘ্য ডেটার দৈর্ঘ্য লিখতে হবে
আউটপুট সফলতা সফল
ত্রুটি ব্যর্থ হয়েছে
 ব্যবহার u8 টেস্ট[] = “এটা পরীক্ষা!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART pBuffer ডেটা লেখে
নাম u32 UARTM_ReadByte(u32 CH, u8 *pData)
ফাংশন UART মডিউল রিড বাইট অপারেশন (RX)
ইনপুট CH UART চ্যানেল
pData পঠিত ডেটা রাখার ঠিকানা
আউটপুট সফলতা সফল
ত্রুটি ব্যর্থ (কোন তথ্য নেই)
   ব্যবহার u8 টেম্পডেটা; যদি (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//যদি UARTM_ReadByte() SUCCESS ফেরত দেয় তাহলে UART এই ডেটা বাইটটি লিখে
নাম u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
ফাংশন UART মডিউল রিড অপারেশন (RX)
 ইনপুট CH UART চ্যানেল
pBuffer বাফার পয়েন্টার
uদৈর্ঘ্য ডেটার দৈর্ঘ্য পড়তে হবে
আউটপুট গণনা পড়ুন ডেটার দৈর্ঘ্য পড়া হয়েছে
     ব্যবহার 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 থেকে প্রাপ্ত ডেটা লিখতে
নাম u32 UARTM_GetReadBufferLength(u32 সিএইচ)
ফাংশন রিড বাফার দৈর্ঘ্য (RX) পান
ইনপুট CH UART চ্যানেল
আউটপুট uদৈর্ঘ্য বাফার দৈর্ঘ্য পড়ুন
  ব্যবহার UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART মডিউল প্রাথমিককরণ যখন (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//UARTM_ReadBuffer 5 বাইট ডেটা না পাওয়া পর্যন্ত অপেক্ষা করুন
নাম u32 UARTM_GetWriteBufferLength(u32 সিএইচ)
ফাংশন লেখার বাফার দৈর্ঘ্য (TX) পান
ইনপুট CH UART চ্যানেল
আউটপুট uদৈর্ঘ্য বাফার দৈর্ঘ্য লিখুন
নাম u8 UARTM_IsTx সমাপ্ত(u32 সিএইচ)
ফাংশন TX স্ট্যাটাস পান
ইনপুট CH UART চ্যানেল
আউটপুট সত্য TX অবস্থা: সমাপ্ত
মিথ্যা TX অবস্থা: শেষ হয়নি
      ব্যবহার UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 প্রয়োজনীয় যখন (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //এই API টিএক্স স্ট্যাটাস চেক করতে ব্যবহার করা যেতে পারে, যেমন উপরে দেখানো হয়েছে; UARTM_WriteByte() API শেষ না হওয়া পর্যন্ত অপেক্ষা করুন, অর্থাৎ, TX স্ট্যাটাস TRUE, এবং তারপর পরবর্তী ক্রিয়াগুলি চালিয়ে যান।
নাম অকার্যকর UARTM_DiscardReadBuffer(u32 সিএইচ)
ফাংশন রিড বাফারে ডেটা বাতিল করুন
ইনপুট CH UART চ্যানেল

API ব্যবহার যেমনampলেস 

এই বিভাগটি API লিখতে এবং পড়া প্রাক্তন প্রদর্শন করবেampশুরু করার প্রক্রিয়া এবং "UART_Module_Ex" ব্যবহার করে "Module_UART" অ্যাপ্লিকেশন কোডের লেসample" অ্যাপ্লিকেশন কোড প্রক্রিয়া। APIs ব্যবহার করার আগে, ব্যবহারকারীদের API শিরোনাম অন্তর্ভুক্ত করতে হবে file প্রধান প্রোগ্রাম সোর্স কোড মধ্যে file (#অন্তর্ভুক্ত "মিডলওয়্যার/uart_module.h")।

চিত্র 14-এ দেখানো হয়েছে, প্রাথমিক প্রক্রিয়ায় প্রবেশ করার সময়, প্রথমে UART মৌলিক কনফিগারেশন কাঠামো সংজ্ঞায়িত করুন। তারপর BaudRate, WordLength, StopBits, প্যারিটি এবং মোড সহ UART মৌলিক কনফিগারেশন কাঠামোর সদস্যদের কনফিগার করুন। অবশেষে, API প্রারম্ভিকতা ফাংশন কল করুন, যার সমাপ্তি প্রাথমিক প্রক্রিয়ার সমাপ্তি নির্দেশ করে। এর পরে ব্যবহারকারীরা পূর্বনির্ধারিত UART বেসিক কনফিগারেশনের উপর ভিত্তি করে লেখা এবং পড়া অপারেশন চালিয়ে যেতে পারেন।

চিত্র 14. ইনিশিয়ালাইজেশন ফ্লোচার্ট
ইনিশিয়ালাইজেশন ফ্লোচার্ট

"UART_Module_Example” অ্যাপ্লিকেশন কোড লুপব্যাক পদ্ধতিতে API রিড এবং রাইট অপারেশন প্রদর্শন করে। এর জন্য ফ্লোচার্টটি চিত্র 15-এ দেখানো হয়েছে। ব্যবহৃত API ফাংশনগুলির মধ্যে রয়েছে UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() এবং UARTM_GetReadBufferLength()। তাদের বিবরণ “API বিবরণ” বিভাগে দেওয়া আছে।

চিত্র 15. লিখুন এবং পড়ার ফ্লোচার্ট Exampলেস
লিখুন এবং পড়ার ফ্লোচার্ট Exampলেস

আরেকটি "UART_Bridge" অ্যাপ্লিকেশন কোড আছে "Module_UART" ফোল্ডারের অধীনে যার সাথে সম্পর্কিত file বর্ণনাটি "ডিরেক্টরি স্ট্রাকচার" বিভাগে উপস্থাপন করা হয়েছে। "UART_Bridge" অ্যাপ্লিকেশন কোড দুটি UART চ্যানেল, UART CH0 এবং UART CH1 সক্রিয় করে এবং তারপর COMMAND স্ট্রাকচার, gCMD1 এবং gCMD2 এর মাধ্যমে দুটি UART ডিভাইসের মধ্যে যোগাযোগ প্রোটোকল কাস্টমাইজ করে। এগুলি uart_bridge.c-এ সংজ্ঞায়িত করা হয়েছে, যেমনটি নীচে দেখানো হয়েছে। UARTBridge_CMD1TypeDef gCMD1:

পরিবর্তনশীল নাম টাইপ বর্ণনা
uHeader u8 হেডার
uCmd u8 আদেশ
uData[3] u8 ডেটা

UARTBridge_CMD2TypeDef gCMD2:

পরিবর্তনশীল নাম টাইপ বর্ণনা
uHeader u8 হেডার
uCmdA u8 কমান্ড এ
uCmdB u8 কমান্ড বি
uData[3] u8 ডেটা

"UART_Bridge" অ্যাপ্লিকেশন কোডে, একটি কমান্ড প্যাকেট হিসাবে ডেটা গ্রহণ করতে gCMD1 ব্যবহার করুন এবং তারপরে এটি বিশ্লেষণ করুন৷ তারপর কাস্টমাইজড কমিউনিকেশন প্রোটোকল অনুযায়ী, একটি প্রতিক্রিয়া প্যাকেট হিসাবে gCMD2 সেট করুন এবং এটি প্রেরণ করুন। নিম্নলিখিত একটি প্রাক্তনampএকটি কমান্ড প্যাকেট gCMD1) এবং একটি প্রতিক্রিয়া প্যাকেট (gCMD2)। কমান্ড প্যাকেট (UARTBridge_CMD1TypeDef gCMD1):

বাইট 0 বাইট 1 বাইট 2 ~ বাইট 4
uHeader uCmd uData [৩]
"ক" "1" "x, y, z"

প্রতিক্রিয়া প্যাকেট (UARTBridge_CMD2TypeDef gCMD2):

বাইট 0 বাইট 1 বাইট 2 বাইট 3 ~ বাইট 5
uHeader uCmdA uCmdB uData [৩]
"বি" "একটি" "1" "x, y, z"

সম্পদের পেশা
HT32F52352 কে প্রাক্তন হিসাবে নিচ্ছেনample, UART মডিউল দ্বারা দখলকৃত সম্পদ নীচে দেখানো হয়েছে.

HT32F52352 এর কীওয়ার্ড
রম সাইজ 946 বাইট
RAM সাইজ 40*1 + 256*2 বাইট

দ্রষ্টব্য:

  1. একটি একক চ্যানেলের জন্য পতাকা এবং স্থিতি সহ গ্লোবাল ভেরিয়েবল 40 বাইট RAM দখল করে।
  2.  এটি এমন একটি শর্তের জন্য যেখানে একটি একক চ্যানেল ব্যবহার করা হয় এবং TX/RX বাফারের আকার 128/128 বাইট। বাফার আকার অ্যাপ্লিকেশন প্রয়োজনীয়তা অনুযায়ী সেট করা যেতে পারে.

সারণি 4. অ্যাপ্লিকেশন কোড সম্পদ পেশা 

  • সংকলন পরিবেশ: MDK-Arm V5.36, ARMCC V5.06 আপডেট 7 (বিল্ড 960)
  • অপটিমাইজ বিকল্প: লেভেল 2 (-O2)

ব্যবহারের জন্য নির্দেশাবলী

এই অধ্যায়টি "মডিউল_ইউআরটি" অ্যাপ্লিকেশন কোডের জন্য পরিবেশগত প্রস্তুতির সাথে সাথে সংকলন এবং পরীক্ষার ধাপগুলিকে পরিচয় করিয়ে দেবে।

পরিবেশগত প্রস্তুতি
"Module_UART" অ্যাপ্লিকেশন কোডের জন্য প্রয়োজনীয় হার্ডওয়্যার এবং সফ্টওয়্যার নীচে তালিকাভুক্ত করা হয়েছে৷
সারণী 5. হার্ডওয়্যার/সফ্টওয়্যার পরিবেশগত প্রস্তুতি 

হার্ডওয়্যার/সফটওয়্যার গণনা দ্রষ্টব্য
স্টার্টার কিট 1 এই অ্যাপ্লিকেশন নোটটি প্রাক্তন হিসাবে HT32F52352 স্টার্টার কিট ব্যবহার করেample
ইউএসবি কেবল 1 মাইক্রো ইউএসবি, পিসির সাথে সংযুক্ত
অ্যাপ্লিকেশন কোড ডাউনলোড পাথ, file এবং ডিরেক্টরি কনফিগারেশন "রিসোর্স ডাউনলোড এবং প্রিপারেশন" বিভাগে চালু করা হয়েছে। পাথ: "\\application\Module_UART\UART_Module_Exampলে "
তেরা মেয়াদ "টার্মিনাল সফ্টওয়্যার" বিভাগটি পড়ুন
কেৱল আইডিই কেৱল uVision V5.xx

প্রথমে, UART অ্যাপ্লিকেশন পরিচিতির জন্য ই-লিঙ্ক32 লাইটের ভার্চুয়াল COM পোর্ট (VCP) ফাংশনের সাথে HT52352F32 স্টার্টার কিট ব্যবহার করুন। এটি বাস্তবায়নের জন্য নিম্নলিখিত পরিবেশগত প্রস্তুতির প্রয়োজন:

  1. বোর্ডে দুটি ইউএসবি ইন্টারফেস রয়েছে। বোর্ডে PC এবং eLink32 Lite ইন্টারফেস সংযোগ করতে USB কেবল ব্যবহার করুন চিত্র 16-(a) এ দেখানো হয়েছে।
  2. যেহেতু অ্যাপ্লিকেশন কোডটি e-Link32 Lite Virtual COM Port (VCP) ফাংশন ব্যবহার করতে হবে, নিশ্চিত করুন যে UART Jumper-J2*2 এর PAx*1 এবং DAP_Tx একটি জাম্পার ব্যবহার করে ছোট করা হয়েছে। J2 অবস্থান চিত্র 16-(b) দ্বারা নির্দেশিত হয়েছে।

দ্রষ্টব্য

  1. স্টার্টার কিটে J2-এর দুটি বিকল্প রয়েছে, PAx এবং DAP_Tx শর্টেড বা PAx এবং RS232_Tx ছোট। বিস্তারিত সেটিং ফাংশনের জন্য স্টার্টার কিট ব্যবহারকারী ম্যানুয়াল পড়ুন।
  2. বিভিন্ন স্টার্টার কিটের MCU UART RX পিনের অবস্থান ভিন্ন। এই প্রাক্তনample RX পিন নির্দেশ করতে PAx ব্যবহার করে।

চিত্র 16. HT32 স্টার্টার কিট ব্লক ডায়াগ্রাম
কিট ব্লক ডায়াগ্রাম

এখন UART অ্যাপ্লিকেশন পরিচিতির জন্য e-Link32 Pro এর ভার্চুয়াল COM পোর্ট (VCP) ফাংশনের সাথে একত্রিত ব্যবহারকারী টার্গেট বোর্ড ব্যবহার করুন। এটি বাস্তবায়নের জন্য নিম্নলিখিত পরিবেশগত প্রস্তুতির প্রয়োজন:

  1. E-Link32 Pro এর এক দিক একটি মিনি USB কেবল ব্যবহার করে একটি পিসির সাথে সংযুক্ত এবং অন্য দিকটি তার 10-বিট ধূসর তারের মাধ্যমে ব্যবহারকারীর লক্ষ্য বোর্ডের সাথে সংযুক্ত। তারের এবং টার্গেট বোর্ডের SWD ইন্টারফেসের মধ্যে সংযোগটি ডুপন্ট লাইন ব্যবহার করে বাস্তবায়িত হয়, যেমন চিত্র 17-(a) এ দেখানো হয়েছে।
  2. e-Link32 Pro-এর সিরিয়াল কমিউনিকেশন পিনগুলি হল পিন#7 VCOM_RXD এবং পিন#8- VCOM_TXD। এগুলি ব্যবহারকারীর লক্ষ্য বোর্ডের TX এবং RX পিনের সাথে সংযুক্ত করা উচিত, যেমন চিত্র 17-(b) এ দেখানো হয়েছে।
    চিত্র 17. e-Link32 Pro + ব্যবহারকারী টার্গেট বোর্ড ব্লক ডায়াগ্রাম
    ব্যবহারকারীর লক্ষ্য বোর্ড

সংকলন এবং পরীক্ষা
এই বিভাগটি "অ্যাপ্লিকেশন\Module_UART\UART_Module_Ex" গ্রহণ করবেample" প্রাক্তন হিসাবেample সংকলন এবং পরীক্ষা প্রক্রিয়া প্রবর্তন. এর আগে, নিশ্চিত করুন যে পূর্ববর্তী বিভাগে বর্ণিত সমস্ত প্রস্তুতি বাস্তবায়িত হয়েছে এবং তেরা টার্ম টার্মিনাল সফ্টওয়্যার ডাউনলোড করা হয়েছে।

বিস্তারিত অপারেশন পদক্ষেপ নীচে সংক্ষিপ্ত করা হয়.
ধাপ 1. পাওয়ার-অন পরীক্ষা

পূর্ববর্তী বিভাগে বর্ণিত হার্ডওয়্যার পরিবেশ সেট আপ করুন। পাওয়ার-অন করার পরে, স্টার্টার কিটের নীচের বাম দিকের D9 পাওয়ার LED আলোকিত হবে৷ উপরের ডানদিকে e-Link1 লাইটে থাকা D32 USB LED USB গণনা শেষ হওয়ার পরে আলোকিত হবে৷ যদি দীর্ঘ সময়ের পরে D1 আলোকিত না হয়, তাহলে নিশ্চিত করুন যে USB কেবল যোগাযোগ করতে সক্ষম কিনা। যদি না হয় তবে এটি সরিয়ে ফেলুন এবং আবার ঢোকান।

ধাপ 2. একটি প্রকল্প তৈরি করুন
অ্যাপ্লিকেশনটি খুলুন\Module_UART\UART_Module_Example ফোল্ডারে, _CreateProject.bat-এ ক্লিক করুন file একটি প্রকল্প তৈরি করতে, যেমন চিত্র 18-এ দেখানো হয়েছে। যেহেতু এই অ্যাপ্লিকেশন নোটটি HT32F52352 স্টার্টার কিট ব্যবহার করে, তাই MDK_ARMv52352 ফোল্ডারের নীচে অবস্থিত Keil IDE প্রকল্প "Project_5.uvprojx" খুলুন।

চিত্র 18. প্রজেক্ট তৈরি করতে _CreateProject.bat চালান
প্রজেক্ট তৈরি করুন

ধাপ 3. কম্পাইল এবং প্রোগ্রাম
প্রজেক্ট খোলার পরে, প্রথমে "বিল্ড" এ ক্লিক করুন (বা শর্টকাট "F7" ব্যবহার করুন), তারপর "ডাউনলোড" এ ক্লিক করুন (বা শর্টকাট "F8" ব্যবহার করুন)। এর পরে, বিল্ড এবং ডাউনলোড ফলাফল বিল্ড আউটপুট উইন্ডোতে প্রদর্শিত হবে। চিত্র 19 দেখুন।

চিত্র 19. ফলাফল তৈরি করুন এবং ডাউনলোড করুন
ফলাফল তৈরি করুন এবং ডাউনলোড করুন

ধাপ 4. তেরা টার্ম সফ্টওয়্যারটি খুলুন এবং সিরিয়াল পোর্ট কনফিগার করুন
Tera Term সফ্টওয়্যার এবং COM পোর্ট খুলুন। স্টার্টার কিট দ্বারা উত্পন্ন COM পোর্ট নম্বরটি সঠিক কিনা সেদিকে মনোযোগ দিন৷ তারপর কনফিগারেশন ইন্টারফেসে প্রবেশ করতে "সেটআপ >> সিরিয়াল পোর্ট" এ ক্লিক করুন। "Module_UART" অ্যাপ্লিকেশন কোডের UART ইন্টারফেস কনফিগারেশন "টার্মিনাল সফ্টওয়্যার" বিভাগে বর্ণিত হয়েছে। সেটআপ ফলাফল চিত্র 20 এ দেখানো হয়েছে।

চিত্র 20. তেরা টার্ম সিরিয়াল পোর্ট সেটআপ ফলাফল
সেটআপ ফলাফল
ধাপ 5. সিস্টেম রিসেট করুন এবং পরীক্ষা করুন
SK রিসেট কী টিপুন – B1 রিসেট। এর পরে, একটি "এবিসি এটি পরীক্ষা!" বার্তা হবে
API এর মাধ্যমে প্রেরণ করা হবে এবং তেরা টার্ম উইন্ডোতে প্রদর্শিত হবে, যেমন চিত্র 21-এ দেখানো হয়েছে। টেরা টার্ম উইন্ডোতে ডেটা প্রবেশ করার সময়, রিসিভ ফাংশন সম্পর্কে, প্রাসঙ্গিক API ব্যবহার করা হবে বাফার দৈর্ঘ্য নির্ধারণ করতে। যখন PC দ্বারা প্রাপ্ত ডেটা 5 বাইটে পৌঁছায়, প্রাপ্ত 5 বাইট ডেটা ক্রমানুসারে পাঠানো হবে। চিত্র 22-এ দেখানো হিসাবে, ক্রমানুসারে প্রবেশ করা ডেটা হল "1, 2, 3, 4, 5", যা API এর মাধ্যমে প্রাপ্ত এবং নির্ধারিত হয়। এর পরে, পাঁচটি ইনপুটের পরে "1, 2, 3, 4, 5" ডেটা প্রিন্ট করা হবে।

চিত্র 21. "মডিউল_ইউআরটি" অ্যাপ্লিকেশন কোড কার্যকরী পরীক্ষা - প্রেরণ
অ্যাপ্লিকেশন কোড কার্যকরী পরীক্ষা

চিত্র 22. "মডিউল_ইউআরটি" অ্যাপ্লিকেশন কোড কার্যকরী পরীক্ষা - গ্রহণ করুন
অ্যাপ্লিকেশন কোড কার্যকরী পরীক্ষা

প্রতিস্থাপন নির্দেশাবলী
এই বিভাগটি ব্যবহারকারীর প্রকল্পগুলিতে API গুলিকে কীভাবে সংহত করতে হয় তা পরিচয় করিয়ে দেবে।
ধাপ 1। uart_module.c যোগ করুন file প্রকল্পের মধ্যে User ফোল্ডারে রাইট ক্লিক করুন। "বিদ্যমান যোগ করুন" নির্বাচন করুন Files গ্রুপ 'ব্যবহারকারী'…”, তারপর uart_module.c নির্বাচন করুন file এবং চিত্র 23-এ দেখানো হিসাবে "যোগ করুন" এ ক্লিক করুন। এর জন্য "ডিরেক্টরি স্ট্রাকচার" বিভাগটি পড়ুন। file পথের বর্ণনা।

চিত্র 23. uart_module.c যোগ করুন File প্রকল্প করতে
File প্রকল্প করতে

ধাপ 2. ring_buffer.c যোগ করুন file প্রকল্পের মধ্যে User ফোল্ডারে রাইট ক্লিক করুন। "বিদ্যমান যোগ করুন" নির্বাচন করুন Files গ্রুপ 'ব্যবহারকারী'…”, তারপর ring_buffer.c নির্বাচন করুন file এবং চিত্র 24-এ দেখানো হিসাবে "যোগ করুন" এ ক্লিক করুন।\ এর জন্য "ডিরেক্টরি স্ট্রাকচার" বিভাগটি পড়ুন file পথের বর্ণনা।
চিত্র 24. ring_buffer.c যোগ করুন File প্রকল্প করতে 
File প্রকল্প করতে

ধাপ 3. API শিরোনাম অন্তর্ভুক্ত করুন file main.c-এর শুরুতে, যেমন চিত্র 25-এ দেখানো হয়েছে।
চিত্র 25. API হেডার অন্তর্ভুক্ত করুন File main.c থেকে
API হেডার অন্তর্ভুক্ত করুন File

ধাপ 4. Ht32_board_config.h ব্যবহার করে UART যোগাযোগের জন্য প্রয়োজনীয় সেটিংস প্রয়োগ করুন file. এটি "সেটিং বর্ণনা" এবং "সেটিং পরিবর্তন এবং প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী" বিভাগে বিস্তারিতভাবে উপস্থাপন করা হয়েছে।

সেটিং পরিবর্তন এবং প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী 

এই বিভাগটি কীভাবে UART সেটিংস পরিবর্তন করতে হয় এবং ব্যবহারের সময় সম্মুখীন হওয়া কিছু সাধারণ প্রশ্ন ব্যাখ্যা করবে।

UART পিন অ্যাসাইনমেন্ট পরিবর্তন করুন 

  1. HT32F52352 ডেটাশিট "পিন অ্যাসাইনমেন্ট" অধ্যায়ের উল্লেখ করে, বিকল্প ফাংশন ম্যাপিং টেবিলটি দেখুন যা ডিভাইসের প্রকারের AFIO ফাংশন তালিকাভুক্ত করে। UART প্রাসঙ্গিক পিনের জন্য, "AF6 USART/UART" কলামটি পড়ুন, যেমন চিত্র 26-এ দেখানো হয়েছে।
    চিত্র 26. HT32F52352 বিকল্প ফাংশন ম্যাপিং টেবিল
    বিকল্প ফাংশন ম্যাপিং টেবিল
  2. এই ধাপটি ব্যবহারকারীদেরকে উপরের টেবিলটি ব্যবহার করে সংশ্লিষ্ট UART পিনগুলি সনাক্ত করতে গাইড করবে। HT32F52352 প্রাক্তনample ডিফল্ট চ্যানেল হিসাবে USART1 ব্যবহার করে। এখানে, TX এবং RX পিনগুলি হল USR1_TX এবং USR1_RX এবং যথাক্রমে PA4 এবং PA5 এ অবস্থিত৷ চিত্র 27 পিনের চিঠিপত্রের পাশাপাশি “ht32_board_config.h”-এ পিনের সংজ্ঞা দেখায়। পিন অ্যাসাইনমেন্ট টেবিলে "প্যাকেজ" এর খালি ক্ষেত্রগুলির অর্থ হল এই প্যাকেজে কোনও প্রাসঙ্গিক GPIO নেই৷ 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-এর উপরের অর্ধেকে দেখানো হয়েছে। ht120_board_config.h-এর কোড লাইন 126~32 ব্যবহার করে সংশ্লিষ্ট পরিবর্তনগুলি বাস্তবায়িত করা হয়েছে, যেমন চিত্রের লাল ডটেড বাক্সে দেখানো হয়েছে। 28।

চিত্র 28. একটি UART চ্যানেল যোগ করুন
UART চ্যানেল

FAQs
Q: কম্পাইলেশন এবং টেস্ট বিভাগের ধাপ 5-এ, ট্রান্সমিট কার্যকরী পরীক্ষা স্বাভাবিক। এখানে, "এবিসি এটি পরীক্ষা!" বার্তাটি সফলভাবে প্রদর্শিত হয়েছে, তবে প্রাপ্ত ফাংশনের জন্য, কেন পাঁচটি ইনপুট মান ফেরত দেওয়া হয় না এবং প্রদর্শিত হয়?
A: UART Jumper-J2 এর MCU UART RX এবং DAP_Tx পিনগুলি জাম্পার ব্যবহার করে ছোট করা হয়েছে কিনা তা পরীক্ষা করুন। যেহেতু "Module_UART" অ্যাপ্লিকেশন কোডটি e-Link32 Lite-এর ভার্চুয়াল COM পোর্ট (VCP) ব্যবহার করতে হবে, তাই চিত্র 2-এ দেখানো হিসাবে UART Jumper-J29-এর বাম দুটি পিনে শর্ট-সার্কিট সেটিং প্রয়োগ করা উচিত।

চিত্র 29. UART জাম্পার-J2 সেটিং
UART জাম্পার

প্রশ্নঃ পরে "বিল্ড" (বা শর্টকাট "F7") নির্বাহ করার সময়, একটি ত্রুটি বার্তা উপস্থিত হয় যা নির্দেশ করে যে ফার্মওয়্যার লাইব্রেরি সংস্করণটি প্রয়োজনীয় সংস্করণের চেয়ে পুরানো? চিত্র 30 দেখুন।
A: "Module_UART" অ্যাপ্লিকেশন কোড বাস্তবায়নের জন্য uart_module.c/h অন্তর্ভুক্ত করতে হবে files যার একটি নির্দিষ্ট ফার্মওয়্যার লাইব্রেরি সংস্করণের জন্য প্রয়োজনীয়তা রয়েছে। যখন এই ধরনের একটি ত্রুটি বার্তা প্রদর্শিত হয়, এর অর্থ হল বর্তমানে ব্যবহৃত ফার্মওয়্যার লাইব্রেরি একটি পুরানো সংস্করণ। তাই "ফার্মওয়্যার লাইব্রেরি" বিভাগে দেওয়া লিঙ্কের মাধ্যমে নতুন সংস্করণটি ডাউনলোড করা প্রয়োজন।

চিত্র 30. ফার্মওয়্যার লাইব্রেরি সংস্করণ ত্রুটি বার্তা
সংস্করণ ত্রুটি বার্তা

উপসংহার

এই নথিটি "মডিউল_ইউআরটি" অ্যাপ্লিকেশন কোড এবং ইউআরটি কমিউনিকেশন প্রোটোকল সম্পর্কে আরও ভাল বোঝার সাথে ব্যবহারকারীদের সহায়তা করার জন্য একটি প্রাথমিক ভূমিকা প্রদান করেছে। এই সম্পদ ডাউনলোড এবং প্রস্তুতি দ্বারা অনুসরণ করা হয়েছে. কার্যকরী বর্ণনা অধ্যায় চালু file ডিরেক্টরি গঠন, API আর্কিটেকচার, API বিবরণ এবং API ব্যবহার প্রাক্তনampলেস ব্যবহারের জন্য নির্দেশাবলী অধ্যায় পরিবেশগত প্রস্তুতি, সংকলন এবং "মডিউল_ইউআরটি" অ্যাপ্লিকেশন কোডের পরীক্ষা প্রদর্শন করেছে। এটি কোড ট্রান্সপ্লান্ট এবং পরিবর্তন সেটিং এবং সেইসাথে সম্মুখীন হতে পারে এমন কিছু সাধারণ সমস্যা ব্যাখ্যা করার জন্য নির্দেশনা প্রদান করে। এই সবগুলি একত্রিত করে ব্যবহারকারীদের দ্রুত বুঝতে পারবেন কিভাবে API ব্যবহার করতে হয় এবং পরবর্তীতে শুরু করার জন্য সময় কমিয়ে দেয়।

রেফারেন্স উপাদান

আরও তথ্যের জন্য, হোলটেক পড়ুন webসাইট: www.holtek.com

সংস্করণ এবং পরিবর্তন তথ্য

তারিখ লেখক মুক্তি পরিবর্তন তথ্য
2022.04.30 蔡期育(চি-ইউ সাই) V1.00 প্রথম সংস্করণ

দাবিত্যাগ

এতে উপস্থিত সমস্ত তথ্য, ট্রেডমার্ক, লোগো, গ্রাফিক্স, ভিডিও, অডিও ক্লিপ, লিঙ্ক এবং অন্যান্য আইটেম webসাইট ('তথ্য') শুধুমাত্র রেফারেন্সের জন্য এবং যেকোন সময় পূর্ব বিজ্ঞপ্তি ছাড়াই এবং Holtek Semiconductor Inc. এবং এর সংশ্লিষ্ট কোম্পানিগুলির বিবেচনার ভিত্তিতে পরিবর্তন সাপেক্ষে (এরপরে 'Holtek', 'কোম্পানি', 'আমাদের', ' আমরা' বা 'আমাদের')। যদিও Holtek এই বিষয়ে তথ্যের যথার্থতা নিশ্চিত করার চেষ্টা করে webসাইট, তথ্যের নির্ভুলতার জন্য Holtek দ্বারা কোন প্রকাশ বা অন্তর্নিহিত ওয়ারেন্টি দেওয়া হয় না। হোলটেক কোন ভুল বা ফাঁসের জন্য কোন দায় বহন করবে না।
হোলটেক কোন ক্ষতির জন্য দায়ী থাকবে না (কম্পিউটার ভাইরাস, সিস্টেমের সমস্যা বা ডেটা ক্ষতি সহ কিন্তু সীমাবদ্ধ নয়) যা ব্যবহার করার সময় বা ব্যবহার করার ক্ষেত্রে উদ্ভূত webযে কোন পক্ষের সাইট। এই এলাকায় লিঙ্ক থাকতে পারে, যা আপনাকে পরিদর্শন করার অনুমতি দেয় webঅন্যান্য কোম্পানির সাইট।
এগুলো webসাইটগুলি Holtek দ্বারা নিয়ন্ত্রিত হয় না। হোলটেক কোন দায়বদ্ধতা বহন করবে না এবং এই ধরনের সাইটে প্রদর্শিত তথ্যের কোন গ্যারান্টি বহন করবে না। অন্যান্য হাইপারলিঙ্ক webসাইটগুলি আপনার নিজের ঝুঁকিতে।

দায়বদ্ধতার সীমাবদ্ধতা

কোনো অবস্থাতেই হোলটেক লিমিটেড অন্য কোনো পক্ষের কাছে দায়বদ্ধ থাকবে না কোনো ক্ষতি বা ক্ষতির জন্য যা কোনোভাবেই বা প্রত্যক্ষ বা পরোক্ষভাবে আপনার এটির অ্যাক্সেস বা ব্যবহারের সাথে সম্পর্কিত webসাইট, এর বিষয়বস্তু বা কোনো পণ্য, উপকরণ বা পরিষেবা।

পরিচালনা আইন
দাবিত্যাগ অন্তর্ভুক্ত webসাইটটি চীন প্রজাতন্ত্রের আইন অনুসারে পরিচালিত হবে এবং ব্যাখ্যা করা হবে। ব্যবহারকারীরা চীন প্রজাতন্ত্রের আদালতের অ-এক্সক্লুসিভ এখতিয়ারে জমা দেবেন।

দাবিত্যাগের আপডেট
Holtek পূর্ব নোটিশ সহ বা ছাড়া যেকোনো সময় দাবিত্যাগ আপডেট করার অধিকার সংরক্ষণ করে, সমস্ত পরিবর্তনগুলি পোস্ট করার সাথে সাথেই কার্যকর হয় webসাইট

দলিল/সম্পদ

HOLTEK HT32 MCU UART অ্যাপ্লিকেশন নোট [পিডিএফ] ব্যবহারকারী ম্যানুয়াল
HT32 MCU, UART অ্যাপ্লিকেশন নোট, HT32 MCU UART, অ্যাপ্লিকেশন নোট, HT32, MCU UART অ্যাপ্লিকেশন নোট, HT32 MCU UART অ্যাপ্লিকেশন নোট

তথ্যসূত্র

একটি মন্তব্য করুন

আপনার ইমেল ঠিকানা প্রকাশ করা হবে না. প্রয়োজনীয় ক্ষেত্রগুলি চিহ্নিত করা হয়েছে *