STM8使用pwm接口调试GDS06灰尘传感器

news2025/2/24 3:15:02

背景

刚好有项目使用GDS06这款传感器,这里简单做个记录。

GDS06接口如下,这里支持串口和PWM的输出到MCU,由于项目采用STM8S003F3P6,资源极其有限。

所以硬件设计的时候,就考虑采用PWM的接口方式,这样只是消耗掉STM8S003F3P6一个管脚而已。

 原理图

如下图所示CN7连接粉尘传感器,PA3对应GDS06的对应管脚PWM 

PWM 输出
传感器通过 PWM 口(第 4 脚)输出 PWM 信号,该 PWM 周期为 1 秒,按低电平的宽度计算灰尘浓度值。引脚输出的脉冲宽度对应粉尘浓度的平均值。
低脉冲时间与粉尘浓度的关系:1ms = 1ug/m3
例如低电平宽度为 100 ms,则对应灰尘浓度为 100 ug/m3。 浓度输出范围为 1~999 ug/m3。 该浓度值内部进行了软件滤波处理,跳动幅度相对较小。

PWM 通信
传感器通过 PWM 口输出 PWM 信号,按低电平宽度计算灰尘浓度值。
PWM 输出周期: 1 秒
测量值输出范围: 1~999 ug/m³
低电平与测量值对应关系:测量值(ug/m³)= 低电平时间(毫秒)

软件设计

STM8S003F3P6使用PA3管脚,采用定时器2捕获模式,配置如下图所示


u16 gds06_value;
u8  gds06_Sta;

//红外遥控初始化
//设置IO以及TIM2_CH1的输入捕获
void GDS06_Init(void)    			  
{		

  /* Set PA.3 TIM2_CH3 pin */
  ///GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);
  GPIO_DeInit(GPIOA);//恢复指定端口
  GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);//设置PA3为浮空输入无中断

  TIM2_DeInit();
  /* Time base configuration */      
  //TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);
  //TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999);//2Mhz
  ///TIM2_TimeBaseInit(TIM2_PRESCALER_1, 1999);//1Mhz

  //TIM2_TimeBaseInit(TIM2_PRESCALER_16, 10000 - 1);//1Mhz
  TIM2_TimeBaseInit(TIM2_PRESCALER_16384, 2000 - 1);//976 hz
  TIM2_ARRPreloadConfig(ENABLE);
  //TIM2_ClearFlag(TIM2_FLAG_UPDATE);//清除更新标志
  TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);//允许更新/溢出中断
  TIM2_Cmd(ENABLE);//开启定时器
  enableInterrupts(); //开启中断
  /* Prescaler configuration */
  ///TIM2_PrescalerConfig(TIM2_PRESCALER_2048, TIM2_PSCRELOADMODE_IMMEDIATE);
  //TIM2_ICInit(TIM2_CHANNEL_3, TIM2_ICPOLARITY_RISING, TIM2_ICSELECTION_DIRECTTI, TIM2_ICPSC_DIV1, 3);
   
  TIM2_ICInit(TIM2_CHANNEL_3, TIM2_ICPOLARITY_FALLING, TIM2_ICSELECTION_DIRECTTI, TIM2_ICPSC_DIV1, 0);
  TIM2_ITConfig(TIM2_IT_CC3 , ENABLE);//中断配置与使能函数
  TIM2_ClearITPendingBit(TIM2_IT_CC3);
  TIM2_ClearFlag(TIM2_FLAG_CC3);
  //TIM2_CCxCmd(TIM2_CHANNEL_2, ENABLE);//输入捕获/比较输出使能
	
}

 定时器2的中断如下

