图书前言

随着计算机网络技术和芯片技术的发展,控制芯片的性能大幅提高,成本不断降低,网络几乎深入到我们生活的每一个角落。单片机的开发者使出浑身解数,写出精妙玲珑的代码,把单片机点点滴滴的力量汇集起来,让它如同涌泉一般尽情地迸发,灌溉滋养着各行各业。是什么灵丹妙药赐予了他们这么神奇力量?除了好的处理器之外,还要配合好的开发环境和工具链。因此,在设计ARM7TDMI处理器时,ARM的工具链工程师们和CPU设计师们强强联手,为了让它的内部结构更优化、更精炼、更到位而并肩奋战了很长时间,终于造就了ARM7TDMI的无限辉煌,并且久经岁月的洗礼依旧光芒绽放。

  然而珠联璧合的最新果实是破茧而出的ARM CortexM3处理器。它处处闪耀着ARM体系结构激动人心的新突破。它基于最新最好的32位ARMv7架构,这个架构支持高度成功的Thumb2指令集,还有很多时尚、前卫甚至崭新的特性,充满了新生代的气息。它在具备了上述优点的同时,编程模型却变得更加清新简洁了。不管你是新手还是骨灰级玩家,CortexM3都将尽情展现它的各种优点,带给你喜出望外的收获。

1. 本书特点

(1) 起点低,案例分析透彻; 

(2) 既注重基础理论,更面向应用; 

(3) 紧跟技术发展,选取典型技术开发实例; 

(4) 突破常规,勇于创新。

2. 本书的组织结构

第1章为基础部分。首先介绍了嵌入式系统的概念和组成,包括嵌入式平台的硬件构架、板级支持包、嵌入式系统上的应用程序; 然后介绍了嵌入式系统的开发流程、ARM处理器的分类、结构和选型,重点介绍了CortexM3内核的寄存器组、中断向量表、存储器映射、存储器保护单元; 最后简述了市面上流行的嵌入式操作系统的种类以及选型规则。本章主要是让读者对嵌入式系统有一个整体的印象,从而引导读者进入嵌入式系统开发的大门。

  第2章介绍了嵌入式系统的集成开发环境及驱动库。首先介绍了嵌入式系统开发的一般过程,包括目标平台创建、编译、连接、定址过程; 接着介绍了本书主要使用的开发工具链IAR,主要包括IAR EWARM的安装、驱动库的安装、EWARM 中创建新项目、编译运行程序以及将IAR的工程移植到Keil工程上的方法。本章为后面章节介绍程序的编译、测试提供了必要的基础、环境和工具支持。

  第3章主要介绍了Stellaris处理器的结构、接口特性、处理器接口表以及Stellaris处理器最小系统设计,最后以LM3S8962处理器为例列举了基本电路设计,包括滤波电路、复位电路、晶振时钟、以太网接口、RS232、RS485、CAN总线、电源模块、ADC采样、LED及按键、蜂鸣器、I2C扩展开关量输入、I2C扩展开关量输出、继电器输出等电路设计。硬件电路是整个嵌入系统的躯体骨架。

  第4章主要介绍了嵌入式编程的相关概念、处理器内部及外围接口的实现方法,主要包括硬件类型的定义位带操作、系统控制接口、系统节拍定时器、通用输入/输出接口、Flash内部总线读写、通用定时器控制、看门狗操作、中断控制、脉宽调制器以及电压比较器的使用。其中CortexM3内核的系统节拍定时器、中断控制、位带操作与其他处理器有很大的不同,读者应认真体会分析并掌握它们。软件是嵌入式系统的灵魂,只有软件牢牢地依附于硬件躯体,才会有精气神。

  第5章主要介绍了嵌入式技术中模拟量的采样变换,首先介绍了Stellaris微控制器内核集成的ADC的特性、功能,然后介绍了ADC使用过程中应注意的事项,接下来列出了ADC的常用库函数实现了包括ADC单通道触发采样、多通道采样、内部温度传感器采样、定时器触发采样、外部触发采样等几个ADC采样的例子,最后分析了ADC的软硬件过采样及实现技术。

  第6章主要介绍了UART异步串口通信的相关知识,包括UART异步串行接口的功能、主要的应用库函数,通过实例程序列举了UART串口的使用及实现方法,主要包括简单收发、发送FIFO的工作原理、发送FIFO中断原理、以FIFO中断方式发送、以FIFO中断方式接收等。通过本章的学习,读者可以灵活使用FIFO实现异步通信。

  第7章主要介绍了互联IC总线的相关设计及应用,包括I2C协议的基础、功能,I2C总线的主要驱动库函数,最后分析了部分案例的实现,主要包括I2C主机模式驱动程序、I2C芯片PCF8574的I/O扩展、I/O扩展芯片PCA9554、I2C存储器器件CAT25C02的读取等应用例程。

  第8章主要介绍了常用的同步串行通信的相关内容,首先介绍了TI的同步串行帧格式、Freescale SPI帧格式、Microwire帧格式,以及SSI通信的位速率和帧格式、FIFO操作、SSI中断,然后介绍了SSI通信的主要库函数,包括配置与控制、数据收发、中断控制等,最后给出了两个SSI通信的例程。

  第9章主要介绍了CAN总线接口模块的应用,包括CAN总线的分层结构及通信协议、CAN总线接口电路设计、CAN总线收发器设计以及外设驱动函数的分析,给出了CAN模块的应用流程及封装函数,最后介绍了与PC通信的CAN通信工具的使用方法。

  第10章主要介绍了物联网的基础——以太网接口通信的实现,主要针对LwIP进行说明,包括回调函数、应用程序状态设置函数、建立TCP连接函数、TCP数据发送函数、TCP数据接收函数、应用程序轮询的工作原理及相关函数、关闭与中止连接函数、底层TCP接口、UDP接口函数。最后给出了应用程序实例,包括UDP服务器通信、UDP客户端通信、Web服务器、TCP客户端通信等程序。

  第11章主要介绍了μC/OSⅡ实时多任务操作系统在处理器上的移植及应用,首先介绍了μC/OSⅡ模板的结构及使用应注意的问题,然后给出了应用模板的例程分析,介绍了μC/OSⅡ操作系统任务之间通信的方式,如信号量、邮箱、消息队列等。

  第12章是应用案例分析,包括人机接口、高精度ADC采样、多种传感器接入、

