设为首页  |  加入收藏
 本站首页 | 部门概况 | 工作动态 | 高教研究 | 教学评估 | 下载中心 | 政策法规 | 学校首页 
现在是:
热点文章
·   校督导组统计本年度评... 2017/02/23
·   关于开展校内工程教育... 2017/02/21
·   高教信息2017-1 2017/03/02
·   高教信息2017-2 2017/03/06
·   高教信息2017-4 2017/04/21
站内检索  
 
当前位置: 本站首页>>高教研究>>正文
 
MSP430单片机教学、创新实验系统
2013-11-14 08:49 常国权 

一、本项目研究的背景、意义和目的

1.1研究背景和意义

单片机由于控制功能强、可靠性高和体积小、价格低等特点,在智能仪器仪表、工业测控、家用电器等领域有着非常广泛的应用。几乎每所高校在机电、自动控制、应用电子等工科专业中都开设了相应的课程。随着单片机技术的发展,以应用需求为目标,市场越来越细化,充分突出以“单片”解决问题,而像多年前以MCS-51、96等处理器为中心,外扩各种接口构成各种应用系统的解决方案越来越不能适应各种多变的应用环境。在单片机的应用领域中,目前已出现了一些新的需求,主要体现在以下几个方面:

(1)以电池供电的应用越来越多,而且由于产品体积的限制,很多是用钮扣电池供电,要求系统功耗尽可能低,如手持式仪表、水表、玩具等。

(2)随着应用的复杂,对处理器的功能和性能要求不断提高。既要外设丰富、功能灵活,又要有一定的运算能力,能做一些实时算法,而不仅仅做一些简单的控制。

(3)产品更新速度快,开发时间短,希望开发工具简单、廉价、功能完善。特别是仿真工具要有延续性,能适应多种MCU,以免重复投资,增加开发费用。

(4)产品性能稳定,可靠性高,既能加密保护,又能方便升级。

美国德州仪器公司(TI)推出的MSP430系列超低功耗16位混合信号处理器(Mixed Signal Processor),集多种领先技术于一体,以超低的功耗、强大的处理能力、丰富的片内外设、稳定的系统、便捷的开发环境等显著优势满足了市场新的需求,并逐渐获得了越来越的应用领域。

但是,由于MSP430单片机进入国内市场较晚,市场上基于MSP430单片机的教学实验平台还不是太多,功能完善的MSP430教学实验平台就更是不多。单片机课程作为一门实践性很强的课程,必须要有一套合适的教学实验平台和实验项目来配合教学,才能实现教学目标。而自主开发设计的教学、创新实验系统能更好适合教学、实验及创新,为此,我们自行研制开发了MSP430单片机教学、创新实验系统,学生直接参与了该教学、创新实验系统的设计过程,对他们来说这本身就是一种有意义的创新、实践活动。

本项目所设计的MSP430单片机教学、创新实验系统功能完备、资源丰富、使用方便,齐全的软件实验代码和丰富、完备的实验种类可以使学生快速入门并熟练掌握MSP430单片机使用和开发方法,也可以为嵌入式系统设计者做二次开发使用。在各个软件模块都实现之后,还把所有的软件模块在uC/OS-II中以任务的形式进行了整合,通过运行整合的软件模块代码可以使初学者对该实验平台有一个总体的感性认识。该教学实验平台能够解决很多其他类型单片机不能解决的问题,具有更广泛的应用前景。

1.2本项目研究的目的

该MSP430单片机教学、创新实验系统设计与开发的目的主要有以下两个方面:

1、为高校的学生学习单片机、嵌入式系统开发提供一套教学实验平台,也可为大学生科技创新提供一个硬件和软件的基础支持。单片机课程作为一门实践性很强的课程,必须要有一套合适的教学实验平台和实验项目来配合教学,才能实现教学目标。

