打印

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

[复制链接]
楼主: xlhtracy
手机看帖
扫描二维码
随时随地手机跟帖
121
第一问截图:

QQ图片20150416225335.png (11.45 KB )

QQ图片20150416225335.png

QQ图片20150416225410.png (18.19 KB )

QQ图片20150416225410.png

使用特权

评论回复
122
昱枫| | 2015-4-17 09:23 | 只看该作者
          SD24 模块 24-BitΣ-Δ模数转换器,听起来就比较高大上,24位那采样精度的确很高,而且还采用二阶Σ-Δ架构, 实现一个16位分辨率的一个简单的1ADC需要过采样率为4^15 = 1.073.741.824,这是不切实际的,那实际应该是什么样呢?

使用特权

评论回复
123
昱枫| | 2015-4-17 09:26 | 只看该作者
cowboy2014 发表于 2015-4-9 21:19
这个是msp430单片机自己带的AD吗?

msp430单片机 一般都会自带片上AD ,  24-BitΣ-Δ模数转换器 应该也是系统片上外设,不会还要自己去搭建一个这样的模数转换器

使用特权

评论回复
124
昱枫| | 2015-4-17 09:28 | 只看该作者
cowboy2014 发表于 2015-4-9 21:20
现在adi也生产cortex M3作为核心,ad和da同时存在的芯片

是的,但也不是一定要用cortex M3作为核心 ,在msp430F169就同时有片上AD 和DA

使用特权

评论回复
125
昱枫| | 2015-4-17 09:31 | 只看该作者
fjjjnk1234 发表于 2015-4-9 21:38
意思应该是4通道同时采样,4个独立的通道应该能配置成同时采样
这是数据手册上的介绍:
...

      我也是这样理解的,SD24模块由多达四个独立的Σ-Δ模数转换器构成。应该就是说每个都是可独立工作的,所以应该能够同时工作

使用特权

评论回复
126
昱枫| | 2015-4-17 09:36 | 只看该作者

    我觉得能够多通道同时转换,对与之前的430单片机而言单通道循环转换,同样的情况下,效率更高,转换更加准确

使用特权

评论回复
127
luoxiao8302| | 2015-4-17 09:59 | 只看该作者
非常详细,支持,顶起。

使用特权

评论回复
128
luoxiao8302| | 2015-4-17 10:00 | 只看该作者
可以移植ucos系统吗?谢谢。

使用特权

评论回复
129
luoxiao8302| | 2015-4-17 10:00 | 只看该作者
该开发环境有软件最小系统吗?ucos或者fros等?谢谢。

使用特权

评论回复
130
昱枫| | 2015-4-17 10:04 | 只看该作者
         对于 选择参考REF是内置参考电压,还是选择外置参考电压。
        我想到一种方法就是都选,而且确保内部外部参考电压一样,通过内外采集的转换的结果比较,看看偏差么样,如果是自己给的一个固定的被采样的电压之,那就更好,可以通过此方法确定,内外采样的准确度。
   //  SD24_init(SD24_BASE, SD24_REF_INTERNAL);
// SD24_init ( (SD24_BASE,SD24_REF_EXTERNAL );


//这里假设给定一个被采样的电压为1.5V
#define    RealResults     (1.5)


unsigned long  SD24_Conversion_Results(uint8_t referenceSelect);


void mian(void)
{
     unsigned long results1,results2;
      results1=SD24_Conversion_Results( SD24_REF_INTERNAL);
      results2=SD24_Conversion_Results( SD24_REF_EXTERNAL);
      //后面就是简单的比较转换后与实际的值的偏差
     // 当然需要多长测试比较,才好确定
       
}


unsigned long  SD24_Conversion_Results(uint8_t referenceSelect)
{
SD24_init(SD24_BASE, referenceSelect); // Select internal REF
SD24_initConverterAdvancedParam param = {0};
param. converter = SD24_CONVERTER_2; // Select converter
param. conversionMode = SD24_SINGLE_MODE; // Select single mode
param. groupEnable = SD24_NOT_GROUPED; // No grouped
param. inputChannel = SD24_INPUT_CH_ANALOG; // Input from analog signal
param. dataFormat = SD24_DATA_FORMAT_2COMPLEMENT; // 2’s complement data format
param. interruptDelay = SD24_FOURTH_SAMPLE_INTERRUPT; // 4th sample causes interrupt
param. oversampleRatio = SD24_OVERSAMPLE_256; // Oversampling ratio 256
param. gain = SD24_GAIN_1; // Preamplifier gain x1
SD24_initConverterAdvanced(SD24_BASE, ¶m);
delay cycles(0x3600); // Delay for 1.5V REF startup
SD24_startConverterConversion(SD24_BASE,SD24_CONVERTER 2); // Set bit to start conversion
// Poll interrupt flag for channel 2
while( SD24_getInterruptStatus(SD24_BASE, SD24_CONVERTER_2,SD24_CONVERTER_INTERRUPT) == 0 );
results = SD24 getResults(SD24_BASE,SD24_CONVERTER_2); // Save CH2 results (clears IFG)
  return  results;
}

