STM32F4. Урок 26 - Передача даних АЦП на ПК

Ця бібліотека призначена для зв'язку пристрою з комп'ютером і передачі виміряних значень АЦП у програму "Logview.exe" (наприклад, графік заряду батареї в даний момент або в динамічному режимі тощо).
Програма "Logview.exe" знаходиться у вільному доступі на сайті. Дані передаються мікроконтролером у форматі ASCII на комп'ютер через RS232. Отримані дані вимірювань можуть або відразу надсилатися на ПК, або формуватися в пакет для подальшої відправки на комп'ютер (залежить від налаштувань у прошивці мікроконтролера). Це дозволяє передавати дані багаторазових вимірювань, а масштабування на себе візьме комп'ютерна програма.

Примітка: Налаштування в LogView повинні збігатися з налаштуваннями мікроконтролера. Таким чином, якщо (як у прикладі) передаються дані двох АЦП, LogView також повинен бути налаштований на два канали, інакше відображення буде некоректним. До проекту додано три ini-файли для налаштування прийому даних.

Приклад використання:

Вимоги:

   Підключувані модулі CooCox-IDE: Retarget_printf
   Підтримувані бібліотеки: STM32_UB_UART

Функції:

ErrorStatus UB_Logview_Init(uint8_t kanal_anz);  // ініціалізація
void UB_Logview_SendFrame(UART_NAME_t uart);     // відправка даних у Logview.exe

Приклад використання:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 29.03.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo бібліотеки Logview
// Hinweis  : Ці два файли повинні бути на 8MHz
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_logview.h"
#include "stm32_ub_adc1_single.h"


void Delay(volatile uint32_t nCount){
  while(nCount--) {
  }
}


int main(void)
{
  uint16_t adc_wert;

  SystemInit(); // Ініціалізація налаштувань кварца

  // Ініціалізація Logview для роботи з двома каналами
  UB_Logview_Init(2);

  // Ініціалізація АЦП
  UB_ADC1_SINGLE_Init();

  while(1)
  {
    // вимірювання АЦП на PA3
    adc_wert=UB_ADC1_SINGLE_Read_MW(ADC_PA3);
	// Відправка отриманих значень у Logview по каналу 0
	LOGVIEW.kanal[0]=adc_wert;
    // вимірювання АЦП на PС4
    adc_wert=UB_ADC1_SINGLE_Read_MW(ADC_PC4);
	// Відправка отриманих значень у Logview по каналу 1
	LOGVIEW.kanal[1]=adc_wert;
	// відправка обох виміряних значень через UART (PA2)
	// Відправити в Logview.exe
	UB_Logview_SendFrame(COM2);

	// невелика пауза
	Delay(500000);
  }
}

В додатку проект CooCox і окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить ставити запитання на його сайті німецькою або англійською мовами.

Оригінал статті

Прикреплені файли:

Top