2、为MSP430单片机嵌入式应用系统设计者提供硬件开发环境或者为嵌入式系统工程师做二次开发使用,为他们提供硬件开发环境和软件支撑。通过这套实验平台可以很方便地实现在线编程、调试等功能,并可将其应用到对功耗要求苛刻的领域。

二、研究内容

研究的重点在于对实验系统总体规划和设计上,系统的总体规划和设计关系到整个实验系统所具有的功能和创新性,比如系统应该设计有哪些嵌入式模块,应该开发哪些相关的实验,如何进行软件代码的下载和调试等问题;研究的难点在于各个硬件模块之间如何协调设计,软件代码如何烧写和调试以及配套上位机下载软件的开发和实现等。

2.1主要内容

本项目从整体规划设计、硬件设计、软件设计和在线调试四个方面来进行规划设计,并实现MSP430教学、创新实验系统的开发与设计,最将嵌入式实时操作系统uC/OS-II移植到该实验系统上,为学生、初学者学习嵌入式系统设计或者参加大学生科技创新提供完整的学习和实验方案。

2.2硬件设计

硬件设计和软件设计是该系统的核心。硬件设计主要包括:I/O设计、电源模块、4×4按键模块、六位七段数码管模块、EEPROM存储器模块、Flash存储器模块、PC键盘接口模块、图形点阵液晶模块、字符液晶模块、串口通信模块、USB接口模块、日历时钟模块、红外接收模块、红外发送模块、SPI流水灯模块、温度传感器模块、蜂鸣器模块、RS485模块、AD/DA模块、继电器模块、无线模块、步进电机模块、BSL下载模块以及JTAG调试接口等。

2.3软件设计

软件设计主要是实现上述硬件设计的软件功能,如PC键盘功能、点阵字库等,同时,还把嵌入式实时操作系统uC/OS-II移植到了该MSP430教学、创新实验系统上,并把各个软件代码模块在嵌入式操作系统uC/OS-II上进行了整合,通过运行整合的软件模块代码可以使初学者对该实验系统有一个总体的感性认识,加快学生学习和掌握该系统的进度。嵌入式操作系统对学生学习嵌入式设计与开发有着非常重要的作用。

三、课题实现技术

3.1 实现的方法和措施

本课题先从整体设计上对整个实验平台进行了总体规划和设计,然后是绘制原理图并制作PCB板,印制电路板并焊接硬件元件,进行硬件测试,在硬件测试中为了减少系统调试的复杂度,先从电源入手,逐步调试各个硬件模块,整个硬件模块都没有问题之后再进行各个软件模块的调试,在最后才把实时操作系统uC/OS-II移植到硬件平台上,并把所有的软件模块在uC/OS-II中以任务的形式进行了整合,最终实现完整MSP430教学实验和开发平台的全部设计。

3.2 BSL接口技术

BSL接口是利用MSP430单片机内部驻留的bootloader 程序实现的自编程,通过特定的时序使得CPU进入bootloader代码段,然后利用每个MSP430芯片内部都有的Timer_A构成一个软件串口来与上位机通讯,这样可以将代码下载到芯片内部。使用BSL技术对MSP430单片机进行编程可以大大节省购买硬件仿真器成本,可以提供系统的性价比。

3.3 JTAG接口技术

JTAG是MSP430单片机集成的仿真调试接口,这种调试接口具有方便、廉价实用等优点。通过使用设计好的硬件JTAG接口可以方便地实现对实验系统在线仿真调试。这种调试方式特别适合做创新型实验或者做创新项目开发时使用,可以大大提高开发的效率。

四、规划设计

4.1系统功能模块结构

该系统主要模块有:

4×4按键模块、六位七段数码管模块、EEPROM存储器模块、Flash存储器模块、PC键盘接口模块、图形点阵液晶模块、字符液晶模块、串口通信模块、USB接口模块、日历时钟模块、红外接收模块等。

MSP430单片机教学、创新实验系统组成结构如图1所示:

4.2系统可以实现的功能实验

