OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2528|回复: 1

STM32F103(战舰)ADC多通道dma采集

[复制链接]

32

主题

236

帖子

0

精华

高级会员

Rank: 4

积分
993
金钱
993
注册时间
2017-8-11
在线时间
137 小时
发表于 2020-3-26 17:15:21 | 显示全部楼层 |阅读模式
本帖最后由 笨鸟想飞 于 2020-3-27 13:50 编辑

STM32F103(战舰)ADC多通道采集这个版块,网上资源很多,论坛也有很多

简单得汇总了一下,同时也注释了一些通俗的讲解。
因为最近刚好有各项目的一部分涉及到多通道ADC同时采集,
所以刚好用原子哥的demo写法改了一个版本,希望新入门的同学容易读懂



废话不多说,直接讲解。
其实单通道ADC转换变为多通道,很简单。(战舰ZET芯片有多达21个12位的ADC通道哟,想更多ADC可以外接多通道硬件电路实现,当然追求时效性跟低功耗的话,不建议单机接太多)
无非新增加两步:1、使能对应的更多的ADC引脚  2、循环体更新打印(存储)数值

复制代码

1、使能,在adc.c添加
更改通道数量
  1. ADC_InitStructure.ADC_NbrOfChannel = 12;        //顺序进行规则转换的ADC通道的数目
复制代码
2.main.c循环体打印
  1. for(k=0;k<12;k++)
  2. {
  3. LCD_ShowxNum(280,30+60*k,ADC1ConvertedVoltage[k],4,24,0); //显示ADCC采样后的原始值       
  4. Voltage[k] = ADC1ConvertedVoltage[k]*3.3/4096;       
  5. i=Voltage[k]; //赋值整数部分给adcx变量,因为adcx为u16整形
  6. LCD_ShowxNum(278,60+60*k,i,1,24,0); //显示电压值的整数部分,3.1111的话,这里就是显示3
  7. Voltage[k]-=i; //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
  8. Voltage[k]*=1000; //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
  9. LCD_ShowxNum(302,60+60*k,Voltage[k],3,24,0X80); //显示小数部分(前面转换为了整形显示),这里显示的就是111.
  10. }
复制代码




我写的是12通道,以此类推,多个通道都一样的操作

小白傻瓜帖,只求新手少走弯路,同时也为自己做一个技术笔记demo!!!


12通道ADC初版.zip

3.83 MB, 下载次数: 504

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3625
金钱
3625
注册时间
2019-8-14
在线时间
1054 小时
发表于 2020-3-26 17:50:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 18:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表