[资料分享] MSP430之GPIO&ADC&串口

fish001   2017-11-10 21:13 楼主
     最近做的采集设备,采用低功耗的MSP430,。主控芯片需要完成完成三个功能:恒流芯片的驱动(四个管脚输出),8通道ADC转换,波特率230400串口通信。调试完成,每1ms启动一次转换与串口发送数据,没50 ms更改一次GPIO管脚输出,作为横流芯片驱动信号。
遇到的问题以及解决方案:

1. 恒流芯片驱动。恒流芯片需要单片机输出八个脉冲信号完成一次驱动,最开始采用TimerA中断进行延时,一个周期下来最小也要10ms,对采样率影响很大。后面发现驱动的高低电平之间不加延时,恒流芯片也能正常驱动,因此每50ms在GPIO引脚输出八个脉冲,进行一次驱动,耗时小于1ms,可以忽略。
2.中断。ADC采样和发送数据均在TimerB的中断中完成。TimerB有两个中断,TBIE和CCIE,前者是计数器从0计数到65535触发一次中断,后者是从0计数到TBCCR0触发中断。且进入的中断服务程序不同,TBIFG 一般进 TIMERB1_VECTOR;CCIFG 的话要看用的是哪个定时器如果是 CCR0 的话就进TIMERB0_VECTOR,如果是CR1,CCR2……则进TIMERB1_VECTOR。启动计数器,通过将其模式由停止计数设置为增计数即可。SMCLK采用8M,8分频,TBCCR0=1000,准确达到1ms中断一次。
3.ADC转换。先使能通道,打开转换内核,由于采样率较高,设置较低的采样保持时间。MSC置位,使一次采样转换完成后立即进行下一次。SHP置位,采用采样触发器。第一次采样由ADC12SC启动,中断程序中直接disable中断ENC,停止采样。中断结尾处,使能ENC。
4.串口通信,波特率230400,较高。极限传输数据230400/(10*16)=1440.大于1000,1ms能够完成数据传输任务。注意:串口通信需要p3.5,p3.4一定不要用这两个管脚作为输出。选择SMCLK,8M,通过工具计算即可设置波特率发生寄存器的值。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复