山外多功能调试助手用作MM32虚拟示波器

news/2024/11/7 10:29:22/

硬件:MM32L373
开发工具:IAR7.8
调试工具:山外多功能调试助手

Introduction

在调试MM32芯片的过程中,有时需要观察数据的实时变化,山外多功能调试助手中的虚拟示波器可以实现这一功能。

山外虚拟示波器的特点:

  • 支持8个通道,且通道可隐藏
  • 可选择通道数据类型
  • 界面可缩放移动
  • 可追踪最新数据

山外虚拟示波器通信协议:

tz_protocol

具体可阅读山外调试助手使用说明

Solution: Output Triangle Wave

以下代码参考了「顶点元」STM32使用虚拟示波器

  1. 配置UART

    void initUART1_IT(u32 baudrate)
    {UART_InitTypeDef pUARTInit;COMMON_EnableIpClock(emCLOCK_UART1);COMMON_NVIC_Configure(UART1_IRQn, 1, 1);UART_StructInit(&pUARTInit);pUARTInit.BaudRate      = baudrate;pUARTInit.WordLength    = UART_WordLength_8b;pUARTInit.StopBits      = UART_StopBits_1;pUARTInit.Parity        = UART_Parity_No;pUARTInit.Mode          = UART_Mode_Rx | UART_Mode_Tx;pUARTInit.HWFlowControl = UART_HWFlowControl_None;UART_Init(UART1, &pUARTInit);UART_ITConfig(UART1, UART_IT_RXIEN, ENABLE);UART_ClearITPendingBit(UART1, UART_IT_RXIEN);UART_Cmd(UART1, ENABLE);BSP_UART_GPIO_CONFIGURE(UART1);
    }
    
  2. 发送一个字节的数据

    void usart1_send_char(uint8_t ch)
    {while (UART_GetFlagStatus(UART1, UART_IT_TXIEN) == RESET);UART_ClearITPendingBit(UART1, UART_IT_TXIEN);UART_SendData(UART1, (uint8_t)ch);
    }
    
  3. 发送一个数组

    数组长度即为通道个数

    void usart1_putbuff (uint8_t *buff, uint32_t len)
    {while(len--){usart1_send_char(*buff);buff++;}
    }
    
  4. 根据通信协议向上位机发送数据

    void vcan_sendware(uint8_t *wareaddr, uint32_t waresize)
    { uint8_t cmdf[2] = {0x03, 0xfc};uint8_t cmdr[2] = {0xfc, 0x03};usart1_putbuff(cmdf,sizeof(cmdf));usart1_putbuff(wareaddr,waresize);usart1_putbuff(cmdr,sizeof(cmdr));
    }
    
  5. 输出三角波

    void main(void)
    {   float warebuf[8] =  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};MCUID = SetSystemClock(emSYSTICK_On, AppTaskTick);initUART1_IT(115200);while(1){warebuf[0] += 5;vcan_sendware((uint8_t *)warebuf,sizeof(warebuf));for(int i = 0; i < 100000; i++){}if(warebuf[0] >= 0x50){warebuf[0] = 0x00;}}
    }
    
  6. 虚拟示波器显示

    tz_triangle_wave

Solution: Output ADC Wave

  1. UART配置、发送部分同上

  2. 配置ADC

    void Set_ADC_Clock(ADC_TypeDef* ADCx)
    {if (ADCx == ADC1)	COMMON_EnableIpClock(emCLOCK_ADC1);
    }void ADC_Configure_Init(ADC_TypeDef* ADCx)
    {ADC_InitTypeDef ADC_InitStructure;ADC_InitStructure.ADC_Resolution         = ADC_Resolution_12b;ADC_InitStructure.ADC_PRESCARE           = ADC_PCLK2_PRESCARE_8;ADC_InitStructure.ADC_Mode               = ADC_CR_CONTINUE;ADC_InitStructure.ADC_ExternalTrigConv = 0;ADC_InitStructure.ADC_DataAlign          = ADC_DataAlign_Right;Set_ADC_Clock(ADCx);ADC_Init(ADCx, &ADC_InitStructure); 
    }  void ADC_Function(ADC_TypeDef* ADCx)
    {ADC_ExternalTrigConvCmd(ADCx, DISABLE);
    }void ADC_RegularChannelConfigure(void)
    {u32 chs = 0 ;        chs |= LEFT_SHIFT_BIT(0) | LEFT_SHIFT_BIT(1) | LEFT_SHIFT_BIT(2) | LEFT_SHIFT_BIT(3);ADC1->CFGR &= ~ADC_CFGR_SAMCTL;ADC1->CFGR |=  ADC_Samctl_13_5;ADC1->CHSR &= ~chs;ADC1->CHSR |=  chs;exADC_TempSensorVrefintCmd(chs, ENABLE);  
    }
    
  3. 输出ADC电压波形

    int main(void)
    {MCUID = SetSystemClock(emSYSTICK_On, AppTaskTick);ADC_Configure_Init(ADC1);ADC_Function(ADC1);ADC_RegularChannelConfigure();ADC_Cmd(ADC1, ENABLE);BSP_ADC_GPIO_Configure(ADC1, 15);initUART1_IT(115200);float ADC_ConvertedValue; float warebuf[8] =  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};while (1) {ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(!ADC_GetFlagStatus(ADC1, ADC_IT_EOC));ADC_ConvertedValue = ADC_GetConversionValue(ADC1); warebuf[0] = (float)ADC_ConvertedValue;warebuf[1] = (float)ADC_ConvertedValue*(3.3/4096);vcan_sendware((uint8_t *)warebuf,sizeof(warebuf));for(int i = 0; i < 100000; i++){}}
    }
    
  4. 虚拟示波器显示

    tz_ADC_Wave

