描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111536420
编辑推荐
内容简介
作为学习LabVIEW与32位微处理器STM32的入门级教材,本书从LabVIEWforARM嵌入式软件架构入手,在分析STM32芯片内部每个功能模块的基础上,着重介绍使用LabVIEW对其进行编程的工作原理和开发过程,让读者知其所以然。同时,本书还配套了40个实验例程和经典案例,帮助读者快速理解和掌握图形化ARM嵌入式系统开发。通过基本原理、实验例程、案例分析,这种循序渐进、由浅入深的方式引导读者完成由STM32初学者过渡到ARM嵌入式开发工程师的转变。
目 录
目 录前言致谢第1章 软件篇 11.1 LabVIEW ARM嵌入式模块介绍 11.2 Keil RealView MDK软件介绍 41.3 Keil RTX实时操作系统介绍 51.4 LabVIEW ARM Module软件架构 71.5 LabVIEW ARM Module、RealView MDK、实验平台驱动软件安装 81.6 STM32实验范例程序查找与USB JLink-OB驱动加载 14第2章 硬件篇 192.1 ARM Cortex-M3内核简介 192.2 实验平台介绍 202.2.1 My_ARM_Starter_Board学习板介绍 222.2.2 My_ARM_Core_Board核心板介绍 252.2.3 My_ARM_DAQ_Board数据采集板介绍 272.3 实验平台资源说明 282.3.1 My_ARM_Starter_Board平台资源简介 282.3.2 My_ARM_Core_Board平台资源简介 342.3.3 My_ARM_DAQ_Board平台资源简介 352.3.4 My_ARM实验平台总结 37第3章 基础模块篇 383.1 GPIO 383.1.1 GPIO介绍 383.1.2 GPIO工作方式 393.1.3 GPIO驱动VI 453.1.4 两种驱动实现方式比较 553.1.5 GPIO总结 563.2 ADC/DAC 563.2.1 ADC介绍 573.2.2 ADC驱动实现 583.2.3 DAC介绍 623.2.4 DAC驱动实现 633.3 中断 663.3.1 外部中断 673.3.2 外部中断驱动实现 693.3.3 内部中断 763.3.4 定时器中断驱动实现 783.4 PWM生成 913.4.1 PWM原理及应用 923.4.2 PWM驱动实现 923.4.3 PWM参数设置技巧 973.5 看门狗 973.5.1 独立看门狗介绍 983.5.2 独立看门狗驱动实现 993.5.3 窗口看门狗介绍 1003.5.4 窗口看门狗驱动实现 1013.6 TFTLCD显示、触摸屏及OLED显示 1033.6.1 TFTLCD显示原理 1043.6.2 TFTLCD显示驱动实现 1053.6.3 触摸屏工作原理 1093.6.4 触摸屏驱动VI 1103.6.5 OLED工作原理 1123.6.6 OLED驱动实现 1133.7 RTC时钟/待机与唤醒 1143.7.1 RTC时钟介绍 1143.7.2 RTC时钟驱动实现 1153.7.3 待机与唤醒 1183.7.4 待机与唤醒驱动实现 1193.8 IIC/SPI总线 1203.8.1 IIC协议介绍 1203.8.2 IIC协议驱动实现 1223.8.3 EEPROM驱动实现 1253.8.4 SPI协议介绍 1293.8.5 SPI协议驱动实现 1313.8.6 Flash驱动实现 1323.9 RS232/RS485/CAN总线 1363.9.1 RS232协议介绍 1363.9.2 RS232驱动实现 1373.9.3 RS485协议介绍 1393.9.4 RS485驱动实现 1393.9.5 CAN协议介绍 1403.9.6 CAN驱动实现 1453.10 红外遥控 1483.10.1 红外遥控工作原理 1493.10.2 红外遥控驱动实现 1503.11 三轴加速度传感器 1533.11.1 三轴加速度传感器工作原理 1543.11.2 三轴加速度传感器的驱动实现 155第4章 高级模块篇 1574.1 SRAM 1574.1.1 SRAM读写与管理 1584.1.2 SRAM管理的驱动实现 1584.2 SD卡 1614.2.1 SD卡的应用 1614.2.2 SD卡驱动实现 1624.3 FATFS文件系统 1644.3.1 FATFS文件系统介绍 1644.3.2 FATFS文件系统驱动实现 1654.4 中文显示 1704.4.1 中文显示原理 1714.4.2 中文显示的驱动实现 1744.5 图片显示 1754.5.1 图片显示原理 1764.5.2 图片显示的驱动实现 1774.6 音乐播放 1784.6.1 音频播放原理 1794.6.2 音频解码与播放的驱动实现 1794.7 录音机 1824.7.1 录音机工作原理 1824.7.2 录音机的驱动实现 1824.8 FM收发 1844.8.1 FM收发设置 1844.8.2 FM的驱动实现 1854.9 摄像头 1884.9.1 摄像头工作流程 1904.9.2 摄像头的驱动实现 1904.10 USB通信 1944.10.1 USB设备开发流程 1964.10.2 USB通信的驱动实现 2024.11 2.4G无线通信 2044.11.1 无线通信模块介绍 2054.11.2 无线通信的驱动实现 2064.12 TCP/IP网络传输 2094.12.1 TCP/IP网络传输介绍 2104.12.2 TCP/IP传输协议的驱动实现 2134.13 Web网页服务 2164.13.1 Web服务开发流程 2164.13.2 Web服务的驱动实现 219第5章 基础实验篇 2205.1 入门实验 2205.1.1 循环实验 2205.1.2 软件仿真 2265.1.3 硬件调试 2295.1.4 程序优化 2305.1.5 程序发布 2355.1.6 程序架构 2365.1.7 实验总结 2395.2 GPIO实验 2405.2.1 流水灯实验 2405.2.2 蜂鸣器实验 2455.2.3 按键捕捉实验 2485.2.4 实验总结 2515.3 ADC/DAC实验 2515.3.1 ADC温度采集报警实验 2525.3.2 DAC正弦波生成实验 2575.3.3 实验总结 2635.4 中断实验 2635.4.1 外部I/O中断实验 2635.4.2 定时器更新中断实验 2775.4.3 脉冲测量实验 2865.4.4 编码器测量实验 2955.4.5 实验总结 3055.5 PWM实验 3065.5.1 PWM驱动舵机实验 3065.5.2 实验总结 3135.6 看门狗实验 3135.6.1 独立看门狗实验 3135.6.2 窗口看门狗实验 3165.6.3 实验总结 3225.7 TFTLCD显示/触摸屏/OLED实验 3225.7.1 TFTLCD显示实验 3225.7.2 触摸屏实验 3265.7.3 OLED显示实验 3305.7.4 实验总结 3345.8 RTC时钟/闹钟与待机唤醒实验 3345.8.1 RTC时钟实验 3345.8.2 RTC闹钟实验 3425.8.3 STM32待机与唤醒实验 3485.8.4 实验总结 3555.9 IIC/SPI实验 3555.9.1 EEPROM(IIC)读写实验 3555.9.2 Flash(SPI)读写实验 3595.9.3 实验总结 3645.10 RS232/RS485/CAN实验 3645.10.1 RS232通信实验 3645.10.2 RS485通信实验 3705.10.3 CAN通信实验 3745.10.4 实验总结 3785.11 红外遥控实验 3785.11.1 软件架构设计 3795.11.2 红外接收头硬件连接原理图 3815.11.3 编写主VI程序 3815.11.4 编写定时器4的中断服务子VI程序 3825.11.5 程序编译、下载、调试 3845.11.6 实际运行结果 3875.12 三轴加速度传感器实验 3875.12.1 软件架构设计 3885.12.2 3D加速度传感器接口原理图 3885.12.3 编写主VI程序 3905.12.4 程序编译、下载、调试 3915.12.5 实际运行结果 391第6章 高级实验篇 3936.1 内存SRAM管理实验 3936.1.1 软件架构设计 3936.1.2 外部SRAM接口连接原理图 3946.1.3 编写主VI程序 3956.1.4 程序编译、下载、调试 3956.1.5 实际运行结果 3976.2 SD卡读写实验 3986.2.1 软件架构设计 3986.2.2 SD卡插槽连接原理图 3996.2.3 编写主VI程序 3996.2.4 程序编译、下载、调试 4006.2.5 实际运行结果 4006.3 FATFS文件系统实验 4016.3.1 软件架构设计 4026.3.2 FATFS文件系统硬件原理图 4026.3.3 编写主VI程序 4036.3.4 程序编译、下载、调试 4036.3.5 实际运行结果 4046.4 中文显示实验 4056.4.1 软件架构设计 4056.4.2 中文显示硬件原理图 4066.4.3 编写主VI程序 4066.4.4 程序编译、下载、调试 4076.4.5 实际运行结果 4086.5 图片显示实验 4096.5.1 软件架构设计 4096.5.2 图片显示硬件原理图 4106.5.3 编写主VI程序 4106.5.4 程序编译、下载、调试 4116.5.5 实际运行结果 4126.6 音乐播放实验 4126.6.1 软件架构设计 4136.6.2 MP3模块硬件原理图 4136.6.3 编写主VI程序 4156.6.4 程序编译、下载、调试 4156.6.5 实际运行结果 4166.7 录音机实验 4176.7.1 软件架构设计 4186.7.2 录音机硬件原理图 4186.7.3 编写主VI程序 4206.7.4 程序编译、下载、调试 4216.7.5 实际运行结果 4216.8 FM收发实验 4226.8.1 软件架构设计 4236.8.2 FM模块硬件原理图 4236.8.3 编写主VI程序 4256.8.4 程序编译、下载、调试 4256.8.5 实际运行结果 4266.9 摄像头视频拍照实验 4276.9.1 软件架构设计 4286.9.2 摄像头模块与STM32之间的硬件连接 4306.9.3 编写主VI程序 4306.9.4 编写外部I/O的中断服务VI程序 4316.9.5 程序编译、下载、调试 4326.9.6 实际运行结果 4346.10 USB通信实验 4346.10.1 USB通信架构开发流程 4346.10.2 USB固件程序框架设计(STM32) 4356.10.3 USB设备硬件原理图(STM32) 4366.10.4 USB固件程序编写(STM32) 4376.10.5 USB固件程序编译、下载、调试 4376.10.6 USB设备驱动文件生成(主机PC) 4386.10.7 USB应用程序开发(主机PC) 4456.10.8 实际运行结果 4486.11 2.4G无线通信实验 4496.11.1 2.4G无线通信程序开发流程 4506.11.2 NRF24L01发送方程序编写(STM32) 4506.11.3 NRF24L01接收方程序编写(STM32) 4516.11.4 NRF24L01无线模块接口硬件原理图 4526.11.5 无线通信程序编译、下载、调试 4526.11.6 实际运行结果 4546.12 TCP网络传输实验 4566.12.1 TCP网络传输开发流程 4566.12.2 TCP服务器端程序编写(下位机STM32) 4566.12.3 TCP客户端程序编写(上位机PC) 4576.12.4 ENC28J60网络传输模块硬件原理图 4596.12.5 TCP网络传输程序编译、下载、调试 4596.12.6 实际运行结果 4606.13 Web网页服务实验 4626.13.1 Web服务器端程序编写(下位机STM32) 4636.13.2 ENC28J60网络传输模块硬件原理图 4646.13.3 Web服务器程序编译、下载、调试 4666.13.4 实际运行结果 466第7章 综合实验篇 4697.1 3D游戏手柄实验 4707.1.1 软件架构设计(标准状态机) 4717.1.2 My_ARM学习板接口连接原理图 4727.1.3 My_ARM学习板接口实物图 4737.1.4 编写主VI程序 4737.1.5 编写I/O中断服务VI程序 4767.1.6 程序编译、下载、调试 4767.1.7 USB驱动生成安装 4797.1.8 上位机应用程序APP 4827.1.9 实际运行结果 4837.2 电机闭环控制实验 4847.2.1 软件架构设计(标准状态机) 4857.2.2 My_ARM学习板接口连接原理图 4877.2.3 My_ARM学习板接口实物图 4887.2.4 编写主VI程序 4887.2.5 编写定时器中断服务VI程序 4947.2.6 程序编译、下载、调试 4957.2.7 PID参数整定方法 4987.2.8 上位机应用程序APP 5027.2.9 实际运行结果 5047.3 音频信号在线监测实验 5057.3.1 软件架构设计(标准状态机) 5087.3.2 My_ARM学习板接口连接原理图 5107.3.3 My_ARM学习板接口实物图 5117.3.4 编写主VI程序 5117.3.5 程序编译、下载、调试 5187.3.6 上位机应用程序APP 5207.3.7 实际运行结果 520附录 522
前 言
前 言想要深入了解美国国家仪器公司(NI)在嵌入式系统领域今后重点投入和发展的用户,可以参考Dr.T(NI公司创始人兼CEO)撰写的《2012年嵌入式系统展望》和《2013年嵌入式系统展望》两篇文章(https://lumen.ni.com/nicif/zhs/infoembdsystrends/content.xhtml)。在2012年的文章里面,Dr.T回顾了传统的嵌入式开发,介绍了NI公司现在的嵌入式开发架构,以及将来完美的解决方案。下面让我们先通过下表来看看NI公司都支持哪些具体的嵌入式硬件开发及其特点与优势。 表 NI嵌入式硬件支持概况嵌入式硬件 主流芯片 优点 缺点 NI软件工具包微控制器 8051、MSP430单片机 低成本、体积小、易于编程 在高性能的应用中会力不从心 C Generator Toolkit微处理器 ARM7、ARM9、M3、M4、M7 高时钟频率,可以完成高性能的应用,易于编程 高功耗、顺序处理结构 Embedded for ARM Toolkit数字信号处理专用器件 DSP(ADI、TI) 支持硬件浮点计算,处理速度快 固有的顺序处理机制 Embedded for DSP Toolkit通用计算处理器 CPU(Intel、AMD) 支持多核并行处理器机制,处理速度极快 高功耗、系统中必须有CPU Real-time Module现场可编程门阵列 FPGA(Xilinx、Altera) 可以通过软件定义的高灵活性硬件,可重复编程的电路–固有的并行处理架构 成本高、功耗高 FPGA Module从上表中可以看出,NI公司支持的硬件非常广泛,基本上涵盖了所有种类(除ASIC外)的嵌入式通用芯片。其中对ARM、FPGA和CPU的支持持续更新;而单片机和DSP的更新则较慢,也很少在国内推广,仅限于高校使用;FPGA的势头猛,也是NI现在以及未来重点支持的五大方向之一;由于ARM内核的芯片近些年在移动市场占据了越来越多的份额,NI公司也开始顺应潮流,开发出相应的工具包;DSP这两年有被FPGA逐步取代的趋势,今后,NI公司对DSP的支持度会逐年降低;CPU在主频和多核领域有着无可替代的优势,因此,NI公司不会放弃它,产品具体体现在PXI平台和cDAQ机箱;而单片机性能相对较弱,NI公司官方不会再支持。 图1显示的是NI公司的LabVIEW图形化软件所能支持的处理器和嵌入式操作系统的全部家族成员。 图1 LabVIEW支持的处理器和嵌入式操作系统家族成员在国内,ARM7/ARM9同样受到很多工程师的欢迎,这类MCU非常适合于Windows CE系统,因此,经作者对国内市场的分析,并结合NI的战略,计划推出3本有关LabVIEW嵌入式开发的书,本书就是其中之一。 本书重点介绍嵌入式家族中的ARM Cortex-M3成员,即如何利用LabVIEW图形化软件,帮助用户快速实现一个小型ARM嵌入式系统原型开发。 首先从LabVIEW这个闻名全球的图形化软件说起。提到LabVIEW,相信很多工程师都不陌生,即使没有使用LabVIEW做过项目开发,或多或少也听说过LabVIEW的强大功能。对于想系统学习或者提高LabVIEW编程能力的学生和工程师,作者向大家推荐两本经典教材,分别是阮奇桢编著的《我和LabVIEW》和陈树学编著的《LabVIEW宝典》。 下面为大家简单介绍一下LabVIEW。 LabVIEW全称是Laboratory Virtual Instrumentation Engineering Workbench,是由美国国家仪器公司(NI)于1986年发明的,的版本是2015,以后的版本号均按年份命名,于每年的8月发布。NI公司的LabVIEW之父Jeff Kodosky已经申请并获批68项LabVIEW专利。尽管LabVIEW还没有像C语言那样被ISO组织接受并认证,但它已经成为工业自动化和测试测量行业事实上的标准。 以LabVIEW为核心,配合不同行业的专用工具包,结合NI强大的硬件平台所构成的这种“图形化设计”理念,已经快速渗透到各行各业,形成了一个完整的生态系统。尤其是在嵌入式应用、FPGA设计、运动控制、图像处理、半导体测试、射频等领域,它将占据越来越多的市场份额。 图2显示的是LabVIEW针对各行各业的软件模块。 图2 LabVIEW所有软件模块图2的上半部分展示上位机纯软件开发模块,具体说明如下:针对C语言编写的代码可以使用库函数节点来调用;针对MATLAB编写的算法可以使用MathScript节点来调用;针对LabVIEW自身则直接使用数据流思想进行编程;针对Simulink或者HIL(硬件在环)可以使用Simulation模块来调用;针对工业自动化控制可以使用Statecharts(状态图)模块来编程。 图2的下半部分展示下位机嵌入式软件开发模块,主要说明如下:针对DSP/ARM固件驱动开发可以使用LabVIEW嵌入式模块实现;针对Xilinx FPGA可以使用NI FPGA工具包进行开发;针对多核处理器可以使用LabVIEW Real-Time模块进行开发。 本书向大家介绍的正是LabVIEW在嵌入式领域中的应用。下面来了解一下LabVIEW在这个领域的嵌入式硬件产品。 图3显示的是NI公司针对嵌入式领域研发的一系列硬件设备,例如,LabVIEW Desktop可以运行在PC、笔记本电脑、工控机、PXI控制器或者cDAQ机箱上;LabVIEW Real-Time和FPGA模块可以用来开发PXI系统、cRIO、sbRIO,以及MyRIO等硬件设备;LabVIEW嵌入式模块可以用来开发用户自定义功能的DSP、ARM,或者可编程数据采集卡等硬件设备。 图3 LabVIEW可编程硬件设备截至目前,LabVIEW能够直接开发的嵌入式处理器包括: ADI公司的Blackfin处理器。 TI公司的DSP处理器。 ARM公司的ARM Cortex-M3、ARM7、ARM9处理器。 Xilinx公司的FPGA处理器。 当然,除了以上这些种类的芯片外,LabVIEW还支持任意一款32位MCU处理器,但是需要开发者具备非常丰富的软硬件知识和经验才能移植成功,工作量比较大。 LabVIEW生成的EXE可以直接运行的嵌入式系统包括: Keil公司的RTX实时操作系统。 Lineo公司的uClinux实时操作系统。 RedHat公司的eCos实时操作系统。 Wind River System 公司的VxWorks实时操作系统。 当然,除了以上4类嵌入式操作系统外,LabVIEW还可以运行于Windows、Pharlap、UNIX、Linux等操作系统。 本书重点向大家介绍如何利用LabVIEW快速、高效地开发可以运行于ARM Cortex-M3处理器上的应用程序。近两年,ARM内核的处理器在国内占据了越来越多的市场份额,这是因为这类微处理器在传统的中低端嵌入式领域有着非常高的性价比。目前应用广的ARM Cortex-M3处理器又以意法半导体(ST)公司的STM32F10x和流明诺瑞公司(已被TI公司收购)的LM3S8962为知名。因此,本书配套的实验平台选用的就是以STM32芯片为核心而设计制作的学习板。 下面简单对比一下利用传统文本语言开发和利用LabVIEW图形化开发之间的差别,如图4所示。 图4 汇编语言、C/C 语言与第四代图形化编程语言之间的区别从图4中读者或许感觉不到LabVIEW的优势所在,那么再来看看图5所显示内容,即如何在处理器和操作系统的基础上实现多线程编程。 从图5中应该可以明显地看出二者的优劣。对于使用LabVIEW的用户来说,在开发一个多线程多任务的程序时,只需要关注LabVIEW环境下的while循环结构和case条件结构,就能实现其所有的需求,并且LabVIEW支持前面板在线实时调试,无须再像传统开发方式那样通过串口打印、IDE等工具来调试。这一切只要LabVIEW一个图形化软件就能轻松完成。 后,设计嵌入式系统时选用LabVIEW的十大理由如下: 借助LabVIEW图形化设计环境,实现快速编程与部署。 重复使用传统嵌入式代码、C语言库和官方汇编库。 借助内嵌实时操作系统,灵活应对严格实时需求。 借助内置调试、仿真和用户界面功能,实现快速原型开发。 集成数百种信号处理、数学分析、ARM硬件驱动VI。 不需要严格的计算机C语言训练,即可快速上手编程。 拥有丰富的实验例程和标准的范例模板程序。 确保软件投资收益,轻松部署硬件平台。 借助LabVIEW平台的通用性,灵活调用附加功能模块。 LabVIEW近30年的发展与改进,帮助全球工程师协作共进。 图5 LabVIEW与C*两种语言的多线程编程本书的配套资料中包含开发实验平台(STM32学习板)所有相关的原理图以及完整的LabVIEW程序源代码,每个驱动VI都有详细的帮助文档,所有范例程序框图都添加了详细的注释。读者只需要点击VI运行按钮,就可以直接将LabVIEW程序框图下载到STM32芯片中进行图形化在线调试,而无须通过串口等调试工具,因此,可以极大地简化开发过程,缩短调试周期,提高项目开发效率。 关于软件的说明如下: 1)本书涉及的所有开发软件、学习资料和视频教程均可以通过百度云盘免费下载和使用。云盘中的文件夹列表说明和具体的下载地址,请参考本书附录。 2)对于没有网络或者网速较慢的用户,可以购买本书配套的U盘(16GB),里面包含了本书配套的开发软件、学习资料和视频教程。需要购买的用户可以通过邮箱[email protected]与作者联系,也可以直接在淘宝(https://shop123596343.taobao.com/?spm:2013.1.100126.2. zifk17)进行选购。 作者是一名NI资深软件架构工程师(CLA),对于写作并不擅长,书中错漏之处还望大家指正。同时作者也是一名LabVIEW爱好者,作为全球LabVIEW爱好者大家庭中的一员,的愿望就是,希望大家通过对本书的学习,按照基本原理、实验例程、案例分析这种循序渐进的学习方式,由STM32初学者成长为一名ARM嵌入式开发工程师,并将LabVIEW技术运用在自己的实际工作中。 读者对本书有任何意见或建议欢迎与作者联系,作者邮箱:[email protected]。 王电令2016年4月于美国国家仪器,中国总部致 谢感谢我亲爱的同事,写书虽然是个人行为,但他们还是给予了我限度的支持和帮助。 感谢院校和技术市场部的李甫成和贾青超先生,他们主动为我联系了出版社、公司市场、法律等部门的人员。还要感谢AES经理沈晨先生和同事李治野、吴湛、王陈浩、黄晶、杜非凡、刘璐、孙平山和AE同事张超一、俞宝清、杨堃、张凯,他们帮助我审阅了部分书稿,并提出了宝贵的意见。 感谢市场部的贾青超、徐剑杰、周臻、崔鹏、李晓锦等同事,他们为本书做了大量的宣传工作。 感谢VIHOME社区的版主“虚拟小强”于海军先生,他为我提供了展示自己研究成果的平台。社区链接如下: http://www.vihome.com.cn/bbs/forum.php?mod=forumdisplay&fid=690感谢所有通过论坛、博客、Email等渠道与我探讨LabVIEW嵌入式开发技术的网友,在写书以及产品研发的过程中,我的很多思路和灵感都源自广大网友的智慧激发。 感谢机械工业出版社的策划编辑张国强先生为我提供了这次出书的机会。 后,还要特别感谢我的妻子,她是本书的位读者,帮助我修正了初稿中的一些语法错误。她在生活中体贴入微,对我写书的工作全力支持。正是由于妻子的鼓励和支持,我才得以克服重重阻力和困难,完成此书。 谨以此书献给所有爱好LabVIEW嵌入式系统开发的学生、老师和工程师们!
评论
还没有评论。