打印

【MSP430i2xx教程第三讲】24-BitΣ-Δ ADC & FlashCtl-Flash存储控制器

[复制链接]
楼主: xlhtracy
手机看帖
扫描二维码
随时随地手机跟帖
101
闪存控制器这个应该比较简单的。
库函数做的好,版主讲的也比较明白。特别是那个例程也很简单。
首先这个要根据选择的芯片具体型号确定内存空间,然后通过宏定义确定个开头,还有段长度,或者说是块长度。
关于这个东西都是要指针开头的,我记得电脑上的C语言编程,关于存储文件读写的,也是个*FILE 指针操作。
    uint32_t *flashPtr = (uint32_t *)SEGSTART;这里就是这句打头的,获取开头的地址传递给指针flashPtr.
之后一如既往的关闭看门狗。
下面就是要配置时钟了,因为后面要配置闪存的时钟。所以这里肯定要开头配置系统时钟,默认选择内置电阻模式就行了,这个直接就是16.384MHz.轻松获取标准时钟信号就靠它了。
配置完时钟初始化信号,当然不分频,默认保持16.384,
下面就可以配置闪存时钟了,这里选择了390KHz,要填入具体的数字,1K=1024B ,所以这里填入了390095,第二个参数就是系统时钟,刚才没有分频所以还是16384000,第三个直接FLASHCTL_MCLK.
解锁信息存储区,教程讲的明白,要操作必须解锁。之后通过填充函数,把前面定义的常数Value通过指针flashPtr,按照4个一队方式写入到指定的地址头。之后锁定信息区。
简单易懂。根据自己需要还可以写入某个地址的东西,这个需要传递过去地址,不是值。

使用特权

评论回复
102
mintspring| | 2015-4-15 13:13 | 只看该作者
那个是VCORE是指的内核电压,也就是内核工作的电压,应该不是输入引脚,可能是对外就是给个测量用的,一般接个470pF电容接地,大概一般用不到,也可以连接ADC,用于自检内压是否正常。一般别乱动,我先找找资料啊,回头再说。

使用特权

评论回复
103
第三世界| | 2015-4-15 16:52 | 只看该作者
你怎么能确定电容接地就可以做到呢, 主要是提供一个测试电压吗

使用特权

评论回复
104
憨八龟| | 2015-4-15 18:51 | 只看该作者
就单片机而言,完全可以做成一块24位AD芯片,然后做好串口或者SPI,当作一块可以串行传输数据的AD,价格低,性价比高

使用特权

评论回复
105
kqh1120| | 2015-4-15 19:54 | 只看该作者
占个楼啊

使用特权

评论回复
106
kqh1120| | 2015-4-15 20:21 | 只看该作者
普及一下过采样技术吧,
可采用过采样技术。
    过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。如果单片机的12位AD,每秒采集10个数据,即采样率为:10/秒。根据过采样技术,每提高1位ADC分辨率,需要增加4倍的采样率。从12位AD提高到14位AD,一共提高了2位,所以需要把采样率提高2 * 2 * 2 * 2 = 16倍。原来在100mS之内只采集一个数据,现在需要在100mS之内采集16个数据了。然后,我们把这16个数据累加,再把累加值右移2位,这样就得到过采样之后的14位ADC。
    需要注意的是,过采样技术会限制输入信号的频率。根据采样定律,采样率最少是输入信号的2倍才能将信号还原。当需要提高n位的ADC分辨率时,采样率又得提高4*n倍。单片机的12位ADC的最高采样率为1MHz,如果要达到14位的ADC分辨率,那么输入信号的频率就不能超过:1M/2/15 = 31.25KHz。
    最后提醒:分辨率的提升到14位并不是精度也能提升14位。

使用特权

评论回复
107
kqh1120| | 2015-4-15 20:23 | 只看该作者
这个转换支持DMA么???

使用特权

评论回复
108
fyliuxue| | 2015-4-15 20:39 | 只看该作者
msp430的24位ADC精度确实相当不错,其他单片机里没见过这么高精度的,就是不知道采样速度怎么样,适不适合快速的交流采样和计算。

使用特权