PWM控制电机、标准化采集模块等。

3. 相关致歉

  本书花费了部分篇幅讲述了一些案例程序代码。讲述代码是一个很令人头痛的问题,要想把程序的来龙去脉讲清楚,就不得不贴上一些源码。本书很多地方仅仅列出了一些关键的代码,帮助读者分析,次要的部分用省略号略过。同时书中的全部代码都可以在配套资料中找到。

  书中经常会略过很多基础知识和原理的讲解,因此请读者参考相关的文档。因为嵌入式技术涉及的范围较广,读者的确需要相当多的参考资料,而不能仅仅指望一本书。本书的目的在于结合作者实际工作中的一些经验,教给读者一个思考和解决问题的办法,让读者能够举一反三。

  在科技术语方面,书中尽量采用中英文结合的方式。多数缩写和英文都在附录中给出了对应的中文。书中尽量采用中文术语进行描述,但是对于有些实在找不到准确中文表述的术语,则直接使用英文。

4. 读者对象

   本书是一本介绍CortexM3内核Stellaris处理器开发与应用的书籍,目标读者包括一线程序员、嵌入式产品设计师、片上系统(SoC)工程师、嵌入式系统发烧友、学院研究员。本书还适合下列人员阅读。

 想学习或刚刚接触CortexM3内核Stellaris处理器的开发人员。

 想学习嵌入式技术的开发人员。

 对嵌入式技术开发感兴趣的人员。

 使用CortexM3进行快速开发产品的开发人员。

  尽管本书面向CortexM3内核Stellaris处理器的初级开发人员,但读者需要熟悉相关的硬件知识以及C语言,至少能读懂书中提到的代码。

5. 致谢

  在本书的编写过程中,得到了很多人的支持和热心关注。在这里表示衷心的感谢。

感谢周立功单片机发展有限公司,公司为本书的完成提供了非常完美的测试环境、相应的硬件测试平台以及本书的部分内容和代码。

  因为本人的水平和编写书稿时间的限制,书中难免有遗漏、错误和不妥之处,恳请广大读者批评指正。联系方式为icesoar@163.com。

王黎明

2013年1月于武汉