/***********************************************************************************************************
* 函数名称: ADCSample()
* 输入参数: adcval
* 返回值  : 无
* 功    能: 对各个ADC通道轮流采样
************************************************************************************************************/
void ADCSample(ADC* adcval)
{static ADC2_Channel_TypeDef ADCChannel = ADC2_CHANNEL_2;      //ADC2_CHANNEL_2 = 0x02//static u8 time = 0; //按键通道检测次数//static u16 KeyADC = 0;u16 ADCTemp;ADCTemp = GetADCValue(ADCChannel);switch(ADCChannel){case ADC2_CHANNEL_6:        //电机1过流检测通道 PIN16if((M1Cmd==CmdUp)||(M1Cmd==CmdDown)||(M1Dir!=STOP)){if(M1ADCCnt < 40)       //M1ADCCnt = 0(初始化){ADCBuffer1[M1ADCCnt] = ADCTemp;M1ADCCnt++;}}else{M1CurTemp1 = 0;M1CurTemp2 = 0;M1CurTemp3 = 0;M1ADCCnt = 0;}adcval->M1Current = adcval->M1Current * 0.9 + ADCTemp * 0.1;    //低通滤波//adcval->M1Current = ADCTemp;    //低通滤波break;case ADC2_CHANNEL_5:        //电机2过流检测通道  PIN17if((M2Cmd==CmdUp)||(M2Cmd==CmdDown)||(M2Dir!=STOP)){if(M2ADCCnt < 40){ADCBuffer2[M2ADCCnt] = ADCTemp;M2ADCCnt++;}}else{M2CurTemp1 = 0;M2CurTemp2 = 0;M2CurTemp3 = 0;M2ADCCnt = 0;}adcval->M2Current = adcval->M2Current * 0.9 + ADCTemp * 0.1;    //低通滤波//adcval->M2Current = ADCTemp;    //低通滤波break;case ADC2_CHANNEL_7:        //系统过热检测通道 PIN15adcval->Temperature = adcval->Temperature * 0.9 + ADCTemp * 0.1;//adcval->Temperature = ADCTemp;break;case ADC2_CHANNEL_3:        //按键检测通道  PIN19 (该硬件无此功能)adcval->KeyADCValue = ADCTemp;    //无滤波break;     }if(ADCChannel < ADC2_CHANNEL_7)ADCChannel++;elseADCChannel = ADC2_CHANNEL_3;if(ADCChannel == ADC2_CHANNEL_4)ADCChannel = ADC2_CHANNEL_5;//if(ADCChannel == ADC2_CHANNEL_8)//  ADCChannel = ADC2_CHANNEL_9;
}
/***********************************************************************************************************
* 函数名称: GetADCValue()
* 输入参数: ADC_Channel,对应的ADC通道
* 返回值  : 该通道的ADC采样值
* 功    能: 获取指定通道的ADC采样值
************************************************************************************************************/
u16 GetADCValue(ADC2_Channel_TypeDef ADC_Channel)
{ADC2_Init(ADC2_CONVERSIONMODE_CONTINUOUS,ADC_Channel, ADC2_PRESSEL_FCPU_D4,\ADC2_EXTTRIG_TIM, DISABLE, ADC2_ALIGN_RIGHT, ADC2_SCHMITTTRIG_ALL, DISABLE);          //ADC时钟频率6M,连续采样模式ADC2_ConversionConfig(ADC2_CONVERSIONMODE_CONTINUOUS, ADC_Channel,ADC2_ALIGN_RIGHT);ADC2_ITConfig(DISABLE);   //禁止中断ADC2_Cmd(ENABLE);   ADC2->CR1 |= 0x01;;                   //启动ADC转换while(ADC2_GetITStatus()==SET);       //等待ADC转换结束ADC2->CSR &= 0x7F; ;                  //清除转换完成标志位return ADC2_GetConversionValue();     //返回ADC结果
}