主要是探测出来低电平的长度

 //定时器2输入捕获中断服务程序	 
 INTERRUPT_HANDLER(TIM2_CAP_COM_IRQHandler, 14)
 {
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
  BitStatus bs;
  bs = GPIO_ReadInputPin(GPIOA, GPIO_PIN_3);//读PA3的输入电平状态
  //if(TIM2_GetITStatus(TIM2_IT_CC3)==SET) //处理捕获(CC1IE)中断
  	  
  if(bs)//上升沿捕获
  {
      gds06_value = TIM2_GetCounter();//读取CCR2也可以清CC2IF捕获标志位
      TIM2_OC3PolarityConfig(TIM2_OCPOLARITY_LOW); //CC1P=0	设置为上升沿捕获
      //gds06_Sta |= 0X10;					//标记上升沿已经被捕获
  }else //下降沿捕获
  {
      TIM2_OC3PolarityConfig(TIM2_OCPOLARITY_HIGH);		//CC1P=1 设置为下降沿捕获
      TIM2_SetCounter(0x0000);	   	//清空定时器值
  }				 		     	    					   
  TIM2_ClearITPendingBit(TIM2_IT_CC3);  //清除中断标志位 
 }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/561921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安科瑞有源电力滤波器的设计原理及应用前景

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要:该文介绍了有源电力滤波器的工作原理和基本控制方法,并阐述有源电力滤波器的现状及发展前景等等。 关键词:有源电力滤波器;谐波;工作原理;…

方案绞尽脑汁想不出?试试这款AI代写方案

一份计划方案,往往是工作进行下去的核心环节,需要考虑很多因素和变量,在某些情况下,可能没有足够的信息来制定有效的方案。这可能会导致需要额外的研究和调查,以便了解更多关于问题的信息,这将延长制定方案…

侧边拖拉功能

