打印

问个关于STM32的ADC的问题

[复制链接]
3260|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aueven|  楼主 | 2010-6-24 16:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
现在有3个AD通道,隔一段时间就要刷新一次,但读3个通道的时间间隔要很短。我的想法是把这3个通道设置为注入模式。然后设置ADON位,使它们连续的采样,并使用扫描模式。这样我什么时候想读,就直接读相关的注入数据寄存器就行了。参考手册也说这样做可以。
“扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置,ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。 如果设置了DMA位,在每次EOC后,DMA控制器把规则组通道的转换数据传输到SRAM中。而注入通道转换的数据总是存储在ADC_JDRx寄存器中”。“在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。”
但我实际上做的时候用扫描模式+CONT位+ADON 注入通道根本没触发。是不是注入通道必须外部触发?
沙发
IJK| | 2010-6-24 16:31 | 只看该作者
不用注入模式,只用扫描模式+DMA 感觉就够了。

使用特权

评论回复
板凳
香水城| | 2010-6-24 16:34 | 只看该作者
看到这段描述了吗:

STM32_Injected_Channel_Management.GIF (31.59 KB )

STM32_Injected_Channel_Management.GIF

使用特权

评论回复
地板
aueven|  楼主 | 2010-6-24 17:15 | 只看该作者
我已经反反复复看了这几段话超过10次了,也写了程序,利用keil的软件仿真仿真过,注入数据寄存器里的数始终是0。

使用特权

评论回复
5
香水城| | 2010-6-24 17:39 | 只看该作者
那么固件库中这个例子肯定适合你:

STM32_Injected_Channel_Example.GIF (184.82 KB )

STM32_Injected_Channel_Example.GIF

使用特权

评论回复
6
aueven|  楼主 | 2010-6-24 18:04 | 只看该作者
请问在哪下载?

使用特权

评论回复
7
sinadz| | 2010-6-24 21:08 | 只看该作者
ST网站上应该有的

使用特权

评论回复
8
yybj| | 2010-6-24 21:17 | 只看该作者
香主直接给个下载的链接吧

使用特权

评论回复
9
香水城| | 2010-6-25 08:31 | 只看该作者
学习STM32,不知道在哪里下载固件库,说明你还没有入门:

STM32F10x_StdPeriph_Lib - ARM-based 32-bit MCU STM32F10x Standard Peripheral Library

使用特权

评论回复
10
aueven|  楼主 | 2010-6-25 08:59 | 只看该作者
不好意思,习惯了直接对寄存器操作。而且如果STM32的参考手册写得很清楚的话,也根本不需要去看什么固件库。

使用特权

评论回复
11
txcy| | 2010-6-25 10:45 | 只看该作者
直接对寄存器操作,可读性会很差的

使用特权

评论回复
12
yzl624358| | 2010-6-25 15:20 | 只看该作者
谢谢共享,下载了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

29

帖子

0

粉丝