MSP430教学、创新实验系统可以实现的功能实验如下:

I/O与时钟实验、按键实验、LED实验、定时器实验、EEPROM存储器实验、外围模块操作、串行Flash存储器实验、串口通讯实验、AD/DA转换实验、图形点阵液晶实验、PC键盘实验、RS485通信实验、温度传感器实验、日历时钟实验、继电器实验、步进电机实验、无线模块实验、低功耗实验以及uC/OS-II移植实验等等。除了以上实验,还可以基于系统提供的软硬件资源进行扩展,做一些综合创新型实验,如:多功能电子密码锁、带无线遥控的多功能万年历等等。

4.3 MSP430教学、创新实验系统硬件设计

4.3.1串行接口电路设计

几乎所有的微控制器、PC都提供串行接口,使用电子工业协会(EIA)推荐的RS-232-C标准,这是一种很常用的串行数据传输总线标准。早期它被应用于计算机和终端通过电话线和MODEM进行远距离的数据传输,随着微型计算机和微控制器的发展,不仅远距离,近距离也采用该通信方式。在近距离通信系统中,不再使用电话线和MODEM,而直接进行端到端的连接。

要完成最基本的串行通信功能,实际上只需要RXD、TXD和GND即可,但由于RS-232-C标准所定义的高、低电平信号与MSP430单片机系统的TTL电路所定义的高、低电平信号完全不同,TTL的标准逻辑“1”对应2V~3.3V电平,标准逻辑“0”对应0V~0.4V电平,而RS-232-C标准采用负逻辑方式,标准逻辑“1”对应-5V~-15V电平,标准逻辑“0”对应+5V~+15V电平,显然,两者间要进行通信必须经过信号电平的转换,该系统上使用的电平转换芯片MAX3232是TI公司生产的,其工作电压为3.3V。

为缩小电路板面积,系统只设计了一个9芯的D型插头,通过多个跳线选择不同核心板的不同串行口,同时设计了数据发送与接收的状态指示LED,当有数据通过串行口传输时,LED闪烁,便于用户掌握其工作状态以及进行软、硬件的调试。

通过该串口接口,学生可以学习MSP430单片机USART模块的结构、原理和功能,掌握波特率的设置,掌握异步模式的设置,了解地址位多机模式、线路空闲多机模式等知识。MSP430单片机和MAX3232的详细接口电路原理图如图2所示。

MSP430单片机和MAX3232的接口

4.3.2 串行Flash存储器接口设计

串行Flash存储器以其体积小、密度高、功耗低、价位低、操作简单而备受青睐。在MSP430系统上扩展了1M字节的串行Flash W25X80,可以用来存储声音或液晶模块的汉字点阵库、图片点阵库等其他数据参数信息。使用Flash自行设计汉字库不仅操作十分简单,并且可以灵活地适用于多个设计方案。

华邦(Winbond)公司生产的Flash存储器W25X80为8Mbit串行Flash,大小为1MB,分为4096页,每页为256字节的存储单元,且带有256个字节的缓冲区;SPI的接口方式,传输速率高达18MB/秒;支持扇区擦除(4K-bytes)或块擦除(64K-byte);擦写次数高达100000次,数据保持长达20年;支持软件或硬件写保护;芯片供电电压为2.7V~3.6V,5mA的激活电流,器件的忙闲可以由内部的状态寄存器来判断。W25X80不仅成本低廉、操作简单,并且可以灵活地适用于多个设计方案。如在该系统上W25X80就用来存储点阵液晶模块的汉字库和图形库和其他的数据。

W25X80有严格的时序和规定的命令格式,操作时可以通过其特有缓冲区(256字节)对其内部进行读或写,操作结束时,应清除新指令标志以免重复响应。把W25X80存储器安排在了部分P2口,即存储器的/CS接MSP430单片机的P2.7口,存储器的DIO接MSP430单片机的P2.5口,存储器的DO接MSP430单片机的P2.6口,存储器的CLK接MSP430单片机的P2.4口。MSP430单片机和W25X80的接口如图3所示。