一、页面 <div class"resize-handle" mousedown"startResizing">⋮</div> 二、js data() {return {showSideBar: true,leftPaneWidth: 63, // 左侧区域的初始宽度isResizing: false, // 标记是否正在调整大小startX: 0, // 调整大小开始时的…

Spring AOP 中的切点是什么?如何定义切点?

Spring AOP 中的切点是什么&#xff1f;如何定义切点&#xff1f; 什么是切点&#xff1f; 在 Spring AOP 中&#xff0c;切点&#xff08;Pointcut&#xff09;是指一组连接点&#xff08;Join Point&#xff09;的集合。连接点是程序执行过程中的某个特定点&#xff0c;例如…

初识SpringMVC -- SpringMVC入门保姆级教程(一)

文章目录 前言一、初识SpringMVC1.认识SpringMVC2.SpringMVC入门案例3.SpringMVC开发的一般步骤4.入门案例涉及的知识点5.入门案例工作流程 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能…

阿里云服务器端口怎么打开?详细教程一步步

阿里云服务器端口怎么打开&#xff1f;云服务器ECS端口在安全组中开启&#xff0c;轻量应用服务器端口在防火墙中打开&#xff0c;新手站长以开通80端口为例来详细说下阿里云服务器端口开放图文教程&#xff0c;其他的端口如8080、3306、443、1433也是同样的方法进行开启端口&a…

双轮云台小车实现追踪彩色目标功能

1. 功能说明 在R216a样机上安装一个摄像头&#xff0c;本文示例将实现双轮小车通过二自由度云台自主寻找彩色目标的功能。 2. 结构说明 R216a样机主要是由一个 双轮小车 和一个 2自由度云台 组合而成。 3. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大…

CRM系统软件不好用有哪些原因?如何选择?

CRM系统的实施也会出现无法落地使用的情况&#xff0c;让CRM系统软件名存实亡。这不仅仅只是个例&#xff0c;很多企业即使投入了很大成本&#xff0c;也不能让CRM系统真正用起来。CRM系统软件用不起来&#xff0c;可以排查这三个原因&#xff0c;教你解决&#xff01; 1.操作…

简单粗暴实现el-input只允许输入数字

<el-input input"phoneNumberphoneNumber.replace(/[^0-9.]/g,)" v-model"phoneNumber" maxlength"11" > </el-input> 如果加入type"number"&#xff0c;会在输入框右侧出现这个恶心的东西 尽管可以使用样式来屏蔽掉 …

基于ArcGIS Pro、Python、USLE、R、INVEST模型等多技术融合的生态系统服务构建生态安全格局

目录 基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局 第一章 生态安全评价理论及方法介绍 第二章 平台基础 第三章 数据获取与清洗 第四章 基于USLE模型的土壤侵蚀评价 第五章 基于风蚀修正模型的防风固沙功能评估 第六章 水源涵…

联想集团财报:收入持续下滑,联想集团财务前景已恶化

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 联想集团2023财年第三季度财务业绩回顾 联想集团&#xff08;00992&#xff09;于2023年2月16日盘后公布了该公司2023财年第三季度的财报。 财报显示&#xff0c;联想集团的收入已经从2022财年第三季度的201.27亿美元下降到…

西门子PLC如何实现1主多从网口无线通讯

常规来说&#xff0c;多台plc要实现以太网无线连接&#xff0c;首先要先确定以太网线必须正确连接&#xff0c;并建立物理连接。然后需要在PLC端设置好IP地址&#xff0c;以使不同PLC以相同协议可以实现通信交流。最后是建立PLC端数据采集及交换系统&#xff0c;要求在PLC端设置…

一篇必读的物联网平台物模型开发指南,为你解锁未来科技趋势

《高并发系统实战派》-- 值得拥有 文章目录 一、什么是物模型&#xff1f;二、为什么要设计物模型&#xff1f;三、如何设计物模型&#xff1f;设备属性的设计设备服务的设计设备事件的设计 四、物模型案例五、不设计物模型会有什么影响&#xff1f;六、总结 设计物模型可以使物…

热烈欢迎CSDN副总裁邹欣老师入驻知识星球

重磅消息 CSDN 副总裁 邹欣 老师成功入驻知识星球 —— 英雄算法联盟&#xff0c;成为合伙人之一。 这将是未来几年内&#xff0c;IT界最震撼的一次合作&#xff01;我相信就算现在不是&#xff0c;将来必定是&#xff01; 当然&#xff0c;这对我来说也是一种极大的鼓舞&#…

C语言实现“队列“

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:分享数据结构之C语言实现"队列".各个接口分别分析…

回归预测 | MATLAB实现SSA-DELM和DELM麻雀算法优化深度极限学习机多输入单输出回归预测对比

回归预测 | MATLAB实现SSA-DELM和DELM麻雀算法优化深度极限学习机多输入单输出回归预测对比 目录 回归预测 | MATLAB实现SSA-DELM和DELM麻雀算法优化深度极限学习机多输入单输出回归预测对比效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 Matlab实现SSA-DELM和D…

突破极限:YOLO9000 论文解读 - 构建更好、更快、更强大的实时检测系统

YOLOv2 论文全篇完整翻译 摘要 我们介绍了YOLO9000&#xff0c;这是一种先进的、实时的目标检测系统&#xff0c;可以检测超过9000个物体类别。首先&#xff0c;我们对YOLO检测方法进行了各种改进&#xff0c;包括新颖的方法和借鉴自先前工作的方法。改进后的模型YOLOv2在标准…

港科夜闻|叶玉如校长在大湾区科学论坛主论坛发表「为应对人口老龄化贡献大湾区力量」主旨演讲...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、叶玉如校长在大湾区科学论坛主论坛发表「为应对人口老龄化贡献大湾区力量」主旨演讲。她指出&#xff0c;中国已成为世界上老年人口最多、老龄化速度最快的国家之一&#xff0c;预计到2025年&#xff0c;65岁及以上人口3…

亚马逊云科技:点燃云原生数据库创新的星星之火

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近10年&#xff0c;全球数据库市场加速变革&#xff0c;云数据库尤其是云原生数据库成为整个数据库市场的关键变量。某种程度上&#xff0c;亚马逊云科技作为全球云原生数据库的领导者&#xff0c;具有行业风向标的价值。 近…

2023.5.19Redis和MongoDB安装

四种数据库设置 hbase(main):001:0> create student,Sname,Ssex,Sage,Sdept,course Created table student Took 2.4760 seconds > Hbase::Table - student hbase(main):002:0> list TABLE …