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

Данная библиотека предназначена для связи устройства с компьютером и передачи измеренных значений АЦП в программу «Logview.exe» (например график заряда батареи в данный момент или в динамическом режиме и т.д.).
Программа «Logview.exe» находится в свободном доступе на сайте. Данные передаются микроконтроллером в формате ASCII на компьютер через RS232. Полученные данные измерений могут либо сразу отправляться на ПК, либо формироваться в пакет для последующей отправки на компьютер (зависит от настроек в прошивке микроконтроллера). Это позволяет передавать данные многократных измерений, а масштабирование на себя возьмет компьютерная программа.

Примечание: Настройки в LogView должны совпадать с настройками микроконтроллера. Таким образом, если (как в примере) передается данные 2-х АЦП, 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 der Logview-Library
// Hinweis : Diese zwei Files muessen auf 8MHz stehen
// «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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован.