找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4900|回复: 0
收起左侧

MSP430之GPIO&ADC&串口

[复制链接]
ID:262 发表于 2014-5-20 00:54 | 显示全部楼层 |阅读模式

最近做的采集设备,采用低功耗的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,通过工具计算即可设置波特率发生寄存器的值。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表