历史上的今天
返回首页

历史上的今天

今天是:2025年02月14日(星期五)

正在发生

2020年02月14日 | 深度解读STM32数据保存与毁灭

2020-02-14 来源:elecfans

一、认识ADC兼进一步看懂STM的库

ADC是多少位的?

12位

ADC有多少个?

1个、2个或多至3个,视不同的器件而不同;每个又有多个通道。

关于通道的名堂:

10.3.3 通道选择

有16个多路通道。可以把转换分成两组:规则的和注入的。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。

● 规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数写入ADC_SQR1寄存器的L[3:0]位中。

● 注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目必须写入ADC_JSQR寄存器的L[1:0]位中。


它们有什么区别:

不同的组转换后保存数据的地方不一样,产生的中断标志不一样。

在扫描模式下,规则组会有能力把各通道数据通过DMA传给SRAM,而注入组的数据总是存在在ADC_JDRx中。


还有其他的一些区别,这里暂不一一罗列。

ST为什么这么样来设计AD转换,肯定是有理由的,但是我不知道,因此,我也就难以深入地理解AD转换的各种模式。这也就是说,对于知识的理解,要把它放在其应用背景中去学习才能学得好。因此,其他知识积累得越多,学起来也就越快,这也就是所谓的“功底”问题。某人功底深厚,意味着他见多识广,遇到的事情多,能够很快找到处理某件事情的“原型”。当然,也有一些人抽象学习能力极强,就算找不到“原型”,他也能学得很好。基本上,这类人的科学素养更高一些,在工程师、工科类学生中并不多见。


闲话少说,下面来看怎么样来使用AD转换器?

以一段源程序为例分别来解读,同时进一步理解STM32中有关符号的含义,相信以后再读库源程序,定能更上一层楼。


为看得清楚一些,以下代码用一种颜色表示。

/* ADC1 开始准备配置*/

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

/*设置ADC-》CR1的19:16,确定ADC工作模式,一共有10种工作模式

#define ADC_Mode_Independent ((uint32_t)0x00000000) 0000:独立模式

#define ADC_Mode_RegInjecSimult ((uint32_t)0x00010000) 0001:混合的同步规则+注入同步模式

#define ADC_Mode_RegSimult_AlterTrig ((uint32_t)0x00020000) 0010:混合的同步规则+交替触发模式

#define ADC_Mode_InjecSimult_FasTInterl ((uint32_t)0x00030000) 0011:混合同步注入+快速交替模式

#define ADC_Mode_InjecSimult_SlowInterl ((uint32_t)0x00040000) 0100:混合同步注入+慢速交替模式

#define ADC_Mode_InjecSimult ((uint32_t)0x00050000) 0101:注入同步模式

#define ADC_Mode_RegSimult ((uint32_t)0x00060000) 0110:规则同步模式

#define ADC_Mode_FasTInterl ((uint32_t)0x00070000) 0111:快速交替模式

#define ADC_Mode_SlowInterl ((uint32_t)0x00080000) 1000:慢速交替模式

#define ADC_Mode_AlterTrig ((uint32_t)0x00090000) 1001:交替触发模式

*/

ADC_InitStructure.ADC_ScanConvMode = ENABLE;

/* ADC_ScanConvMode在stm32f10x_adc.h中定义如下:

alState ADC_ScanConvMode;

这个参数用来指定转换是扫描(多通道模式)还是单个转换(单通道模式),该参数可以被设置为DISABLE或者ENABLE。


在数据手册中,SCAN位是这样描述的:扫描模式

该位由软件设置和清除,用于开启或关闭扫描模式。在扫描模式中,由ADC_SQRx或ADC_JSQRx寄存器选中的通道被转换。


0:关闭扫描模式

1:使用扫描模式

注:如果分别设置了EOCIE或JEOCIE位,只在最后一个通道转换完毕才会产生EOC或JEOC中断。

这样,如果一次需要对多个通道进行转换,这位就必须设置为ENABLE。

*/

ADC_InitStructure.ADC_ConTInuousConvMode = ENABLE;