学生通过使用该系统上的W25X80存储器,可以了解MSP430系列单片机同步串行通讯模式的结构与原理,可以学习掌握SPI同步通讯模式以及掌握扩展串行接口Data Flash的时序和使用方法等知识。

4.3.3 EEPROM接口设计

在越来越多的嵌入式系统中,都用到EEPROM来存储掉电后需要保存的数据,EEPROM器件中,较为典型的有ATMEL公司的AT24CXX系列和AT93CXX等系列产品。AT24C02是一个2K位串行CMOS EEPROM,内部含有256个8位字节,工作电压2.7V~5.5V。AT24C02有一个16字节页写缓冲器。该器件通过I2C总线接口进行操作,还有一个专门的写保护功能。

I2C总线(Inter IC Bus)是Philips公司推出的一种用于IC器件之间连接的串行扩展总线。与并行扩展总线相比,串行扩展总线有电路结构简单、易于实现用户系统软硬件的模块化和标准化等优点。它以1根和1根串行时钟线(SCL)实现了同步数据传输,已经广泛应用于视频/音频领域、IC卡行业、汽车电子、家电产品、智能仪器仪表以及工业测控等领域。

该系统上设计了一片AT24C02串行EEPROM,可供学生学习I2C总线协议、了解EEPROM的操作、掌握口线模拟I2C时序等实验时使用。在设计时还同时扩展了另一块AD/DA器件PCF8591,PCF8591是NXP公司生产的I2C总结接口的AD/DA转换器,它们可以作为两个从器件来使用,可以用来学习地址信号寻址实验。用MSP430单片机的P5.6作为串行时钟线(SCL),用P5.7作为串行数据线(SDA)。AT24C02和PCF8591与MSP430接口的原理图如图4所示。

4.3.4 按键设计

在大量的嵌入式系统中,键盘可用来输入数字型数据或者选择控制设备的操作模式。可以说,键盘是绝大多数微控制器应用系统中不可缺少的输入类外部设备。键盘接口按照不同的标准有不同的分类方法,按键盘排布的方式可分为独立方式和矩阵方式,这是较为常用的两种方式。

矩阵方式是用N条I/O线组成行输入口,M条I/O线组成列输出口,在行列线的每一个交点上设置一个按键。列线通过电阻接正电源,将行线所接的I/O口作为MCU的输出端,而列线所接的I/O口则作为输入。当没有按键按下时,所有的输入端都是高电平。当行线输出是低电平时,一旦有键按下,则相应的输入线就会被拉为低电平,这样,通过读入输入线的状态就可得知是否有键按下。这种方式占用I/O线较少,在实际应用系统中采用较多。

在MSP430系统上扩展了4×4行列式按键,当然也可以作为1×4独立按键使用,因为MSP430系列单片机的P1口支持中断,所以,把这按键接在MSP430F149单片机的P1口,行列式按键和独立按键通过软件修改,4×4行列式按键支持行扫描识别算法和行反转识别算法以及中断方式识别算法。学生可以通过这两种按键学习键盘的设计方法,掌握键盘工作原理和编程设计以及键盘的各种扫描算法等知识。矩阵式按键与MSP430的接口原理图如图5所示。

4.3.5 六位七段数码管接口设计

数码管是一类简单的显示器件,如果需要显示的内容只有数码和某些字母,则使用数码管是一种较好的选择。由于数码管显示清晰,成本低廉,配置灵活,与微控制器的接口简单易行等优点,在很多领域,特别是家电领域应用极为广泛,如空调、电磁炉、热水器、电冰箱、DVD播放机等绝大多数用的都是数码管。数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示:数字0~9、字符A~F、H、L、P、R、U符号“—”及小数点“.”等。数码管的驱动方式分为静态显示驱动和动态显示驱动,该系统采用的是动态显示驱动方式。