使用特权

评论回复
131
昱枫| | 2015-4-17 10:41 | 只看该作者


配置SD24 转换器——高级配置,确实非常重要,可依据不同的情况,不同的要求,配置相应的参数
  SD24_initConverterAdvancedParam param = {0};
param. converter = SD24_CONVERTER_2; // Select converter
param. conversionMode = SD24_SINGLE_MODE; // Select single mode
param. groupEnable = SD24_NOT_GROUPED; // No grouped
param. inputChannel = SD24_INPUT_CH_ANALOG; // Input from analog signal
param. dataFormat = SD24_DATA_FORMAT_2COMPLEMENT; // 2’s complement data format
param. interruptDelay = SD24_FOURTH_SAMPLE_INTERRUPT; // 4th sample causes interrupt
param. oversampleRatio = SD24_OVERSAMPLE_256; // Oversampling ratio 256
param. gain = SD24_GAIN_1; // Preamplifier gain x1
SD24_initConverterAdvanced(SD24_BASE, ¶m);
这里说下关于这一项  数据格式 ,我的理解
SD24_initConverterAdvancedParam::dataFormat 数据格式,二进制或2 的补码形式



如图可以看出,当电压输入在  −VFSR  与+VFSR 之间时, 如果以 −VFSR 对应0x0000  ,  +VFSR  对应 0xFFFF
也就是说,输入为 −VFSR,转换结果为 0x0000   ,输入为 0,转换结果为 0x8000
输入为 +VFSR,转换结果为 0xFFFF, 输出都是正的, 这应该就是所说的 二进制 格式


同样 当输入为 −VFSR,转换结果为 0x8000   ,输入为 0,转换结果为 0x8000,输入为 +VFSR,转换结果为 0x7FFF,
此时就有正负之分,所以必须用到 2 的补码形式 ,负数在计算机存储必须用到补码




使用特权

评论回复
132
jianjun8410| | 2015-4-17 12:51 | 只看该作者
本章作业1:根据MSP430i2040手册,查找VCORE管脚相关信息,并查找资料给出该管脚的作用,以及在使用中如何配置。
→管脚功能:Regulated core power supply(internal useonly,noexternalcurrentloading),典型大小为1.83V。
在使用中注意:VCORE is for internal use only.No external current loading is possible.VCORE should only be connected to the recommended capacitor value 。
其中,Recommended capacitor at VCORE is:470nF。同时,PCB布线时尽可能的使该电容靠近芯片引脚。
提问:
规格书14页表5.3中,Cvcc/Cvore(min)=10,由于Cvore规格书中已经给出了Cvore的推荐值为470nF,是否说明Cvcc外接电容大小最小必须满足4.7UF或更大呢?

使用特权

评论回复
133
月下飞鸿| | 2015-4-17 12:54 | 只看该作者
刚跟上第三讲的内容,看到那个24位的ADC,采用了过采样,我记得是可以在程序中使用过采样的方法,同样可以实现高分辨率的ADC,只是周期较长,如果不要求连续的高精度,可以采用程序处理的方法吧。(愚见)
那个FLASH的看着真心头大,以前基本没有处理过FLASH的片子,需要慢慢消化了

使用特权