/* alState ADC_ConTInuousConvMode;

这个参数用来指定转换是连续进行还是单次进行,它可以设置为ENABLE或者DISABLE。

这两个参数中出现了alState数据类型,那么它是什么呢,顺滕摸瓜,可以看到它的的定义如下:

typedef enum {DISABLE = 0, ENABLE = !DISABLE} alState;

因此,它相当于是一个位变量,我的理解,DISPABLE=0这个没有问题,ENABLE=!DISABLE是否应该确切的是1??否则下面的设置就会有问题。

用这两个符号来对寄存器中的位进行设置的话,还需要提供位置信息,如下面的代码所示:

tmpreg1 |= (uint32_t)(ADC_InitStruct-》ADC_DataAlign | ADC_InitStruct-》ADC_ExternalTrigConv |

((uint32_t)ADC_InitStruct-》ADC_ContinuousConvMode 《《 1));

这个《《1就是位置信息,CONT是CON2寄存器的位1

这样,我们看STM32的库又能多看懂一点了。

用于设定CON2的CONT位(位1):是否连续转换

该位由软件设置和清除。如果设置了此位,则转换将连续进行直到该位被清除。

推荐阅读

史海拾趣

ANSHAN [Anshan Suly Electronics]公司的发展小趣事

进入新世纪,随着科技的快速发展,电子产品更新换代速度日益加快。ANSHAN公司深知技术创新的重要性,不断加大研发投入,积极引进先进技术和设备。在一次重要的技术攻关中,公司研发团队成功突破了一项关键技术难题,推出了一款性能卓越、价格实惠的新型电子产品,受到了市场的热烈欢迎。这一技术突破不仅提升了公司的核心竞争力,也为公司的后续发展奠定了坚实基础。

GE Power Electronics Inc公司的发展小趣事
作为家居装饰品的一部分,如声控音乐盒、声控台灯等,通过声音控制实现特定的功能或效果。
ASC Capacitors公司的发展小趣事

ASC Capacitors始终坚持品质至上的原则。公司从原材料采购到生产工艺,再到产品出厂,每一个环节都严格把控,确保产品质量无可挑剔。此外,ASC Capacitors还建立了完善的质量检测体系,对每一批产品进行严格测试,确保产品性能达到最佳状态。正是这种对品质的执着追求,使得ASC Capacitors赢得了客户的广泛赞誉和信任。

General Instrument公司的发展小趣事
如果以上步骤无法解决问题,建议寻求专业电工的帮助进行排查和处理。
Excellence Optoelectronics Inc公司的发展小趣事

EOI始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到生产流程,再到产品检测,每一个环节都严格把控。同时,EOI还注重员工的培训和教育,提高员工的质量意识和技能水平。这些努力使得EOI的产品质量得到了客户的广泛认可,公司也因此树立了良好的品牌形象。

ARCOL公司的发展小趣事

品质是ARCOL公司的核心竞争力。公司始终坚持以质量为核心,建立了严格的质量管理体系。从原材料的采购到产品的出厂,每一个环节都经过严格把关,确保产品的质量和性能达到最高标准。同时,ARCOL还注重品牌建设,通过不断提升产品质量和服务水平,树立了良好的企业形象和口碑。

问答坊 | AI 解惑

最新版本的keil软件--uvision4beta1及其使用手记

上传一份最新版本的KEIL 51 软件vision4beta1,看起来很不错的,这个是没有PJ的版本,如果你的机子上装有注册过的uvision3,那直接安装就可以使用,无需另外注册!!刚下载下来,简单打开看了下,就拿出来和大家分享了,里边有一份网上找的使用手记 ...…

查看全部问答>

创建SQLCE数据库

能不能用VS2003在PC机上创建一个SQLCE数据库并操作SQLCE数据库??救救命啊…

查看全部问答>

关于BOOTlLOADER写数据命令的问题

                                 写两个以上的数据时他的校验和是他们依次异或的结果,那要是写一个数据时校验和是什么呢?…

查看全部问答>

cortex-m0社区热闹程度大减!

关于M0的讨论不是很热闹呀! 发帖顶一下!…

查看全部问答>

求助啊,去明尼苏达的事

首先我一直关注学校有个2+2的项目,是去明尼苏达双城校区的。不过我大概了解到,一年所有的费用大概在20万左右,不知道你觉得是大概一个怎样的数目? 然后我家的情况不是特别好,只能这样说,最多够支付我一年的学费,也就是20万。而且我估计是家 ...…

查看全部问答>

stm32 CAN通信遇到问题

    我用的stm32F103VC控制器外接一个TJA1050CAN收发器,加一个CAN分析仪(确定可用USBCAN-II(iTEK公司的))进行测试,至于stm32的CAN测试程序,首先采用回环模式,使能CAN接收中断,调试发现,可以进入接收中断,而且接收的数据与发送的数 ...…

查看全部问答>

同时有12V、5V、3.3V的系统,TI有没有单片电源器件?

有个东东,需要的电源有12V(或15V)、5V、3.3V,TI的电源IC有没有单片解决方案?…

查看全部问答>

【PSoC4心得】对PSoC的一些感受

收到板子后就开始装软件,软件装了两次,第一次不知道为什么没装成功,第二次直接安装到C盘 ,安装类型选的全部,装好后可以用了。 我是听大学的老师说起PSoC的,感觉挺不错的就申请了一套板子,打算用到公司的方案上。       &n ...…

查看全部问答>

2014 C2000研讨会课程汇总 带有DSP灵魂的MCU

2014 C2000研讨会课程汇总 https://www.eeworld.com.cn/traini ... ex&a=lists&catid=25 TI C2000是业界公认的最适合各种对实时性要求高的场合 工业应用是TI近几年明确的最重要的发展应用,即把工业应用作为其公司发展战略的重中之重, 因此C20 ...…

查看全部问答>