历史上的今天
今天是:2025年01月28日(星期二)
2020年01月28日 | msp430F5438A 的ADC 研究
2020-01-28 来源:eefocus
由于项目中需要使用到ADC模块,那么就有必要对ADC模块进行研究了。
这是msp430F5428A datasheet首页上面对于ADC的描述:
12-Bit Analog-to-Digital Converter (ADC)
– Internal Reference
– Sample-and-Hold
– Autoscan Feature
– 14 External Channels, 2 Internal Channels
ADC12_A (Link to User's Guide)
The ADC12_A module supports fast 12-bit analog-to-digital conversions. The module implements a 12-bit SAR
core, sample select control, reference generator, and a 16-word conversion-and-control buffer. The conversionand-
control buffer allows up to 16 independent ADC samples to be converted and stored without any CPU
intervention.
也就是说ADC12_A可以同时转换16路的模拟信号。(没有cpu的介入)
把Msp430f5438A的ADC12_A的重要特点总结如下:
(1) 转换速率可以为200K/s
(2)12bit转换 无错码
(3) 由软件或计数器控制着的采样时间和保持时间
(4)内部有参考电压1.5V,2.0V及2.5V
(5)可以使用外接参考源,是否选择外部参考源由寄存器决定。
(6)有单沟道采样,重复单沟道采样,序列采样,重复序列采样4种模式可选(Single-channel, repeat-single-channel, sequence (autoscan), and repeat-sequence (repeated autoscan) conversion modes)
(7)16位转换结果存储寄存器ADC12MEMx,和ADC12转换结果存储寄存器ADC12MCTLx。
写下列程序:
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_15;// Turn on ADC12, set sampling time
ADC12CTL1 = ADC12SHP+ADC12CONSEQ_0; // Use sampling timer, single
ADC12MCTL0 =ADC12SREF_2 + ADC12INCH_3; // ref+=Veref=2.5V, channel = A3
// ADC12MCTL1 = ADC12INCH_2+ADC12EOS; // ref+=AVcc, channel = A9, end seq.
ADC12IE = 0x02; // Enable ADC12IFG.1, end channel
ADC12CTL0 |= ADC12ENC; // Enable conversions
ADC12CTL0 |= ADC12SC; // Start convn - software trigger
}
当在A3脚上加电压为1.404 V, 在debug界面观测到的为:

也就是说转换结果为08B3,对应电压为[(8*256+11*16+3)/4096]*2.5V=1.359V
所以ADC成功将A3口上的信号转换为数字量并存储在ADC12MEM0中。
上一篇:我的低功耗MSP430学习生涯
下一篇:MSP430常用程序架构
史海拾趣
|
SystemC一套将C++扩展为硬件描述语言的Class Library 注:转牛人04年的贴 这几日接接触SystemC,有些感触: 1. SystemC 是一套C++ Class Library,将C++扩展成了一门硬件描述语言(HDL)。我感觉,学习SystemC至少要懂两样东西:C++、一门硬件描述语言。我熟悉C++,并且熟悉Verilog,因此学SystemC能举一反三、触类旁通。 ...… 查看全部问答> |
|
嵌入式U-boot的Makefile中有这么一句 smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 课本解释 $(@:_config= ...… 查看全部问答> |
|
在公共场合如卫生间内,你很少会见到有提供肥皂洗手的,毕竟与多人共用一块肥皂那是件很让人难以接受的事情。设计师WooJae Lee等想了个办法,带来了这个液体肥皂机:Re-Bubble。只需将肥皂从顶部像投币一样投进去,经过机器操作,管道里就存满了泡 ...… 查看全部问答> |
|
【原创】求助:为什么我对SegmentA进行擦除和写以后,再重新启动就没反应了。 想用information memory代替外接EEPROM的。 我是按照书上的例子对SegmentA进行擦除和写的,并且读出来的数确实是我写进去的。就是一断电再上电就没反应了,我怀疑是我把其他的段也擦除了? pFlash=(char *)_AddSegA; //指向SegmentA FCTL1=FWK ...… 查看全部问答> |




