TMS 320 F28x源码解读
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

随着能源日趋紧张,对电能进行有效的控制从而节约能源越发显得重要。TI推出的F28x系统芯片是一款在电动机及电力控制中被业界推崇的控制类芯片,但目前该系列芯片在国内的应用远远没有达到51系列单片机那样的程度。

五六年前,笔者自恃有十几年从事8位单片机开发的经验,曾几次捧起DSP2000系列的原理书想了解一个大概,然而几次不得不驻足兴叹。事实上,即使是一个比较简单的51系统,其入门也不能仅靠原理书来完成,必须有示范板及相关的驱动源码,初学者在逐一调试这些驱动源码的基础上才能慢慢入门和渐入佳境。

F28x(32位机)是一个较51(8位机)系统更复杂、更难学的系统,然而,相关中文书籍除翻译外版的原理书之外,基本上没有行之有效的驱动源码的介绍。事实上,TI早在2003年9月就颁布了一个V100版本的SPRC097文件,之后,在2007年9月将该文件更新为V111版本,并在2009年7月又更新为V120版本。该文件以C/C++语言为基础,通过位域结构体的方法为F28x提供了完整的一个头文件体系,并且针对F28x的外围设备给出了20个外设驱动源码(V100之后的版本增加了5个源码)。这是F28x入门的一个有效文件。

2006年初夏,笔者从国内第三方获得eZdsp翻版的示范板,发现与示范板配套的很少几个代码都取自SPRC097文件中的部分内容,但缺少了前后关联及SPRC097文件自身的系统性。因此,笔者尝试直接在SPRC097文件系统上运行该文件中的源码,多数源码竟然可以直接调试运行!之后,笔者潜心阅读、调试,并将点滴领悟记录下来。到2007年年初,这些记录(或称为解读)已有相当篇幅,笔者设计的DSP2812示范板也于2006年年底调试完毕。

2007年5月,经上海交通大学陈健老师(德州仪器DSP大学计划的国内早期发起人和组织者之一)的引荐,认识了德州仪器亚洲区大学计划部沈洁经理及半导体事业部经理谭徽博士,当年他们对笔者所做的事情以及打算将SPRC097文件源码解读成书的愿望的褒扬至今历历在目。

TI大学计划部与上海交通大学电气工程系连续两年(2008—2009年)在上海交通大学举办DSP2000青年教师暑期培训班,均采用2008年6月由笔者编写的“DSP281x外设驱动源码解读”讲义(308页)作为教材。

本书以“DSP281x外设驱动源码解读”讲义为雏形,对TI提供的外设驱动源码进行了更深入的解读,具有以下特点:

(1)对构建SPRC097文件体系的位域结构体方法及文件中出现的陌生的指令进行详细的注解;

(2)对尚未公示的采用SPRC097文件风格建立一个简捷且容易管理的新项目的方法进行解析和引用;

(3)对每条外设示例源码设置专用寄存器的指令,具体到对每一个控制位进行注释;

(4)对每一个函数(子程序),在题头说明该函数的实现功能及相关要点;

(5)说明怎样通过示波器观察关键变量,以及怎样通过CCS视窗观察动态数据及动态波形;

(6)对F28x所有外设的相关原理的叙述,围绕实际应用展开并通过图示进行说明;

(7)对反映在专用控制寄存器中非显式表示的配置表达式,都用规范的数学公式表示;

(8)通过实例归纳出相应外设驱动的设置要领。

除了原讲义关于F28x所有外设的章节外,本书还增加了“第11章CMD文件的运用”及“第12章IQmath方法概述”。其中“CMD文件的运用”是从C语言进入F28x必须掌握的概念。

本书每章后面列出的外设驱动源码来自SPRC097文件,部分源码增加了一些存储类的指令并开辟了相应的存储区,目的是为了在内存中观察数据,或在图形窗观察波形,以便获得直观的感受。本书源码均通过实际运行,可作为F28x系列芯片的参考。

本书旨在叙述各个外设的原理,并力求讲述清楚明了,而没有徘徊于原理的各个细节,对各种寄存器的介绍也进行了取舍。简言之,本书并非一本严格意义上的原理书。读者若要进行更深入的探究可查阅相关的原理书籍。

感谢上海交通大学陈健老师的推荐,使得笔者所做的一点事情得到了TI亚洲大学计划部的肯定。感谢上海交通大学电气工程系姜建民老师提供的教学平台,更重要的是由于他的介绍,笔者才结识了本书的合作伙伴周荔丹和姚钢两位博士。

特别要感谢TI亚洲大学计划部沈洁经理,她的大学计划部对上海交通大学电气工程系DSP 2000系列实验中心给予了大力的支持,同时给予笔者莫大的信任和期待。

本书的第1、2、3、6章由姚钢编写;第4、9、11、12章由周荔丹编写;任润柏编写了第5、7、8、10章,并最后统稿。

由于功力有限,错误难免。只是祈望本书少些给读者特别是自学者带来困惑,并对可能给读者造成的困惑深深致歉,请不吝赐教。联系方式:renrunbai@hotmail.com

任润柏

2010年6月于上海交通大学