该系统上设计了六位七段式共阳极动态显示数码管,通过它学生可以学习并掌握动态扫描显示的原理和编程设计,也可以用来做秒表、时钟等数码管显示实验。六位七段数码管采用的是两片HC595来驱动,可以大大节省单片机的IO口。六位七段数码管和MSP430的接口详细硬件原理图如图6所示。

4.3.6 液晶显示接口

液晶显示器以其功耗微小、可靠性高、显示信息量大、无闪烁、对人体无危害、成本低廉、便于携带、使用灵活等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。液晶显示器通常可分为两大类,一类是点阵型,另一类是字符型。点阵型液晶通常面积较大,可以显示图形;而一般的字符型液晶只有两行,面积小,只能显示字符和一些很简单的图形,简单易控制且成本低。

在该系统上提供了两种液晶显示模块,字符点阵液晶模块和图形点阵液晶模块,通过它学生可以学习并掌握字符LCD模块的使用方法,了解LCD模块在系统上与各端口相连,并学会利用C语言对字符LCD模块进行编写驱动程序。通过该图形LCD模块学生可以学习图形点阵LCD的结构、原理和图形点阵LCD的编程使用方法,掌握在MSP430上如何使用模拟总线通信方式和外围设备通信等知识。

图形液晶显示模块FG12864也可以和单片机MSP430直接接口,单片机的P4口作为数据端口,部分P5口作为控制端口,同样要端口共用,在此处也加了一个跳线开关J5,用以支持3.3V和5V的液晶。液晶显示模块和MSP430接口的详细硬件原理图如图7所示。

4.3.7 数字温度计DS18B20接口设计

数字温度计克服了接触式温度计对传感器的耐热性能要求比较苛刻的缺点,使温度计无论在使用范围还是测量精度上都有了长足的进步。

DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能数字温度传感器。它支持3V~5.5V的电压范围,系统设计更灵活、方便,系统结构更趋简单,可靠性更高。它在测温精度、转换时间、传输距离、分辨率等方面都有很大的改进,其测温系统简单,测温精度高,连接方便,占用口线少,转换速度快,与微处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。

在该系统上提供了和DS18B20的接口,这种接口比较简单,单片机的P2.3直接连接DS18B20数字信号输入/输出端DQ。MSP430单片机和DS18B20的接口如图8所示。

4.3.8 实时时钟芯片DS1302接口

DS1302是美国Dallas公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.0~5.5V。采用三线同步串行方式与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302有主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。

在该系统上提供了DS1302的接口,学生可用于做计时器、时钟、万年历等实验。MSP430单片机的P6.5连接DS1302的SCLK引脚,P6.4连接DS1302的I/O引脚,P6.3连接DS1302的CE引脚。MSP430单片机和DS1302的详细接口电路原理图如图9所示。

限于篇幅,其他模块的设计此处不再一一介绍。

五、MSP430教学实验平台软件设计

5.1异步串行通信软件模块设计

串行通信只需较少的端口就可以实现单片机和PC机的通信,具有无可比拟的优势。串行通信有两种方式:异步模式和同步模式。MSP430系列单片机都有USART模块来实现异步串行通讯。在异步模式(UART)下,接收部分自身实现帧的同步,通信双方只需使用相同的波特率即可。异步模式的帧格式由1位起始位、7位或8位数据位、校验位、一位地址位、1或2位停止位。

通过学习该软件模块,学生可以了解并掌握MSP430单片机的USART模块的结构、原理和功能,掌握异步模式的设置、波特率的设置等。异步串行通信的软件模块包括:时钟的设置、串行口设置、发送函数、接收函数(中断接收功能)等,代码略。

5.2按键软件模块设计