Code on Github

https://github.com/Miao-T/VirtualOscilloscope

山外多功能调试助手获取

https://download.csdn.net/download/weixin_42150654/86246725


http://www.ppmy.cn/news/543785.html

相关文章

万能模拟器eve-ng介绍

作为一名网络工程师&#xff0c;通过模拟器来搭建实验环境是必不可少的&#xff0c;主流的网络模拟器有如下几款&#xff1a;Packet Tracer是思科公司出的一款模拟器&#xff0c;只能模拟思科自己的设备&#xff0c;由于此款软件是纯软件模拟&#xff0c;所以思科设备的很多特性…

手机模拟加密门禁卡

目标&#xff1a;将门禁卡、考勤卡、会员卡、停车卡、电梯卡等等各种卡模拟进手机里&#xff0c;模拟后可用手机代替刷卡&#xff0c;无需root&#xff0c;不用电脑 背景介绍&#xff1a; 1、前言   目前&#xff0c;IC卡已被广泛应用于身份识别、金融消费、安全认证等领域。…

新能源电动汽车虚拟仿真教学软件 - 新能源汽车vr实训

新能源电动汽车虚拟仿真教学软件系统主要用于利用沉浸式体验学习新能源汽车的相关知识。系统共40个模块&#xff0c;分别介绍了电动汽车、混合动力汽车、燃料电池汽车、油气混合汽车的关键总成的组成、作用和工作原理&#xff0c;如电动汽车的“三电”&#xff0c;混动汽车的多…

超级万能计算机在线应用,超级万能计算器手机版

超级万能计算器是一款安装在手机上的万能计算器软件&#xff0c;包含了各种计算服务&#xff0c;科学计算、房贷计算和个税计算以及各种换算服务&#xff0c;能够让用户轻松搞定各种工作、生活和学习上的计算服务&#xff0c;使用方法简单&#xff0c;手机下载安装&#xff0c;…

手机数控模拟器安卓版_数控机床模拟器手机版下载-数控机床模拟器 安卓版v1.1.4-PC6手游网...

数控机床模拟器是一款好玩的休闲模拟游戏&#xff0c;游戏画面真实&#xff0c;玩家在游戏中可以了解机床&#xff0c;用机床打磨出你想要的物品&#xff0c;非常神奇好玩&#xff01; 游戏介绍 您可以在游戏中扮演床机械师。您可以简单的开始一个新项目&#xff0c;只需选择您…

模拟手机按键输入

常用物理键 keyevent 26 # 电源键 keyevent 82 # 菜单键 keyevent 3 # HOME 键 keyevent 4 # 返回键 keyevent 24 # 音量 keyevent 25 # 音量- keyevent 164 # 静音 媒体控制 keyevent 85 # 播放/暂停 keyevent 86 # 停止播放 keyevent 87 # 播放下一首 keyevent 88 # 播放上…

Andy - 又一款速度流畅的免费安卓 Android 模拟器 (支持手机无线控制电脑模拟器)...

随着 Genymotion、BlueStacks 等电脑上的 Android 模拟器流行起来之后&#xff0c;似乎很多人都发现在电脑上运行使用安卓APP软件、畅玩手机游戏确实很有乐趣。 今天我们又发现了一款全新免费的 Android 模拟器——Andy&#xff01;官方表示 Andy 将支持 Windows、Mac 以及 Lin…

手机模拟门禁卡 — 手机软件教程

一、软硬件准备 ※ 蓝牙门禁读卡器 蓝牙门禁读卡器方便操作&#xff0c;可以随身携带&#xff0c;内置锂电&#xff0c;摆脱有线束缚&#xff0c;价格上也比普通读卡器贵不了多少。不想用蓝牙读卡器&#xff0c;用有线读卡器也行&#xff0c;不想用读卡器&#xff0c;就用手机N…