OpenEdv-开源电子网

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

一个adc怎么实现接收2个信号输入

[复制链接]

20

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2016-7-14
在线时间
49 小时
发表于 2016-7-18 16:59:44 | 显示全部楼层 |阅读模式
1金钱
是个新手,问:一个adc在配置io口(历程上的寄存器写法,不会库函数写法)时,假如配置一个PA口为多通道AD输入的时候,在硬件电路上,我该怎么连接呢??把两个输入信号的杜邦线都接在一个PA口上么?那板子接收的信号又该怎么区分呢?。。。。。很不解啊

最佳答案

查看完整内容[请看2#楼]

这是原子的代码,一次采样一个通道数据 [mw_shl_code=c,true]//获得ADC值 //ch:通道值 0~3 u16 Get_Adc(u8 ch) { //设置指定ADC的规则组通道,一个序列,采样时间 ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采样时间为239.5周期 ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能 while(!ADC_GetFlagStatus(ADC1, ADC ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-7-18 16:59:45 | 显示全部楼层
这是原子的代码,一次采样一个通道数据
[mw_shl_code=c,true]//获得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)   
{
          //设置指定ADC的规则组通道,一个序列,采样时间
        ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );        //ADC1,ADC通道,采样时间为239.5周期                                      
  
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //使能指定的ADC1的软件转换启动功能       
         
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

        return ADC_GetConversionValue(ADC1);        //返回最近一次ADC1规则组的转换结果
}[/mw_shl_code]
所以,如果不是要求严格的同时采样,对延迟要求不高,那么很简单:只要初始化ADC的两个采样通道和相应IO口,然后轮流调用这个函数采样就行了
如果要求实时性高,那就需要使用扫描模式或者多个ADC,最好加上DMA。
如果LZ的意思是硬件原因只能使用一个IO口,那么只能外加多路选择器或者继电器了
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1702
金钱
1702
注册时间
2012-5-10
在线时间
439 小时
发表于 2016-7-18 17:13:02 | 显示全部楼层
你是要一个adc采集多个信号?
回复

使用道具 举报

20

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2016-7-14
在线时间
49 小时
 楼主| 发表于 2016-7-19 08:41:47 | 显示全部楼层
xsx127 发表于 2016-7-18 17:13
你是要一个adc采集多个信号?

以我目前的水平好像很难办,现在想知道开2个adc怎么写,,因为我不会写库函数版本的语言,所以网上的都看不懂
回复

使用道具 举报

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
发表于 2016-7-19 08:48:41 | 显示全部楼层
一个ADC有多个通道  每个通道对应不同的IO口
回复

使用道具 举报

28

主题

176

帖子

0

精华

高级会员

Rank: 4

积分
738
金钱
738
注册时间
2014-7-1
在线时间
180 小时
发表于 2016-7-19 09:04:44 | 显示全部楼层
对,STM32有多个ADC,每个ADC又有多个通道,每个通道对应一个IO口,你完全可以使用两个通道去实现
回复

使用道具 举报

6

主题

305

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2876
金钱
2876
注册时间
2016-7-17
在线时间
404 小时
发表于 2016-7-19 09:34:48 | 显示全部楼层
资源很紧张吗?多用几路A/D口不行吗?或者加个继电器切换两路信号,继电器由另一路I/O控制。
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-7-19 09:41:07 | 显示全部楼层
,可以开2个通道的,楼主应该是因为没找到直接操作寄存器的多通道例子而不知道怎么配置。
楼主如果感觉自己直接配置寄存器配置不鸟2通道 的话,可以先下寄存器版本的,然后硬件调试,看看别人调试好的ADC和DMA的CR和中断使能那些寄存器的值,然后自己配置
回复

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2016-1-26
在线时间
150 小时
发表于 2016-7-19 09:43:08 | 显示全部楼层
看stm32具体芯片的引脚功能图,找出可以作为ADC的引脚,多通道输入就是你用了多个adc引脚,PA口有很多个引脚的,跟具体芯片有关系
回复

使用道具 举报

20

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2016-7-14
在线时间
49 小时
 楼主| 发表于 2016-7-19 15:14:49 | 显示全部楼层
憨厚诚实大叔 发表于 2016-7-19 09:41
,可以开2个通道的,楼主应该是因为没找到直接操作寄存器的多通道例子而不知道怎么配置。
楼主如果感觉自 ...

恩恩,据说开2个通道要用继电器切换,暂时不想考虑了,然后我现在正在努力调试2个adc一起用的情况,但是总不成功
回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
发表于 2016-7-19 15:29:52 | 显示全部楼层
一个GPIO口去测多个电压,不是手动换电压点了吗?可以一个ADC多个IO口去测量多个电压点啊!多通道模式,我也刚学没试过,貌似里面ADC的参数要改改
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 03:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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