1. 平台说明

基于STM32F103ZET6芯片最小系统 + TFT液晶屏。
用到了:STM32内部ADC,DAC,DMA,FSMC等等。。

2. 基本原理

(1). 用STM32芯片内部的AD连续采样
(2). 用DMA传送到数据缓冲区
(3). 把采样结果转化为液晶屏上的坐标位置
(4). 在液晶屏上面画出来波形
(5). 回到(1)
一言概之,采样&画图。

3. 结果展示

这个三角波是用STM32内部的DAC产生。

4. 遇到的问题

(1). 闪屏问题
问题描述:更新波形时候闪屏严重。
原因:一次重画,需要经历三次过程,首先清空波形图所在矩形,然后画波形坐标的格子(方便查看电压大小),最后画波形,因为刷屏速度本身不快,所以刷三遍后,闪屏很严重。
想到了三种解决方法:在重画之前,先进行预处理,处理方式:
a方式: 每次先处理一条竖线上的数据,然后画一条竖线,处理包括刷屏,格子,波形。这样处理一条,画一条,一次刷屏即可完成重画。
b方式:开辟一块与屏幕像素数相同的缓冲区(16位),缓冲区与屏幕坐标一一对应,每次刷屏操作都是修改缓冲区,当完成所有操作,然后再把缓冲区内容画到屏幕上。
c方式:每次刷屏仍需三次操作,不过,之前是针对整个屏幕,而现在针对一条线,每次先画完一条竖线,然后再画完下一条。
理论上来说,b方法效果最好,操作也较简单。c方式效果相对最差,但操作方法最简单。
b方式只是空想,空间上不符合现实。对于单片机而言,RAM本就不多。假如使用320*240屏,一共76800个像素点,每个像素点用RGB565的话,一个点需要两个字节,那一共就是150KB。想法不错,但是严重脱离群众。
a方式可行,但是数据预处理也比较麻烦,只比c方式好了一点点,因此除非要求特高。。。
所以采用c方式,效果也不错,没有明显的闪屏了。
(2). DMA问题
问题描述:DMA连续传送时,在画波形时数据可能部分被修改。而单次传输,如何快速重启DMA?
解决方法(DMA重启传输): DMA初始化时选择单次传输,传输过程中,BufferSize会改变,实测数据位宽也改变了。因此先关闭DMA,然后重新设置BufferSize和数据位宽,再开启DMA就好了。
代码:
   DMA_Cmd(DMA1_Channel1, DISABLE);DMA_SetCurrDataCounter(DMA1_Channel1,n);DMA1_Channel1->CCR &= 0xFFFFF0FF;DMA1_Channel1->CCR |= 0x00000900;  DMA_Cmd(DMA1_Channel1, ENABLE);

5. 功能拓展

自己焊接了几个按键,可以实现暂停,调节时间宽度的功能。调节时间宽度,通过改变ADC采样时间来修改,ADC共有8种采样时间,因此可以调节8个时间宽度。
代码比较长,内容也比较多,所以不能细细描述。
有兴趣的可以去下载代码:http://download.csdn.net/detail/u013771867/9548642

基于STM32的简单数字示波器相关推荐

  1. ARM开发(9)基于STM32的简单四则运算计算器

    基于STM32的简单四则运算计算器 一 计算器原理: 1.1 本实验实现基于STM32的简单四则运算计算器 1.2 实验思路:理解计算器原理(按键扫描,字符实时显示,运算表达式计算,浮点数转字符串,字 ...

  2. 基于STM32的嵌入式数字示波器设计

    目录 2系统方案设计 6 2.1 数字示波器的工作原理 6 2.2 数字示波器的重要技术指标 6 2.3 系统方案论证与比较 8 2.4 系统性能指标设计 9 3 系统硬件设计 12 3.1 耦合电路 ...

  3. 基于stm32的简单小项目_适合小白做的创业3个小项目,简单上手

    现在每一位为了能够让自己和家人过上更好地生活,都会不满足于现状的单方面地工作,想要通过创业来改变如今的局面,这种想法也是好的,但是我们需要知道想要创业,并不是那么的容易,需要有一定的技能和管理水平才能 ...

  4. 基于stm32智能风扇_意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验...

    "意法半导体与ST授权合作伙伴.仿真软件提供商Fieldscale合作,简化基于STM32微控制器(MCU)的智能设备的触控用户界面开发过程. " • Fieldscale SEN ...

  5. 最简单DIY基于STM32单片机的WIFI智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  6. 最简单DIY基于STM32单片机的蓝牙智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...

  7. 最简单DIY基于STM32的远程控制电脑系统②(无线遥杆+按键控制)

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  8. 最简单DIY基于STM32的远程控制电脑系统①(电容触摸+按键控制)

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  9. 基于STM32的简易示波器项目(含代码)——HAL库

            前言:本文基于STM32的简易示波器项目,示波器作为嵌入式开发中必不可少的器件,其使用方式和工作原理是必须被掌握的.巧妙利用STM32可以实现媲美度非常高的示波器,本文中的简易示波器主 ...

最新文章

  1. 超干货!一位博士生80篇机器学习相关论文及笔记下载
  2. windows系统下Python环境的搭建及Selenium的安装
  3. wireshark抓包过滤指定的字节数据
  4. Spring之HelloWorld
  5. 顶级数据库行会Percona阿里全面解析下一代云数据库技术
  6. 数据库:MySQL相关知识整理,值得收藏!
  7. python计算计算时间_用Python向孩子介绍计算思维
  8. 2008北航计算机考研上机题,2006-2008北航计算机系考研真题(961).pdf
  9. curl and wget
  10. 你不可不知的HTML优化技巧
  11. 后台job批量停用和开启
  12. 一文搞懂MEMS传感器产业链(最全解析!)
  13. uni-app第三方插件 根据银行卡卡号查询银行类型和卡类型
  14. 连接远程电脑主机,pycharm远程调试代码方法
  15. 搞语音的有关音频的基础知识
  16. 2018年11月TIOBE编程语言排行榜,Java稳居第一
  17. 应用统计学与R语言实现学习笔记(五)——参数估计
  18. 本经阴符七术——盛神法五龙
  19. 梆梆安全的金砖梦想:安全联结世界
  20. Android人生整理第二章:Java编程第一节-对象导论

热门文章

  1. 无人机,在印度将被禁飞
  2. stm_aix stm_bpx stm_bm stm_ai stm_bp 参数说明
  3. EasyClick 原生连载四十
  4. c++ vs2012 使用 zint 生成条形码
  5. 网络诊断提示:远程计算机或设备将不接受连接
  6. MD5加密和解密,可作为工具类模块保存
  7. python画资本市场线_金融学笔记:CAPM,从资本配置线 CAL、资本市场线 CML,到证券市场线 SML...
  8. matlab 绘制有效前沿和资本市场线
  9. 三星android同屏,智能交互 同屏双窗口多任务
  10. matlab绩点计算程序_运用MATLAB实现学分绩点计算的报告