如何知道键盘上哪个键被按下就是键的识别问题,若键盘上闭合键的识别由专用硬件实现,称为编码键盘;而靠软件实现键盘上闭合键的识别的称为未编码键盘,我们主要研究未编码键盘的接口技术和键盘输入程序的设计。识别是否有键被按下,主要有查询法和中断法等,我们用的是查询法,而要识别键盘上哪个键被按下主要有行扫描法与行翻转法。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。可从硬件、软件两方面予以考虑,通常在按键数较少时,可采用硬件去抖动;而当按键数较多时,采用软件去抖动。

我们主要考虑软件方法:在检测到有键按下时,执行一个10ms左右(具体时间应视所使用的按键材质进行调整)的延时程序后,再确认该键电平是否仍保持在闭合状态电平,若仍保持在闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键抬起后,也应采用相同的步骤进行确认,从而可消除抖动的影响。

行扫描法又称逐行(或列)扫描查询法,是一种最常用的按键识别方法,行扫描法识别按键的基本原理是:先将所有的行线置0,读列线的值,若此时列线上的值全为1,说明无键按下;若有某位为0,则说明对应这一列上有键按下。这时改变行扫描码,使行线逐行为0,依次扫描,当读到某一列线的值为0时,就可根据此时的行扫描码和列线的值确定按键的扫描码,同时也就确定了该键的位置。

行反转法也是识别按键的常用方法。它的基本原理是:将行线接一个数据端口,先让该端口工作在输出方式;将列线接到另一个数据端口,让该端口工作在输入方式。程序使MCU通过输出端口往各行线上全部送低电平,然后读入列线值。如果此时有某键按下,则必定会使某列线值为0。接着,程序再对两个端口进行设置,使接行线的端口改为输入方式,接列线的端口改为输出方式。并且,将刚才读得的列值从列线所接端口输出,再读取行线的输入值;那么,闭合键所在的行线值必定为0。这样,当一个键被按下时,必定可以读得一对惟一的行值和列值。

5.3液晶显示软件模块设计

我们系统上使用的是FG12864图形液晶显示模块,该模块自带驱动器和KS0108控制器,兼容HD61202控制器,具有多功能指令。FG12864图形液晶模块有自己的读写时序。结合FG12864液晶模块的控制和指令表以及操作时序,可写出对液晶操作的各个函数模块代码,代码略。

另外,实验所用FG12864液晶模块是逆向显示,就是说一个字节的数据在显示的时候,高位显示在下面,低位显示在上面,在设计字模的时候要特别注意。

5.4串行Flash存储器软件模块设计

在MSP430单片机和W25X80存储器进行通信的时候,可以采用SPI方式,也可以模拟SPI方式,模拟SPI的通信方式具有通用性,所以这里采用的是模拟SPI的通信方式。为了实现模拟SPI的通信方式,就需要对W25X80存储器的读写时序有深刻的了解。

根据以上时序图,可以写出对W25X80存储器进行的两种基本操数代码。

5.5 EEPROM存储器软件模块设计

本实验板采用AT24C02作为数据存储芯片。AT24C02芯片是一片EEPROM芯片,使用SDA、SCL两线控制,数据以8位组织。一般SDA打开需要一个上拉电阻。AT24C02的数据传输过程完全符号I2C总线的数据传输协议,主要包括以下几个过程:

1、AT24C02的启动与停止时序:当SCL高,SDA由高变低时,总线启动;当SCL高,SDA由低变高时,总线停止。

2、AT24C02的读操作:允许访问任何位置的数据,读操作过程为:首先发送控制位0xA0,然后发送地址,然后重新启动总线,接着发送控制位0xA1,再接受数据。

3、AT24C02的写操作:操作控制为0xA0,首先开启总线,发送控制位0xA0,然后发送地址,最后写入数据,停止总线。

根据I2C协议和AT24C02的操作时序可以编写出基本软件模块代码。

5.6数字温度计DS18B20软件模块设计

DS18B20软件模块可细分为复位函数、写命令函数、读命令函数、读出温度函数、温度数据处理函数等。根据DS18B20的操作时序可以编写出基本软件模块部分函数代码。

