DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3081|回复: 1
打印 上一主题 下一主题

[待整理] MSP430 高速串行通信设计

[复制链接]
跳转到指定楼层
楼主
发表于 2015-7-18 07:34:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
MSP430单片机是TI 公司推出的超低功耗处理器,该系列单片机驱动电压范围为1.8V-3.3V,功耗极低(在1M 主频、2.2V 供电电压、工作模式下负载电流仅仅160uA),且价格非常低廉,其内部集成有多种模块[1]。该系列单片机可以简化电路、降低设计成本。然而MSP430系列单片机的主频大部分为8MHz, 在单片机系统设计过程中,高速实时的数据采样处理、大量的计算需求和有限单片机资源之间的矛盾会造成串行通信设计的困难。
1 串行通信实现
MSP430实现串行通信的方式有两种,一种是利用硬件通用串行同步/异步模块(USART), 通过对相应的寄存器设置后由硬件自动实现数据的接收和输出。另外一种是在定时器模块的支持下,由用户通过软件形式控制数据的接收和输出的过程。
1.1 USART 外围接口
通用同步/异步接口是一串行通道,它允许7 8 位串行位
流以编程速率或外部时钟定义的速率移入、移出MSP430。根据硬件结构,USART 外围接口支持两种不同的串行协议:通用异步协议(常简称为RS232)和同步串行协议(即SPI 协议)
用控制寄存器UCTL 中的控制位SYNC 来选择所需的模式:SYNC=0:选择异步模式UARTSYNC=1:选择同步模式SPI其异步帧格式由1 位起始位、7 8 位数据位、奇//校验位、1 位地址位(地址位模式)1 2 位停止位组成,如1 所示。通过选择时钟源和波特率寄存器的数据来确定位周期。

1 异步帧格式


使用硬件实现串行通信的好处是可以节省CPU 开销,提高CPU 的效率,降低设计难度。然而使用USART 模块实现串行通信只能使用固定的通讯协议,设计上欠缺灵活,应用范围有限。如AD8325每段数据长度为16位,而MSP430使用硬件模块只能实现7 位或者8 位数据位的接收。使用USART硬件模块将无法实现AD 采样数据的接收。在这种情况下只能使用软件方式实现串行通信。
1.2 Timer_A 处理异步串行通信协议
用比较功能经输出单元从选定引脚上移出数据可以实现发送功能。每次中断程序中设定数据可确保波特率。用捕获/比较功能,以控制寄存器的SCCIx 位从引脚上的数据移入存储器可以实现接收功能。相对而言接收数据要比发送数据复杂。在利用Timer_A实现异步串行通信时,参数比较灵活,通信协议在硬件许可的范围内可以自由定义,波特率设置也较为方便。这种通信处理方式最大的缺点在于占用了CPU 的资源,在一些实时性要求较高的场合有一定的限制,同时对设计人员也有一定的要求。
2 设计困难
我们以12.5kHz 的采样率为例分析面临的问题:图2 ADS8325的时序图[2]说明每次采样A/D最少需要22个时钟周期来完成数据的传送,为了在两次采样间隔里能够完整正确地进行A/D 转换,给予A/D 的时钟信号频率不低于22*12.5K=275KHz。这是理论上的最小值,实际测试发现最低A/D 时钟信号频率为500KHzADS8325输出一位数字信号需要一个时钟周期(A/D 的时钟周期)MSP430单片机最高时钟频率为8MHz。相当于说MSP430处理一位数据最多有16个时钟周期(单片机周期)的时间,而MSP430的中断响应就必须占用6 个时钟周期,剩下的只有10个周期。这里面包括判断起始位、接收数据、移位、计数、判断是否最后一位、存储,退出中断又得占用4 个周期。在这样短的时间里进行数据处理是十分困难的。

2 ADS8325的时序图

3 常见串行通信方式
常用经典的串行接收程序流程如图2 所示:

3 经典串行通讯接收程序


其本质是串口每来一位数据就进行一次中断,判断起始位、接收数据,再退出中断,等待下次中断来临。在CPU 时钟频率远远大于串口频率时,这种方式只是在中断时才占用CPU资源,减轻了CPU 负担。然而在CPU 频率有限的情况下,在一次中断里无法完成数据处理。如上分析,在12.5KHz 的采样频率下,MSP430处理一位数据最多有16个时钟周期(单片机周期)时间。实际上,MSP430响应中断程序需要6 个时钟周期,退出中断需要4 个时钟周期,剩下的4 个时钟周期无法完成数据处理工作。
实际测试发现,使用汇编程序编写中断程序,严格精简流程的情况下,MSP430通过图3 的程序单向接收的最高数据速率为160kpbs,换算成A/D 的采样频率不能超过7.27KHz
4 高速串行通信方式
为了提高MSP430的串行通信带宽,本设计提出了一种新的接收方案,如图4 所示。其基本思想是接收到起始位数据后进入中断处理程序,接收一位数据后不退出中断继续等待接收下一位数据,数据接收结束后,再对数据进行处理,最后才退出中断。在数据接收过程中不进行数据处理,且16位数据接收期间只进行一次中断程序,省去了进出中断的时间。

4 高速串行通讯接收程序


经过实际测试发现,A/D采样频率可以达到15KHz,是经典接收方式的两倍。
5 结语
经典串行通讯接收方式适合于CPU时钟频率远高于信号频率的情况下, 在这种情况下其效率较高, 能够大幅降低CPU的负担,此时如使用本文提供的方案则CPU的占用率过高,不是理想方案;在CPU时钟频率与信号频率接近的情况下,使用本文设计的方法可以大幅提高通信带宽。__
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-23 22:37 , 耗时 0.102913 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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