历史上的今天
今天是:2024年10月10日(星期四)
2019年10月10日 | MSP430之AD12笔记及使用一例
2019-10-10 来源:eefocus
MSP430的AD12使用灵活,功能强大.我在学习的过程中特别总结了一下,以后回头来也方便咯,呵呵.
1.AD12(12路输入通道(8路外部输入通道,4路内部输入通道),4种模式)
(1)寄存器:
A.转换控制:ADC12CTL0、ADC12CTRL1
B.中断控制:ADC12IFG 、 ADC12IE 、ADC12IV
C存储控制类:ADC12MCTL0 — ADC12MCTL15(8位寄存器,每个寄存器对应于一个ADCMEM12x,定义参考电压和通道)
D.存储器类:ADC12MEM0 — ADC12MEM15
(2)四种工作模式
A.单通道单次转换
B.单通道多次转换
C.多通道(序列)单次转换
D.多通道(序列)多次转换
(3)ADC12CTL1有两个和时钟相关的设置:
A.SHS:(0-4)采样输入信号源选择控制位.AD采样时钟.
B.ADC12SSEL:(0-3) ADC12内核时钟.
特别注意二者的区别.
(4)ADC12在AD转换中完全是自动完成的,所以在多次转换中大多在中断处理程序中处理.
在学习中多练习是必要的,如下是单通道单次转换的例子.不同的工作模式需要设置不同的工作标志位(0-3).
/*
MSP430
ADC12 单通道单次转换
*/
#include #define ADCMEM ((int *)0x0140) void Init(void) { WDTCTL = WDTPW + WDTHOLD ; /*ADC12 Setting*/ P6SEL = 0xFF; ADC12CTL0 &= ~0x02 ; //禁止转换 ADC12MCTL0 = 0x00; ADC12MCTL1 = 0x8A; ADC12CTL1 = 0x0202; ADC12CTL0 = 0x0010 + SHT0_8; ADC12CTL0 |= 0X02; //使能ADC转换 } //interrupt[ADC_VECTOR] void ADC12(void) ; //unsigned int Result ; int main( void ) { unsigned int i ; unsigned int j; unsigned int Result[2]; Init(); while(1) { for(i = 0;i<2 ;i++) { ADC12CTL0 |= 0x01 ; //开始转换 ADC12CTL1 &= ~0x01; for(j = 0;j<=1000 ;j++); } while((ADC12CTL1 & 0x01)==1); for(j = 0; j<2 ; j++) { Result[j] = ADCMEM[j]; } for(i = 0 ; i<10000 ;i++); } return 0; }
史海拾趣
|
【转贴】16 bits to packed BCD, 51 ASM. 61周期/80字节 TEST_NUM EQU 65432 ORG 000H MOV R2, #LOW(TEST_NUM) ; #11111111B MOV R3, #HIGH(TEST_NUM); #11111111B ; 65535 CALL BIN2BCD ...… 查看全部问答> |
|
作为一种储能和滤波元件,电容器的性能对电路处理信号的稳定性影响是决定性的;使用在滤波电路,电容器的高频阻抗ESR和高频感抗会对电容器的容量在不同频率下的变化值起决定性的影响,当高频阻抗较高时,产品在高频下工作时的实际容量将下降,感抗 ...… 查看全部问答> |
|
请教两个使用STM32的FSMC时地址线数据线复用问题: 1. 在使用FSMC时,如果只用到19根地址线,那么A19-A25是不是可以当做通用输入输出口来用? 2. 在使用FSMC时,如果只用到8根数据线,那么D8-D15是不是可以 ...… 查看全部问答> |
|
#define SBUFLENS 21 uchar ArraySPSData [SBUFLENS]; // data to be ...… 查看全部问答> |
|
各位大哥,请教一下, 我用 S3C2416 的时候触摸屏用了一会就无效了, 系统没有再进 DdsiTouchPanelGetPoint 函数, 用示波器查看发现 TSXM TSXP & ...… 查看全部问答> |
|
typedef struct { char regAddr; double regValue; char regMast; }reg_A; typedef struct { char regAddr; char regMast; double regValue; }reg_B; 在实际的程序中,我发现:sizeof(reg_A)=24,sizeof(reg_B)=16 ...… 查看全部问答> |




