加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
登录/注册
即日起,您可以获得Xcelerator用户身份解锁海量技术资料

【RT-Thread作品秀】EE-Lab

2020/12/20
428
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
相关方案
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【RT-Thread作品秀】EE-Lab

作者:卿俊成

 

 

概述

随着集成电路的不断发展,电子测量仪器分别向着高性能和微型化不断发展。本作品基于微型化便携式需求,设计一个集成数字电源信号发生器示波器的便携式电子测量仪器。

开发环境

硬件:ART-Pi开发板、2.8‘SPI TFT屏幕(ILI9341)、AD9833模块、自制扩展板(由于设计失误,无法使用)

 

RT-Thread版本: RT-Thread Nano(V3.1.3)

 

开发工具及版本:STM32CubeMX(V6.1.0)、HAL库(H7_V1.8.0)、Keil/MDK(V5.33.0.0)

RT-Thread使用情况概述

本应用使用Nano版RT-Thread,因此只使用了内核部分。

本应用使用信号量作为DMA分批通过SPI刷屏的屏幕数据,在中断中释放信号量,用于分批刷屏的同步。

本应用使用Finsh组件作为无GUI情况下的数据查看方式,及命令行方式对AD9833模块及定时器的操作方式。

硬件框架

电脑端通过Putty软件与ART-Pi开发板的Finsh组件通信,实现控制功能。

SPI TFT屏幕模块由开发板的SPI4总线控制,作为波形显示界面。

AD9833信号发生模块由开发板通过模拟SPI控制,作为信号发生器。

信号测试夹用于外部电压输入,作为示波器的源信号。

 

由于自制扩展板存在问题,不在此介绍,但附上立创eda工程的在线链接: https://oshwhub.com/OneToken/art-pi-ee-tools

软件框架说明

Finsh组件通过与电脑端交互,控制TIM15的预装载值,达到通过控制TIM15触发DMA_ADC转换的采样频率,并在显存对应位置打点,实现示波器功能。同时还可以控制AD9833产生频率不同的三角波、正弦、方波

屏幕的刷新,由DMA1通道0将内部预先分配好的显存数据搬运至SPI移位寄存器,从而发送至ILI9341,实测频率60Mbit的情况下可以完美刷新,实现了高速刷屏的功能。

软件模块说明

DMA传输ADC数据框图

通过定时器15触发DMA1通道1将ADC数据循环采集至指定内存处,实现示波器数据采集功能。

SPI通过DMA方式刷屏功能框图

理想情况下的刷屏方式

受到DMA一次传输数据数目uint16_t也就是65535的限制,无法一次性完成显存刷新至屏幕,因此分成三个数据包,依次顺序传输,使用信号量作为同步信号。

最终实现的刷屏方式

演示效果

演示视频: 

比赛感悟

通过本次比赛,极大程度上熟悉了H7系列开发板,特别是大量参考了安富莱提供的教程,了解了H7的多域设计,RAM的分布式设计以及指定存储位置,DMA通信只能用于特定的RAM区和特定的外设之间,若RAM区域使用最高性能的DTM区,则大部分DMA通信都无法使用。在决定使用RT-Thread Nano之前,尝试使用RT-Thread完整版,按照完整版的流程注册SPI设备并且使用时,发现无法驱动SPI液晶屏,使用逻辑分析仪抓取信号也没啥问题,因此才换成RT-Thread Nano。

通过本次的小作品,比较深入的理解了RTOS的作用,特别是用于线程同步时,阻塞下来,等待中断释放信号量的方式,使得分段DMA SPI刷屏也能毫无感知延时的连续刷新。

  • 代码地址.txt
  • RT-Thread作品.pdf
    描述:ART-Pi
点赞
评论
分享
加入交流群
举报

相关推荐

电子产业图谱