电机驱动软件学习笔记——ADC采样电流、温度、按键值相关推荐

  1. 电机学习笔记 ADC dma 电流电压采集

    分析 在电机驱动电路中串入一个 0.02Ω.2W 的采样电阻,将电流信号 转换成电压信号,再经过隔离运放放大 8 倍后差分输出,使用普通运放将差分输出转换成单端输 出给 STM32 的 ADC 采样通 ...

  2. 嵌入式学习笔记——ADC模数转换器

    ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...

  3. 新唐芯片学习笔记——ADC

    新唐芯片学习笔记--ADC 概述 NuMicro®NUC029xAN 包含一个12位逐次逼近型模数转换器(SAR A/D转换器) ,包含8个输入通道:NuMicro®NUC029FAE 包含一个10位 ...

  4. 树莓派学习笔记——Python SQLite插入温度记录

    0 前言 本文使用python向SQLite数据库中插入树莓派温度数据,SQLite数据库中包含一张只包含三个字段的记录表--参数名称,时间和温度值.本文重点解释Python操作SQlite的具体方法 ...

  5. STM8学习笔记---ADC平均值采样和有效值采样算法分析

    目录 平均值采样: 采样数据分析: 采样时间分析: 有效值采样: 采样数据分析: 采样时间分析: 结论: 在开关电源中,电流采样是非常重要的.常用的电流采样计算方法有平均值采样法和有效值采样法.现将这 ...

  6. STM8学习笔记---ADC多通道采样

    STM8S003单片机ADC采样通道总共有5个,从AIN2---AIN6,多通道采样时需要将ADC转换设置为单次转换模式,每次切换采样通道后,需要重新初始化 ADC,采样结果在中断中读取. IO口初始 ...

  7. stm32学习笔记---ADC电压采集

    1.  ①电压输入范围 ADC 输入范围为:VREF- ≤ VIN ≤ VREF+.由 VREF-.VREF+ .VDDA .VSSA.这四个外部 引脚决定. 我们在设计原理图的时候一般把 VSSA ...

  8. 树莓派学习笔记——获取树莓派CPU温度

    0 前言 本文通过文件操作读取树莓派CPU温度,在linux系统中任何设备的操作都被抽象成为文件读写,通过读取/sys/class/thermal/thermal_zone0/temp文件中的内容便获 ...

  9. Mr.J-- jQuery学习笔记(七)--CSS类操作文本值操作

    不了解属性以及属性操作的同学可以看我之前的博客:Mr.J-- jQuery学习笔记(五)--属性及属性节点 下面demo 中btn用到的角标,之前写验证码动态强度测试时也用过同样方法:Mr.J--密码 ...

  10. matlab连通区边界_Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI...

    本博客主要记录我学习运用matlab进行一些基本的图像处理的一些笔记,如果有不当的地方,欢迎批评指正,一起学习,一起进步. 本篇是第一篇,只涉及到一些基本的操作,涉及到的知识点如下: 1.二值化 2. ...

最新文章

  1. 排序算法之——优先队列经典实现(基于二叉堆)
  2. php 登录 linux服务器,如何实现linux系统远程登录到linux服务器
  3. 云炬60s看世界20211125
  4. iOS开发HTTPS实现之信任SSL证书和自签名证书
  5. oracle vertica性能对比,测试Vertica性能
  6. 类型转换与类型断言之间的区别
  7. 查询工资最低的3名员工的职工工号、姓名和收入_@打工人 | 关于工资条,这6个常识必须掌握,事关你的权益...
  8. VIM插件——vimplus安装(centos 7)
  9. cocos2d-x-3.x 场景(3)场景切换特效
  10. 转载一篇过来人谈的大学期间关于课外学习的意见lt;出自左飞老师笔记gt;
  11. 使用计算机管理文件教后反思,《管理计算机中的文件》教学设计
  12. python 批量处理图片
  13. vue项目的导出功能
  14. 博林格林大学计算机排名,美国传媒研究生排名简述
  15. 超详细:将iPhone中音乐导出到电脑里的简单方法(完美支持最新iOS15.2系统)
  16. java保存map_Java之map
  17. Python实现梯度下降
  18. H3C交换机常用命令汇总
  19. ARM CPU性能优化:FP32 、FP16 和BF16区别
  20. 数商云:以数字化全面促进传统产业升级,纺织行业最大限度实现精益管理

热门文章

  1. 浅谈unicode字符集及编码方式
  2. matlab模板图像匹配,基于Matlab 图像匹配――模板匹配
  3. VGS--网络三维互动软件技术
  4. spring的核心模块
  5. Qt 打印文档(PDF)
  6. linux终端 快捷键
  7. java串口rxtx_Java串口操作RXTX
  8. android转移数据到苹果手机号码,苹果电话号码怎么转到新手机(简单教你两招轻松搞定)...
  9. 如何把多个pdf文件合并成一个?
  10. IDEA引入JDK/jar包无效、java 文件灰色右下角橙色java图标显示等问题解决办法