一. MSP430模数转换模块<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. ADC模块结构
■ 参考电压发生器,选择<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />为(模拟电源正端),为(模拟电源负端)。
■ 模拟多路器,对多个信号进行A/D转换,为了共用一个转换内核,模拟多路器分时地将多个模拟信号接通,即每次接通一个信号采样并转换。MSP430ADC12配置有8个外部通道和4路内部通道,节点使用了A0-A3通道,分别对应电压传感器,光强传感器,红外传感器,射频强度传感器
■ 具有采样和保持功能地12位转换器内核。
■ 采样及转换所需地时序控制电路。
■ 转换结果缓存,ADC12共有12个转换通道,设置了16个转换寄存器用于存放转换结果。
2. ADC12寄存器
ADC12有大量地控制寄存器供用户使用,可以根据实际需要通过软件独立配置ADC12的资源,从而灵活运用ADC12的各个功能模块。
(1).ADC12CTL0 转换控制寄存器0
0位:ADC12 采样/转换控制位,在ENC=1,ISSH=0时设置SHP=1,在ADC12由0变为1时启动A/D转换。
1位:ENC 转换允许,转换控制寄存器的大部分操作只有在ENC=0时才可被修改。
2位:ADC12TVIE 转换时间溢出中断允许位。
3位:ADC12OVIE 溢出中断允许位。
4位:ADC12ON ADC12内核控制位。
5位:REFON 参考电压控制位。设置位0,关闭参考电压
6位:2.5 内部参考电压值选择,REFON=0时不使用。
7位:MSC 多次采样/转换位,单通道单次转换时不起作用。
8-11:SHT0 采样保持定时器0,设置为0。
15-15:SHT1
(2). ADC12CTL1 转换控制寄存器1
0位 ADC12BUSY ADC12忙标志位。
1-2位:CONSEQ 转换模式选择位,设置为0,单通道单次转换模式。
3-4位:ADC12SSEL ADC12内核时钟源选择,设置为SMCLK.
5-7位:ADC12DIV 分频因子选择
8位:ISSH 采样输入信号方向控制,设置为0;
9位:SHP 采样信号选择控制位,设置为1
10-11 SHS 采样信号触发源选择位,设置为1
12-15位:CSSTARTADD 转换存储器地址位。
(3).ADC12MCTLx 转换存储器控制寄存器
0,1,2,3位:INCH 选择模拟输入通道
4,5,6位: SREF 参考电压选择位,设置为0,=,=。
7位: EOS 序列结束控制位,单通道单次转换时不用。
(4).ADC12IFG,ADC12IE,ADC12IV 中断标志寄存器
二. Tinyos中的ADC12组件
Tinyos中提供了配置ADC12模块的三个组件
HPLADC<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />12M(tinyos-1.x/tos./plarform/telosb/HPLADC12M.nc)
MSP430ADC12M(tinyos-1.x/tos./plarform/telosb/MSP430ADC12M.nc)
ADCM(tinyos-1.x/tos./plarform/telosb/ADCM.nc)
改动后得ADC 模块绕过了ADCM组件,直接使用MSP430ADC12M提供的接口实现ADC转换功能。
(1). HPLADC12M组件
HPLADC12M组件提供了对ADC所有配置,是Tinyos中直接控制硬件的最底层组件,可以通过调用HPLADC12M提供的命令对ADC12的所有寄存器进行设置,实现我们需要的功能。同时HPLADC12M通过自己提供的事件,把接受到的数据通知上层组件。HPLUART1M为上层组件提供了HPLADC12接口。
(2).MSP430ADC12M组件
MSP430ADC12M组件是HPLADC12M的上层组件,通过HPLADC12M提供的HPLADC12接口,调用HPLADC12M的命令实现对硬件的控制,对寄存器进行了一些基本的设置。同时也为上层组件提供了StdControl 和MSP430ADC12Single接口,MSP430ADC12Multiple接口在单通道单次转换模式时不使用。
三. 编写可以同时获得四个通道数据的组件
MSP430ADC12M组件是设置为单通道单次转换模式,因此一次只能获得一个通道的传感器数据,为上层应用带来了不便。为了可以通过一个组件提供的命令分别获得多个传感器数据,编写了getsensedataM组件,包括getsensedataM.nc, getsensedataC.nc, Sensedata.nc.提供了Sensedata接口,可以同时获得几个传感器的数据。
用户71098 2008-5-19 17:20
用户1275742 2008-5-18 21:47
用户107688 2007-2-13 21:18
多谢回复