5.7实时时钟DS1302软件模块设计

本系统的时钟芯片采用的是采用三线同步串行通信方式,DS1302有自己的控制字和内部寄存器,可以通过串行通信方式来对DS1302进行读写操作。

限于篇幅,其他模块的设计此处不再一一介绍。

5.8 嵌入式实时操作系统uC/OS-II

uC/OS-Ⅱ在性能上并不亚于商业级软件的RTOS。区别在于uC/OS-Ⅱ只是一个实时操作系统内核。而商业软件一般是一个包括调试手段在内的完整的软件包。uC/OS-Ⅱ可以在PC的DOS环境下运行。95%以上代码用C语言写成,而与CPU硬件相关的代码只有两个文件,每个文件也只有约两页纸。其中一个文件用汇编写成,另一个文件用C写成。uC/OS-Ⅱ是专门为嵌入式应用写的实时内核,除可移植性外,可固化、可裁剪。用户可以只选用对其应用程序有用的那一部分,故内核目标代码可以剪裁到小于1.5KB,大则可以大到10KB以上。uC/OS-Ⅱ可以管理和调度约60个任务。由于uC/OS-Ⅱ是可剥夺型的,在任务调度过程中要处理可能发生的竞争,每个任务都要有自己的栈空间,故任务越多,RAM的需求量就越大。

5.10.2uC/OS-Ⅱ的内核结构

多任务系统中,内核(kernel)负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务间的通信。内核提供的基本服务是任务切换。使用实时内核可以大大简化应用系统的设计,因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核本身也增加了应用程序的额外负荷,因为内核提供的服务需要一定的执行时间。图14示意µC/OS-Ⅱ的文件结构以及与硬件的关系。

5.10.3 uC/OS-Ⅱ在MSP430上的移植

MSP430F149单片机有2KB片内RAM,60KB片内Flash,也就是说程序空间有60KB,拿出几KB来运行实时内核没有问题。当然,uC/OS-Ⅱ也要占用一部分RAM空间,即占用片内RAM的一部分。要实现uC/OS-Ⅱ向MSP430的移植,需要做两方面的工作:一是重新定义内核的大小和功能;二是为内核编写与硬件相关的代码。

1、移植过程的剖析

从uC/OS-Ⅱ的文件结构可以看出,uC/OS-Ⅱ与CPU类型无关的C代码文件uC/OS.C包括很多文件,它们是uC/OS-Ⅱ的内核和很多功能函数,其中前面3个文件是实时内核、任务管理和时钟节拍,这3个文件是一定要用的。后面6个功能函数用于任务间通信,应用程序中可能只用到其中的几个,不用的可以不包含进去,以避免编译时生成没用的代码。这个部分代码与CPU类型无关,在移植时,这些文件一个字也不要动。

配置文件OS_CFG.C需要根据应用配置,主要作用是确定uC/OS-Ⅱ提供的系统功能函数中,应用程序用哪些、不用哪些,这个文件移植时要修改。

与CPU类型有关的代码文件主要有3个:OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C。OS_CPU.H文件定义用于特定CPU的数据类型、定义相关的宏。OS_CPU_A.ASM是用汇编语言写的与硬件有关的代码,OS_CPU_C.C文件是用C语言写的与硬件有关的代码。由于移植使用的C交叉编译工具在C代码中可以插入汇编语句,在移植中,将2个文件合成为1个文件。

产生时钟节拍的定时中断来自单片机内部,可以用实时时钟产生定时中断,也可以用单片机内的外设模块定时器单元来产生定时中断,这部分代码显然与硬件相关,移植时要自己写。

2、重新定义内核的大小和功能

根据应用修改的文件是OS_CFG.H,这个文件用于配置内核的属性。移植过程中,为了简单,首先应尽量减少内核中不必要的模块,这里去掉了人为将任务挂起、唤醒和删除等扩展功能,但仍然支持任务的创建和管理,也保留了信号量模块,以用于任务间的通信。

