Talaan ng mga Nilalaman:

STM32F4 Discovery Board at Python USART Communication (STM32CubeMx): 5 Hakbang
STM32F4 Discovery Board at Python USART Communication (STM32CubeMx): 5 Hakbang

Video: STM32F4 Discovery Board at Python USART Communication (STM32CubeMx): 5 Hakbang

Video: STM32F4 Discovery Board at Python USART Communication (STM32CubeMx): 5 Hakbang
Video: Tutorial CubeMX - 7- USART RxTx Interrupts STM32F4 Discovery 2024, Hulyo
Anonim
STM32F4 Discovery Board at Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board at Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board at Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board at Python USART Communication (STM32CubeMx)

Hi! Sa tutorial na ito susubukan naming magtaguyod ng komunikasyon sa USART sa pagitan ng STM32F4 ARM MCU at Python (maaari itong mapalitan ng anumang ibang wika). Kaya, magsimula na tayo:)

Hakbang 1: Mga Kinakailangan sa Software at Hardware

Sa mga tuntunin ng hardware na kailangan mo:

  • STM32F4 Discovery Board (o anumang iba pang board ng STM32)
  • USB sa TTL converter

Sa mga tuntunin ng software:

  • STM32CubeMX
  • Keil uVision5
  • Python na may naka-install na serial library

Hakbang 2: Pag-configure ng STM32CubeMX

Unawain muna natin kung ano ang gusto nating gawin. Nais naming magpadala ng data upang makasakay mula sa Python sa paglipas ng USART at suriin kung mayroon kaming tamang data at pinamunuan ang toggle. Kaya, kailangan naming paganahin ang USART at Led.

  • Paganahin ang USART2 mula sa tab na Pagkakonekta.

    • Baguhin ang mode sa Asynchoronous
    • Baud rate sa 9600 Bits / s
    • Haba ng salita sa 8 Bits na walang pagkakapantay-pantay
    • Walang parity bit
    • Mula sa mga setting ng DMA idagdag ang USART2_RX sa cicular mode
    • Mula sa Mga Setting ng NVIC, paganahin ang USART2 pandaigdigang makagambala
  • Paganahin ang LED sa pamamagitan ng pag-click sa PD12

Pagkatapos makabuo ng code:)

Hakbang 3: Pag-unlad ng Keil Software

# isama

# isama

Ang mga libraryong ito ay kinakailangan sa mga pagpapatakbo ng string at upang tukuyin ang variable ng boolean.

/ * USER CODE BEGIN 2 * / HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * USER CODE END 2 * /

Dito, nagsimula ang pagtanggap ng UART kasama ang DMA.

/ * USER CODE BEGIN 4 * / void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart) {/ * Pigilan ang (mga) hindi nagbigay ng babalang babala * / UNUSED (huart); / * TANDAAN: Ang pagpapaandar na ito ay hindi dapat mabago, kung kinakailangan ang callback, maaaring ipatupad ang HAL_UART_RxCpltCallback sa file ng gumagamit * / kung (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; index _ ++; } iba pa {index_ = 0; tapos = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * USER CODE END 4 * /

Ito ang ISR na naaktibo kapag nakakakuha kami ng isang byte ng character. Kaya naman nakukuha namin ang byte na iyon at isulat ito sa data_full na naglalaman ng buong natanggap na data hanggang makuha namin ang '\ n'. Kapag nakuha namin ang '\ n' tapos na namin ang flag 1 at habang habang loop:

habang (1) {/ * USER CODE END WHILE * / if (tapos) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); tapos = 0; } iba pa {_NOP (); } / * USD CODE BEGIN 3 * /}

Kung ang natapos na watawat ay TAAS ihinahambing namin ang mga nilalaman ng buong natanggap na data at data na nais namin at kung pantay ang mga ito pinapalitan namin ang humantong. Pagkatapos nito ay tinanggal namin ang natapos na bandila at maghintay para sa bagong data at i-clear din ang data_full na array upang hindi ma-overlap sa array.

Hakbang 4: Pag-unlad ng Python Software

Kaya, dito nais naming ipadala ang aming numero na may '/ n' sa dulo, dahil kailangan itong makita ng Keil software upang malaman ang katapusan.

mag-import ng serial

ser = serial. Serial ('COM17') #check ang port na iyon sa iyong aparato mula sa Device Manager

ser.write (b'24 / n ')

Dapat mong makita na ang mga toggle ng LED sa tuwing magpapadala ka ng '24 / n '. Kung magpapadala ka ng anumang bagay hindi ito dapat makakaapekto dito.

Hakbang 5: Konklusyon

Narating namin ang pagtatapos ng tutorial. kung mayroon kang anumang problema o katanungan mangyaring huwag mag-atubiling magtanong. Susubukan kong tumulong hangga't makakaya ko. Maraming salamat:)

Inirerekumendang: