MSP430F413利用Timer_A做一个虚拟串口详解
扫描二维码
随时随地手机看文章
HT824按键板与主板之间采用串口通信的方式,在做高低温试验时候,经常出现无法通信问题。使用示波器追踪通信波形,发现波特率在温度变化时候发生了变化。理论上不应该变化的,使用的delay_us()函数。感觉不妥,打算使用定时器去做一个收发串口。之前做过曼彻斯特解码,比这个复杂。串口的还是第一次做,因为一般的MCU上都有这个外设。
参照了TI的官方历程,采用比较捕获的方式。413有3个定时器,带着3个比较捕获模块。32K的外部晶振,DCO输出1M的MCLK。了解了串口的方式就可以模拟了。串口是第一位是起始位,为低电平。后面8位是数据位,采用地位在前的方式。最后2位或1位是停止位,高电平。
数据发送时候,设置起始位,定时器比较器+1位的时间,打开中断,在中断中进行数据的变化。每次中断,定时器比较器都会加上1位的时间,这样下次中断就是等时的了。直到数据发送完成,关闭中断。