文件OS_CPU.H用于设置与微控制器的CPU核心相关的属性,包括各种数据类型对应的存储长度、堆栈宽度和增长方向以及任务调度函数OS_TASK_SW()的宏定义。与硬件相关的代码可以用C语言,也可以用汇编语言。虽然C语言的编写较为方便,但为了提高内核的速度和效率,建议使用汇编语言编写任务调度部分的代码。移植中与硬件相关的文件最主要的是OS_CPU_C.C。

其中主要包括了修改以下几个函数:断服务子程序OSTickISR()、任务堆栈初始化函数OSTaskStkInit()、让优先级最高的就绪态任务开始运行函数OSStartHighRdy()、中断级任务切换函数OSIntCtxSw()和任务级任务切换函数OSCtxSw()以及其他相关接口函数。

当在处理器上做完uC/OS-Ⅱ的移植后,紧接着的工作就是验证移植的uC/OS-Ⅱ是否正常工作,而这是移植中最复杂的一步。应该首先不加任何应用代码来测移植的uC/OS-Ⅱ,也就是说,应该首先测试内核自身的运行情况。这里通过4个步骤测试移植代码:

1)确保C编译器、汇编编译器及链接器正常工作;

2)验证OSTaskStkInit()和OSStartHighRdy()函数;

3)验证OSCtxSw()函数;

4)验证OSIntCtxSw()和OSTickISR ()函数。

5)至此,移植工作已经结束。

六、PC机下载软件设计

本软件采用Microsoft Visual Basic6.0集成开发环境开发的,界面友好、操作简单。

(1)本软件设计的核心部分(串口通信)是用MSComm控件设计的,通过设置Combo Box控件选择串口通信的波特率、校验位、数据位、停止位

(2)调用MSComm控件的setting()方法设置串口通信的参数。

(3)通过自定义的字符串转换函数生成文本、十六进制字节串

(4)调用MSComm控件的Output方法实现了串口十六进制和文本数据的发送。通过MSComm控件的OnComm()事件灵活接收数据,并实现了文本和十六进制两种方式显示数据。使用CommonDialog控件实现了数据的保存。

(5)本软件设计还使用了Timer控件实现了PC机上有效端口的检测。

(6)结合MSP430单片机的BSL原理和时序,通过USB转串口的PL2303,编写出了BSL编程下载软件。图15、图16是下载软件界面。

七、应用价值

该教学、创新实验系统自带硬件编程烧写功能,无需使用昂贵的仿真器即可实现程序的下载调试,同时,开发了和系统配套使用的下载调试软件,该软件可以在不使用昂贵仿真器的条件下对MSP430各系列单片机进行程序的下载和调试,使用起来非常方便,很适合教学和实验,大大提供了系统的性价比,具有较广泛的应用前景。

同时,系统上预留标准JTAG接口,JTAG是MSP430单片机集成的调试接口,这种调试接口具有方便、廉价实用等优点。通过该JTAG接口可以方便地实现对教学、创新实验系统进行在线仿真调试,对于开发稍大的实验项目或者创新项目可以大大提高开发效率,这具有非常重要的意义。

总之,自主开发设计的教学、创新实验系统能更好适合教学、实验及创新,学生直接参与了该教学、创新实验系统的设计过程,对他们来说这本身就是一种有意义的创新、实践活动。实践证明,该系统可以使学生快速掌握MSP430单片机的工作原理和嵌入式系统设计开发的一般方法,具有很好的实用可行性。我们认为该系统具有广阔的推广前景和较高的应用价值,推广使用会有很高的使用价值和经济效益。

上一条:应用型本科院校软件工程人才培养模式的研究与实践
下一条:高校思想政治理论课“12343”实践教学模式构建研究
关闭窗口

关于我们 | 反馈留言 | 帮助信息

版权所有:安阳工学院教学研究与评估办公室

联系方式:0372-2909697    0372-2909717 邮编:455000