问个关于STM32的ADC的问题

[复制链接]
3936|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
 楼主| aueven 发表于 2010-6-24 17:15 | 显示全部楼层
我已经反反复复看了这几段话超过10次了,也写了程序,利用keil的软件仿真仿真过,注入数据寄存器里的数始终是0。
香水城 发表于 2010-6-24 17:39 | 显示全部楼层
那么固件库中这个例子肯定适合你:
STM32_Injected_Channel_Example.GIF
 楼主| aueven 发表于 2010-6-24 18:04 | 显示全部楼层
请问在哪下载?
sinadz 发表于 2010-6-24 21:08 | 显示全部楼层
ST网站上应该有的
yybj 发表于 2010-6-24 21:17 | 显示全部楼层
香主直接给个下载的链接吧
香水城 发表于 2010-6-25 08:31 | 显示全部楼层
学习STM32,不知道在哪里下载固件库,说明你还没有入门:

STM32F10x_StdPeriph_Lib - ARM-based 32-bit MCU STM32F10x Standard Peripheral Library
 楼主| aueven 发表于 2010-6-25 08:59 | 显示全部楼层
不好意思,习惯了直接对寄存器操作。而且如果STM32的参考手册写得很清楚的话,也根本不需要去看什么固件库。
txcy 发表于 2010-6-25 10:45 | 显示全部楼层
直接对寄存器操作,可读性会很差的
yzl624358 发表于 2010-6-25 15:20 | 显示全部楼层
谢谢共享,下载了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

29

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部