MSP430FG439上实现IO模拟UART以及移植要点解析

本文介绍了一个在MSP430FG439上实现软串口的具体实例,通过定时器A实现波特率发生器及异步串行通信。文中详细展示了完整的代码实现,并针对初学者在移植过程中可能遇到的问题进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文来自http://blog.youkuaiyun.com/hellogv/ ,引用必须注明出处!     

      最近要做MSP430上的开发,一上手就要做IO模拟UART这种难度的玩意,幸好网上已经有很多现成的MSP430的软串口实现例子,本文代码大部分参考 >http://www.microcontrol.cn/430base.htm上的《MSP430的Timer_A实现模拟串口功能例程》,并且成功移植到MSP430FG439之上,不过移植的过程有点匪夷所思。。。。由于才学430没几天,所以花了一周才调试出IO模拟UART。。。。


接下来就贴上100%能在MSP430FG439上使用的代码(即使是同一Family的不同型号,也会有区别):

 

由于网上的MSP430例程都几乎一致(都是出自TI的例程),并且大体思路没有错误(不同型号之间的设置会有变化),所以接下来介绍一下初学者移植时也许遇到的问题:

1.这里用了有特殊功能的IO脚,所以一定要对照芯片资料来确定自己所用的430对应功能在哪个IO上;

2.重点:要清楚串口帧的格式,这里用到的是10位:(0)XXXXXXXX(1),0开头,1结尾。

很多移植上的问题都是由此引起:

(1)由于发送时,从低位开始,即从1先开始发送,0最后发送,所以XXXXXXX要掉转一次(T_DATA=255-byte;);

(2)由于未知其他寄存器对TXD的影响,发送首帧时也许会出错,所以真正判断是否发送成功要从第二针开始(txd(0XFF););

(3)接收的时候,也容易受到帧格式的影响。。。。网上的例程都是用下降沿(CM1),但RXD脚收到帧的第一位却是1,最后一位是0(正如前面所说的低位先发),所以改为CM0上升沿就可以收到了,收到的次序是1XXXXXXX0,XXXXXXX也要掉转一次(R_DATA=255-R_DATA;)才能还原源数据。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值