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 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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.