通过MSP430F1232最小系统测试单片机AD10程序

2019-04-15 16:54发布

=====20160115下午工作记录:测试单片机程序,包括单片机初始化设置,时钟等,主要是AD模块的设置,通过TI官网的1232例程进行程序的编写。
1、创建IAR项目,对项目的option进行设置,添加TI的例程c文件,编译。没有问题就可以连接JTAG向单片机中烧程序了。
2、单片机程序需要解决的几个问题: (1) 单片机时钟         上电默认情况下,主系统时钟(MCLK)和子系统时钟(SMCLK)采用的是内部DCO(采用内部电阻)产生的800KHz的时钟,辅助系统时钟采用的是片内超低功耗12KHz的内部振荡器(VLOCLK)产生的12KHz时钟。        Msp430F1232时钟源有两个,一个是LFXT1CLK,一个是内部的DCOCLK。ACLK只能选择LFXT1CLK,如果单片机没有外接晶振的话,ACLK会采用片内超低功耗12KHz的内部振荡器(VLOCLK)产生的12KHz时钟。        关于LFXT1CLK的低频和高频模式:               (1) 低频模式:采用32768Hz的外接晶振,不需要接任何的外部元件,也就是不用接电容,同时寄存器设置XTS=0,其实默认就是0的,也就是不用设置。               (2) 高频模式:最大支持8MHz的晶振,需要外接电容,寄存器设置XTS=1。         问题:主系统时钟到底采用多大的频率合适???暂定设置成上电默认的时钟频率吧。如果使用内部的DCO作为主系统时钟源,那么外接的32768Hz有什么用???        本系统中采用的是100K的外接电阻,DCO默认频率大约是2MHz。        根据需求设置,如果要求系统跑得快些,时钟精准些,就设置成XT2一般是8MHz;如果没什么特别的要求,就用系统DCO提供的1M的频率,如果是要求低功耗或时间相关的时钟源,最好用32768Hz的外部晶振。
      ACLK是辅助时钟,一般是低频的时钟,使用32768Hz的低频振荡或者12KHz的VLO。
      MCLK是主时钟,给CPU提供,这个需要根据实际情况来,可以是DCO或者是HF的振荡器。
      SMCLK是外设时钟,常用的是从DCO获取时钟源。
       本系统中主系统时钟采用DCO生成,涉及到几个问题,Rosc引脚应该外接多大的电阻,电阻大小对DCO频率有什么影响,现在接的是100K。外接电阻不仅可以抑制DCO的系数,还可以增大DCO能够到达的最大频率。内部300K的电阻对应5MHz,当使用外接的100K电阻时,DCO能够达到10MHz。        DCO靠内部或者外部电阻定义基频,凭借DCOR位来确定基频是参考内部还是外部的电阻。3个RSELx位为DCO选择8个标称频率中的一个,通过寄存器设置RSELx只能是采用内部电阻的时候,如果采用外部电阻,那么根据你连接的电阻阻值不同,DCO产生的频率自然不同(是这样的吗,这里不太确定)。3个DCOx位为选择的标称频率进行分段,也就是在8个标称值两两中间分成8个值,具体看数据手册。MODx的使用还没有看明白。。。
(2) ADC10设置        设置ADC10的时钟源,可以是MCLK、SMCLK、ACLK、ADC10OSC其中一个,其中ADC10OSC是专门给ADC使用的时钟源,频率大概5M左右,因为本系统中,是针对脉搏信号的采样频率,所以200Hz就够了,最多500Hz,多了没什么用。所以在单片机的上外接了一个32768Hz(32KHz)的晶振,专门用作ADC采样用。显而易见,单片机驱动频率越高的晶振,功耗越大,这里采用32768Hz的频率比自带的ADC10OSC要功耗少很多。        SHTx用来设置AD时钟源分频。        采样和转换时间:采样时间是AD时钟周期的分频倍,转换时间是13乘以AD时钟周期。        AD通道:8个外部通道和4个内部通道。        参考电压:REFON=1,使能内部参考电压,设置REF2_5=1,使能2.5V参考电压        ADC转换模式:单通道单次、多通道单次,单通道多次,多通道多次。               本系统中采用多通道单次转换,两个通道的模拟输入,多通道单次转换就是第一次采样转换完成之后,不需要再给一个SHI信号来触发采样,直接进行下一通道的采样和转换。寄存器设置:CONSEQx(选择几个通道,这里选CONSEQ1,对应多通道)和MSC置1(对应多通道单次转换)        通道选择:选择A0和A1作为输入通道,设置INCH_1        中断使能:ADC10IE        转换结果寄存器:不同于F5438,1232只有一个转换结果寄存器,总共两个字节,16位,可以选择前10位后者后10位存储转换结果
       下面需要做的:看看后续操作寄存器把数据传给蓝牙的代码写在哪,AD采样的中断弄懂(已经解决,参考:MSP430F1232中断学习
                                  知道了起始地址以及结束地址,如何从这中间的地址中读取其中的数据???                                   USART(通用同步异步传输) 的代码应该如何写,寄存器应该如何操作???