使用RT-Thread的线程获取ADC采样数据,删除“按键的外部中断内容”;需要说明测量时间、数据处理

m0_61959355 2021-11-20 15:24:13

使用RT-Thread的线程获取ADC采样数据,删除“按键的外部中断内容”;需要说明测量时间、数据处理

...全文
983 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_59085809 2023-01-04
  • 打赏
  • 举报
回复

已看过博主的文章,很不错的内容,干货满满,期望师傅能输出更多干货,并强烈为师傅分享自己的知识点赞

另外,如果可以的话,期待师傅能给正在参加年度博客之星评选的我一个五星好评,您的五星好评都是对我的支持与鼓励:https://bbs.csdn.net/topics/611387568

点赞五星好评回馈小福利:抽奖赠书 | 总价值200元,书由君自行挑选(从此页面参与抽奖的同学,只需五星好评后,参与抽奖)

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刷屏也能毫无感知延时的连续刷新。
智能夜灯 + 信息仪表(STM32F103C8T6 · RT-Thread Studio) 本项目基于 RT-Thread(STM32F103C8T6)实现“智能夜灯 + 信息仪表”: 自动感知环境明暗,黑暗自动点亮夜灯;明亮熄灭 进入/退出黑暗时蜂鸣器提示音(可关闭/手动控制) OLED 显示系统信息与当前状态 串口 MSH 命令在线配置(自动/取反/蜂鸣器) 硬件清单 STM32F103C8T6 小系统板 ×1(SWD:ST-Link) CH340 串口模块 ×1(与 USART1 相连) 0.96 寸 OLED(SSD1306,I2C) ×1 有源蜂鸣器(低电平触发) ×1 光敏传感器 ×1(支持数字型或模拟 LDR 分压到 ADC) LED ×10(本项目默认使用板载 LED PC13 作为夜灯指示) 连接与引脚(默认) OLED(I2C 软件模拟) PB8 → SCL PB9 → SDA VCC → 3.3V,GND → GND 蜂鸣器(低电平响) PB12 → 蜂鸣器负端(或驱动管基极/栅极) 蜂鸣器正端 → 3.3V(电流>20mA 建议加三极管+二极管) 光敏传感器(数字型开关量) PB13(上拉输入) 夜灯 LED(板载) PC13(低电平点亮) 串口(CH340) USART1 115200 8N1(默认 PA9/PA10) 如需修改引脚,可在 applications/main.c 头部通过宏覆盖: #define NIGHT_LED_PIN GET_PIN(C, 13) // 在对应驱动中也可覆盖: // #define BUZZER_PIN GET_PIN(B, 12) // #define LIGHT_SENSOR_PIN GET_PIN(B, 13) 主要功能与线程划分 sensor_thread采样光敏输入(优先 AD

907

社区成员

发帖
与我相关
我的任务
社区描述
在 RT-Thread 嵌入式开源社区,交流问题,我们一起学习技能,分享经验,发展职业前途,打造嵌入式开发者的乐园!
mcu开源 企业社区
社区管理员
  • RT-Thread物联网操作系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
RT-Thread物联网操作系统社区希望打造一个开发者学习交流的平台,在这里提供代码实例、应用案例、技术文档、开发技巧等。进官方交流群,欢迎加小师弟微信:rtthread2020

试试用AI创作助手写篇文章吧