评论回复
134
112207301219| | 2015-4-17 14:13 | 只看该作者
昱枫 发表于 2015-4-17 09:23
SD24 模块 24-BitΣ-Δ模数转换器,听起来就比较高大上,24位那采样精度的确很高,而且还采用[/ba ...

我的理解是, 实际应该是通过调制器,把噪声功率谱向高频带推移,从而增加信噪比,进而使得在相同的过采样率下,达到更高的分辨率,例如:加调制器之前增加4倍过采样率可以增加6dB信噪比,加一阶调制器之后增加2倍过采样率可以增加9dB信噪比。加二阶调制器之后增加2倍过采样率可以增加15dB信噪比。顺便提一下,增加信噪比可以增加AD的分辨率的,这里说的24-BitΣ-Δ ADC 其实是通过某些技术手段使得其分辨率达到等同于24位ADC的分辨率。并不是里面的ADC有24位。-----这是我看了资料以后的理解,如有失误之处请纠正,下面将我参考的资料贴出来,完整的文档我之前已上传,有兴趣的朋友可以看一看。

部分原文如下:
什么叫过采样?
首先,考虑一个传统ADC 的频域传输特性。输入一个正弦信号,然后以频率 fs 采样--按照 Nyquist定理,采样频率至少两倍于输入信号。 从 FFT 分析结果可以看到,一个单音和一系列频率分布于 DC到 fs /2间的随机噪声。这就是所谓的量化噪声,主要是由于有限的 ADC 分辨率而造成的。单音信号的幅度和所有频率噪声的 RMS 幅度之和的比值就是信号噪声比(SNR)。对于一个 Nbit ADC,SNR 可由公式:SNR=6.02N+1.76dB 得到。为了改善 SNR 和更为精确地再现输入信号,对于传统 ADC 来讲,必须增加位数。
       如果将采样频率提高一个过采样系数 k,即采样频率为 kfs,再来讨论同样的问题。FFT 分析显示噪声基线降低了, SNR 值未变,但噪声能量分散到一个更宽的频率范围。 Σ-Δ 转换器正是利用了这一原理,具体方法是紧接着 1bit ADC 之后进行数字滤波。大部分噪声被数字滤波器滤掉,这样,RMS噪声就降低了,从而一个低分辨率 ADC,Σ-Δ转换器也可获得宽动态范围。 那么,简单的过采样和滤波是如何改善 SNR 的呢?一个 1bit ADC 的 SNR 为 7.78dB(6.02+1.76),每4倍过采样将使 SNR 增加6dB,SNR 每增加6dB 等效于分辨率增加 1bit。这样,采用1bit ADC 进行 64 倍过采样就能获得 4bit 分辨率;而要获得 16bit 分辨率就必须进行 415 倍过采样,这是不切实际的。Σ-Δ 转换器采用噪声成形技术消除了这种局限,每 4 倍过采样系数可增加高于 6dB 的信噪比。

噪声成形:
Σ-Δ调制器包含 1个差分放大器、1个积分器、1 个比较器以及1个由1bit DAC(1个简单的开关,可以将差分放大器的反相输入接到正或负参考电压)构成的反馈环。反馈DAC的作用是使积分器的平均输出电压接近于比较器的参考电平。调制器输出中"1"的密度将正比于输入信号,如果输入电压上升,比较器必须产生更多数量的"1",反之亦然。积分器用来对误差电压求和,对于输入信号表现为一个低通滤波器,而对于量化噪声则表现为高通滤波。这样,大部分量化噪声就被推向更高的频段。和前面的简单过采样相比,总的噪声功率没有改变,但噪声的分布发生了变化。   
   现在,如果对噪声成形后的Σ-Δ调制器输出进行数字滤波,将有可能移走比简单过采样中更多的噪声。这种调制器(一阶)在每两倍的过采样率下可提供 9dB的SNR 改善。

使用特权

评论回复
135
fjjjnk1234| | 2015-4-17 16:16 | 只看该作者
luoxiao8302 发表于 2015-4-17 10:00
可以移植ucos系统吗?谢谢。

RAM比较小,不适合移植。

使用特权

评论回复
136
daniellee1226| | 2015-4-17 16:53 | 只看该作者
这是官方的示例程序。。。。。。。

官方例程.zip

817.04 KB

使用特权

评论回复
137
gaoyang9992006| | 2015-4-17 20:41 | 只看该作者
daniellee1226 发表于 2015-4-16 19:53
以前在学校用过430系列的单片机,确实是挺不错的单片机呢,记得那时候还没有i系列吧。正好最近做项目查资料 ...

这个系列去年年底才出现在TI官网,当时还没有提供手册,我很好奇,现在TI开始供货了,也出了库函数,所以在论坛推一下,让大家了解一下,430以后也可以用库函数操作,不用再费神了解复杂的时钟结构和低功耗控制方式。

使用特权

评论回复
138
gaoyang9992006| | 2015-4-17 20:42 | 只看该作者

贴个图就算了??

使用特权

评论回复
139
gaoyang9992006| | 2015-4-17 21:19 | 只看该作者
昱枫 发表于 2015-4-17 09:23
SD24 模块 24-BitΣ-Δ模数转换器,听起来就比较高大上,24位那采样精度的确很高,而且还采用[/ba ...

说的是传统的,传统的做法如果想直线16位的ADC,新的方法将这一目标实现了,并且精度更加提高

使用特权

评论回复
140
gaoyang9992006| | 2015-4-17 21:21 | 只看该作者
昱枫 发表于 2015-4-17 09:36
我觉得能够多通道同时转换,对与之前的430单片机而言单通道循环转换,同样的情况下,效率更高,转换 ...

嗯,这个优势还是很明显的,可以完成那种要同时完成采样与检测的方案。

使用特权

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

本版积分规则