评论回复
109
lark100| | 2015-4-15 22:40 | 只看该作者
VCORE is for internal use only. No external current loading is possible. VCORE should only be connected to the recommended capacitor value.Recommended capacitor is 470 nF.

使用特权

评论回复
110
lark100| | 2015-4-15 22:47 | 只看该作者
Flash Memory
The flash memory can be programmed through the Spy-Bi-Wire or JTAG port, or in-system by the CPU.
The CPU can perform single-byte and single-word writes to the flash memory. Features of the flash
memory:
• Flash memory has n segments of main memory and one segment of information memory.
• Segment size is 1KB for both main memory and information memory.
• Segments 0 to n in main memory can be erased in one step, or each segment may be individually
erased.
• Information memory segment can be erased separately or as a group with main memory segments 0
to n.
• Information memory segment contains calibration data. After reset, information memory segment is
protected against programming and erasing. It can be unlocked but care should be taken not to erase
this segment if the device-specific calibration data is required.

使用特权

评论回复
111
数码小叶| | 2015-4-16 08:15 | 只看该作者
112207301219 发表于 2015-4-14 14:14
Σ-Δ模数转换器
http://wenku.baidu.com/link?url=4xw7Ax5N8-gxUXtYdlCq5Nq57NX
这里讲得还挺详细的 ...

貌似你的链接不全,打不开:D:D:D

使用特权

评论回复
112
112207301219| | 2015-4-16 09:43 | 只看该作者
数码小叶 发表于 2015-4-16 08:15
貌似你的链接不全,打不开

刚刚试了一下,确实打不开,真的是不好意思啊!我也不知道为什么。
这次我把文件下载了,直接传附件,供有兴趣的朋友下载。
谢谢你的反馈@数码小叶!

ADC过采样.pdf

690.45 KB

关于ADC过采样和Σ-Δ ADC原理的讲解

使用特权

评论回复
113
zhangkaiy1220| | 2015-4-16 10:02 | 只看该作者
指针可以这样理解,一个指针涉及两个对象,该指针本身和它被指的对象

使用特权

评论回复
114
uestc_zyd| | 2015-4-16 10:25 | 只看该作者
这个flash控制器是针对哪中flash而言的?
能否作为处理器的启动代码的存储器呢?
如果能,那使用这些flash控制函数,怎么实现处理器的启动呢?是一个是那么样的写入的过程呢?

使用特权

评论回复
115
112207301219| | 2015-4-16 10:33 | 只看该作者
zhangkaiy1220 发表于 2015-4-16 10:02
指针可以这样理解,一个指针涉及两个对象,该指针本身和它被指的对象

还可以理解成门牌号,我不能把房间带过去给你,但是可以给你门牌号,让你很快找到房间,我也可以给很多人这个门牌号,大家都能找到这个房间,然后存东西取东西,

使用特权

评论回复
116
uestc_zyd| | 2015-4-16 10:37 | 只看该作者
我说一下我对API驱动库函数的理解,不知道是不是准确?
:各种函数的组合使用实现所需要的较为实际的用途,各个API函数实现了基本的功能操作。由基本操作构建实际中的用途,有点类似cpu中RISC的意思。
比如说要实现cpu的bootloader,可能就是各flash控制器的API函数、时钟系统的API函数等驱动库函数的组合。

但是怎么组合是设计者自己的思想了,若对硬件结构熟悉,是不是写出的代码可以执行的很快,bug也少????

使用特权

评论回复
117
112207301219| | 2015-4-16 11:29 | 只看该作者
xlhtracy 发表于 2015-4-9 09:56
6.3  例程
#include "driverlib.h"
// Address of the beginning of the Flash Information Segment#define ...

VCORE是内核电压监管引脚,不支持外加负载,不能输出电流,仅供内核使用,用于监测内核电压,了解内核工作状态。配置上,外接470nF电容到地。

使用特权

评论回复
118
uestc_zyd| | 2015-4-16 15:43 | 只看该作者
lvyunhua 发表于 2015-4-9 20:22
SD24转换一次所需时间时多少,实际应用精度可以达到多少?

转换一次的时间应该和转换模式、通道选择、数据格式、延时设置、过采样率、增益等有关,不太能够情况下所需的时间应该不一样。
理论上,精度是24位的,至于实际应用的精度就不是很清楚了,但是知道这个参数有没有很大的意义呢?理论上的值知道了是不是就差不多了?

使用特权

评论回复
119
lvyunhua| | 2015-4-16 15:54 | 只看该作者
精度是24位的,至于实际应用的精度就不是很清楚了,但是知道这个参数有没有很大的意义呢?理论上的值知道了是不是就差不多了?

选AD时都要看这个参数,实际应用注意相关事项,其转换精度实际上不会相差太远哦!

使用特权

评论回复
120
daniellee1226| | 2015-4-16 19:53 | 只看该作者
以前在学校用过430系列的单片机,确实是挺不错的单片机呢,记得那时候还没有i系列吧。正好最近做项目查资料看到这个了,我就来说两句好了。曾经做项目用过TI的ADS131,也是Sigama Deta的24位AD,最近比较忙,没时间学这个新单片机了。i系列居然可以库函数操作了,点个赞
我来的讲一讲ΣΔ的原理吧,因为当时用这个的时候也挺困惑的,和普通AD不一样,多了很多新的词汇。调制器啊,抽取滤波器什么的。也便于大家理解Σ-ΔADC原理吧,用起来也更明白一点。大部分是出于自己的理解,小部分解释起来太裹人,就copy的啦,大家参考着看一看吧。
———————————————————分割线—————————————————
Sigma-Delta ADC的基本工作原理:
ADC先对信号进行过采样,再然后用负反馈网络对量化的噪声进行低频衰减,对高频噪声进行放大,从而把大部分噪声功率整形到信号频带之外,最后用数字滤波器滤除带外噪声,达到提高精度的目的。
这样说来其实也很难理解,接下来还得讲一讲其他的一些基本概念。

基本流程:
输入模拟信号——>抗混叠低通滤波器——>Σ-Δ调制器——>数字低通滤波器(数字抽取滤波器)——>输出数字信号

抗混叠滤波器:
作用是抑制输入信号中超过奈克斯特频率的高频噪声,避免输出信号被混叠进来的高频信号干扰。

过采样:
MCU要想处理模拟信号,ADC必须要将输入的模拟信号转换为数字信号,而要想转换为数字信号,就必须要经过量化和编码,由于数字信号是离散的,所以必定会引入误差,量化误差也称作量化噪声。我们知道,要想使量化噪声的功率密度越小,也就是高的信噪比,我们要么提高采样频率f,要么增加分辨位数n。而当提高采样频率时,就相当于提高了AD的分辨率,Σ-Δ ADC就是通过提高采样频率的方法来增强信噪比,称为过采样法。这样就解释了什么是过采样。

Σ-Δ调制器(作用是噪声整形)
如果在过采样的同时还能够对量化噪声的分布做出改变,使其与所采信号所在的频带分离开来,那么通过频域铝箔就能够有效出去量化噪声,进一步提高信噪比,进一步的提高采样精度,这种方式称为噪声整形,在Σ-Δ ADC中,噪声整形是通过Σ-Δ调制来实现的。
简单来说,调制器对输入有低通作用,对量化噪声具有高通作用,将量化噪声集中到了输出的高频带内,改变了噪声的频域分布,也就实现了噪声整形。所以说调制器是Σ-Δ ADC的关键。
对于整形之后的输出,( 0--fs/2)内的低频带内是有用的信号,高频部分(fs/2—Kfs/2)是量化噪声,通过数字低通滤波器,可以有效滤除量化噪声,从而提高信噪比。(fs是采样频率)


数字低通滤波器(数字抽取滤波器):
一般地,为了便于传输和存储,在无混叠情况下能够还原原始信号,会对滤波之后的输出信号从过采样频率Kfs降低到奈奎斯特频率fs。这里的数字低通滤波器采用的是数字抽取滤波器,这种滤波器通过对输入的每M个数据抽取一个的重采样方法,使输出速率低于原来的过采样速率,选择合适的M,就可以得到高信噪比又满足频率条件的输出信号。在相同的过采样速率Kfs条件下,M越大,滤波半径(Kfs/(2M))越小,噪声滤除越明显,信噪比就越高。

使用特权

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

本版积分规则