9544|14

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

双ADC同步规则转换问题!!! [复制链接]

此模式有没有人用过?有没有发现过什么问题?

我的程序主要设置内容:
转换通道:IN2(8通道全部由ADC1转换)和IN3(8通道全部由ADC2转换)
转换触发:全设为SWSTART,软件程序出发
间断模式,DISCNUM[15:13]=111(CR1),即8个通道
序列长度,L[3:0]=D[23:20]=7(SQR1),总长度为8
ADC无中断
DMA传输数据 DMA 数据长度,CNDTR=8;数据格式:32位到32位

问题1:实际转换是4个数据(DMA完成传输仅一半,CNDTR余4),why?
问题2:在RVMDK(3.23版)Debug,为何只看到ADC1的数据(低16位),而ADC2没有(ADC2数据寄存器实际有数据,仿真输入),RVMDK的问题?还是程序设置问题?
此帖出自stm32/stm8论坛

最新回复

触发用的信号设置好就行了,外部不需要连接  详情 回复 发表于 2012-10-13 20:02
点赞 关注
 

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

补充说明

1. ADC2和ADC1的各项设置基本是相同的
2. 按照以上设置,硬件运行是不对的--至少DMA传输未结束

此帖出自stm32/stm8论坛
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

STM32固件库中有双ADC同步规则转换的例子

 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 

害死呀人不要钱

根据"xxxmap.h"的ADC定义,见如下,ADC1~ADC3规则转换数据都有独立的地址ADC_TypeDef.DR,ADC DR的偏移地址为4CH,基地址如下:
#define ADC1_BASE             (APB2PERIPH_BASE + 0x2400)
#define ADC2_BASE             (APB2PERIPH_BASE + 0x2800)
#define ADC3_BASE             (APB2PERIPH_BASE + 0x3C00)
按照ST说明,ADC2数据在ADC1.DR的高16位上,可以这么做,但地址差的远呢.仿真是得不到的,实际如何未知.RVMDK按照驱动库做,没有错误.
从(ADC2_BASE+4CH)可以得到ADC2转换的数据,各位可以验证,这也可以解释为何从(ADC1_BASE+4CH)(设置为32位数据)上得不到ADC2的数据.既然如此,ADC2的双ADC同步规则转换与DMA传送功能自然无法实现.




/* Exported types ------------------------------------------------------------*/
/******************************************************************************/
/*                         Peripheral registers structures                    */
/******************************************************************************/

/*------------------------ Analog to Digital Converter -----------------------*/
typedef struct
{
  vu32 SR;
  vu32 CR1;
  vu32 CR2;
  vu32 SMPR1;
  vu32 SMPR2;
  vu32 JOFR1;
  vu32 JOFR2;
  vu32 JOFR3;
  vu32 JOFR4;
  vu32 HTR;
  vu32 LTR;
  vu32 SQR1;
  vu32 SQR2;
  vu32 SQR3;
  vu32 JSQR;
  vu32 JDR1;
  vu32 JDR2;
  vu32 JDR3;
  vu32 JDR4;
  vu32 DR;
} ADC_TypeDef;
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

5
 

同步规则模式原文

同步规则模式
此模式在规则通道组上执行。外部触发源来自ADC1的规则组多路器(由ADC1_CR2寄存器的EXTSEL[2:0]选择)。给ADC2提供同步触发。
注意: 不要在2个ADC上转换相同的通道(如果转换两个ADC的相同通道,不可能提供重叠的采样时间)。
在ADC1或ADC2的转换结束时:

产生一个32位DMA传输请求(如果设置了DMA位),传输到SRAM的32位ADC1_DR寄存器的上半个字包含ADC2的转换数据,低半个字包含ADC1的转换数据。


见参考手册 123/524页

此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 

楼主能够说明白一些吗?

                                 请注意手册(下图)中10.9节的最后一句话:
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 

我的简单问题:从ADC1的DR地址上得到ADC2的数据吗?

原文这些说明我已经从多角度试验了n次了,反正从ADC1的DR地址(尾数244CH)上以32位方式得不到ADC2的数据,只有从ADC2的DR地址(尾284CH)可以得到.由于程序仍在调试,实际芯片运行能否得到,待验证.

ADC转换序列长度的定义跟DMA数据传输长度的配合问题,说的也不够清楚,但不是关键所在,可以解决.
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

8
 

你看过STM32固件库里的例程

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

9
 

ADC数据,矛盾的地址描述

谢谢提醒,ST这个例程看过了,对应控制寄存器查过,没有发现与自己有不同见解的地方.原例程是个扫描连续双ADC模式,我设成这个模式,RVMDK的调试模式,在ADC1的DR上也得不到ADC2数据.实际片上能否得到,不好说.

从ST英文版参考手册 177/679页ADC寄存器地址映像看,ADC2的数据应该在ADC1数据的高一位地址上,但从驱动库的定义看,ADC2的数据地址却是(ADC2_BASE+0x4C),实际在这个地址上也可以得到ADC2的数据,驱动库对ADC2数据地址的定义没错.

这是个矛盾的表述,所以,只有用STM32内部硬件来解释了.
此帖出自stm32/stm8论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

10
 

不要纸上谈兵,你可以把提供的例程下载到开发板上试验

                                 如果有什么问题再来谈是否矛盾。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

11
 

只有用STM32内部硬件来解释ADC

                                 但愿没问题。俺没开发板,没有仿真头,只有一根下载线,一块工程板,底层程序仅用st的影像头库,程序近万行,纸上谈兵又怎样?
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

12
 

多看看例子

                                 例子正确显示如何双ADC情况下,让高16位显示ADC2结果.注意一下DMA设置成32位传输,如果还是按16位传输高位可能没有
此帖出自stm32/stm8论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

13
 

STM32外部触发ADC转换的问题

使用TIM1的通道2触发转换ADC规则通道3,对应的管脚为PB14   和  PA3 , 请问硬件上这两个管脚怎么接啊
此帖出自stm32/stm8论坛

点评

触发用的信号设置好就行了,外部不需要连接  详情 回复 发表于 2012-10-13 20:02
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

14
 

STM32 同步规则模式

其他都像固件库的程序设置一样的,

关键是最后启动的时候ADC_SoftwareStartConvCmd(ADC1, ENABLE);这条代码设置了CR2的两个位,位22 SWSTART 和 位20 EXTTRIG,

这样直接启动ADC1的规则通道转换   同时会自动触发启动ADC2的转换。
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

15
 

回复 13楼 yuanwei_guo 的帖子

触发用的信号设置好就行了,外部不需要连接
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表