সুচিপত্র:

STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx): 5 টি ধাপ
STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx): 5 টি ধাপ

ভিডিও: STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx): 5 টি ধাপ

ভিডিও: STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx): 5 টি ধাপ
ভিডিও: STM32 #0. Начало. Краткий обзор рабочей отладочной платы курса по HAL - STM32F4-DISC1 2024, জুলাই
Anonim
STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx)
STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx)
STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx)
STM32F4 ডিসকভারি বোর্ড এবং পাইথন USART কমিউনিকেশন (STM32CubeMx)

ওহে! এই টিউটোরিয়ালে আমরা STM32F4 ARM MCU এবং Python এর মধ্যে USART যোগাযোগ স্থাপনের চেষ্টা করব (এটি অন্য কোন ভাষা দ্বারা প্রতিস্থাপিত হতে পারে)। চল শুরু করা যাক:)

ধাপ 1: সফ্টওয়্যার এবং হার্ডওয়্যারের প্রয়োজনীয়তা

হার্ডওয়্যারের ক্ষেত্রে আপনার প্রয়োজন:

  • STM32F4 ডিসকভারি বোর্ড (অথবা অন্য কোন STM32 বোর্ড)
  • ইউএসবি থেকে টিটিএল কনভার্টার

সফটওয়্যারের ক্ষেত্রে:

  • STM32CubeMX
  • Keil uVision5
  • সিরিয়াল লাইব্রেরি সহ পাইথন ইনস্টল

ধাপ 2: STM32CubeMX কনফিগারেশন

প্রথমেই বুঝে নেওয়া যাক আমরা কি করতে চাই। আমরা ইউএসএআরটি এর মাধ্যমে পাইথন থেকে বোর্ডে ডেটা প্রেরণ করতে চাই এবং আমাদের কাছে সঠিক ডেটা আছে কিনা এবং টগল নেতৃত্বে আছে কিনা তা পরীক্ষা করতে চাই। সুতরাং, আমাদের USART এবং LED সক্ষম করতে হবে।

  • সংযোগ ট্যাব থেকে USART2 সক্ষম করুন।

    • মোড অ্যাসিঙ্কোরোনাসে পরিবর্তন করুন
    • বাউড রেট 9600 বিট/সেকেন্ড
    • প্যারিটি ছাড়া 8 বিট শব্দের দৈর্ঘ্য
    • প্যারিটি বিট নেই
    • DMA সেটিংস থেকে USART2_RX cicular মোডে যোগ করুন
    • NVIC সেটিংস থেকে USART2 গ্লোবাল ইন্টারাপ্ট সক্ষম করুন
  • PD12 তে ক্লিক করে LED সক্ষম করুন

তারপর কোড জেনারেট করুন:)

ধাপ 3: কেইল সফটওয়্যার ডেভেলপমেন্ট

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

স্ট্রিং অপারেশনে এবং বুলিয়ান ভেরিয়েবল সংজ্ঞায়িত করতে এই লাইব্রেরির প্রয়োজন হবে।

/ *ব্যবহারকারীর কোড শুরু 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * ব্যবহারকারীর কোড শেষ 2 */

এখানে, UART প্রাপ্তির সাথে DMA শুরু হয়েছে।

/ *ব্যবহারকারীর কোড শুরু * / * দ্রষ্টব্য: এই ফাংশনটি পরিবর্তন করা উচিত নয়, যখন কলব্যাকের প্রয়োজন হয়, HAL_UART_RxCpltCallback ব্যবহারকারী ফাইলে প্রয়োগ করা যেতে পারে */ যদি (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; সূচক _ ++; } অন্য {index_ = 0; সমাপ্ত = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * ব্যবহারকারীর কোড শেষ 4 * /

এটি ISR যা সক্রিয় হয় যখন আমরা একটি বাইটের চরিত্র পাই। তাই। আমরা সেই বাইটটি পাই এবং এটি data_full তে লিখি যাতে সম্পূর্ণ প্রাপ্ত ডেটা থাকে যতক্ষণ না আমরা '। n' পাই। যখন আমরা '\ n' পাই তখন আমরা সমাপ্ত পতাকা 1 এবং যখন লুপ তৈরি করি:

যখন (1) { / * ব্যবহারকারীর কোড শেষ হয় * / যদি (সমাপ্ত) {যদি (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } মেমসেট (data_full, '\ 0', strlen (data_full)); সমাপ্ত = 0; } অন্য {_NOP (); } / * ব্যবহারকারী কোড শুরু 3 * /}

যদি সমাপ্ত পতাকাটি উচ্চ হয় তবে আমরা আমাদের প্রাপ্ত সম্পূর্ণ তথ্য এবং ডেটার বিষয়বস্তুর তুলনা করি এবং যদি তারা সমান হয় তবে আমরা নেতৃত্বে টগল করি। তারপরে আমরা সমাপ্ত পতাকাটি সাফ করি এবং নতুন ডেটার জন্য অপেক্ষা করি এবং অ্যারেতে ওভাররাইট না করার জন্য data_full অ্যারে সাফ করি।

ধাপ 4: পাইথন সফটওয়্যার ডেভেলপমেন্ট

সুতরাং, এখানে আমরা শেষ পর্যন্ত '/n' দিয়ে আমাদের নম্বর পাঠাতে চাই, কারণ কেইল সফটওয়্যারটি শেষ দেখতে হলে এটি দেখতে হবে।

সিরিয়াল আমদানি করুন

ser = serial. Serial ('COM17') #ডিভাইস ম্যানেজার থেকে আপনার ডিভাইসে সেই পোর্টটি পরীক্ষা করুন

ser.write (b'24 / n ')

প্রতিবার আপনি '24 / n 'পাঠানোর সময় LED টগলগুলি দেখতে হবে। আপনি যদি অন্য কিছু পাঠান তবে এটি প্রভাবিত করা উচিত নয়।

ধাপ 5: উপসংহার

আমরা টিউটোরিয়ালের শেষে এসেছি। যদি আপনার কোন সমস্যা বা প্রশ্ন থাকে তবে দয়া করে জিজ্ঞাসা করতে দ্বিধা করবেন না। আমি যতটুকু পারি সাহায্য করার চেষ্টা করবো। আপনাকে অনেক ধন্যবাদ:)

প্রস্তাবিত: