《Motorola DSP型16位单片机原理与实践》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:邵贝贝等编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2003
  • ISBN:7810772449
  • 页数:291 页
图书介绍:本书扼要介绍了Motorola的DSP的概况、内核结构、指令系统和片内诸多I/O模块的使用方法;介绍了如何自己做一个DSP的最小系统等内容。

第1章 数字信号处理概论 1

1.1 飞速发展的数字信号处理器 1

1.2 数字信号处理与模拟信号处理 2

1.3 DSP与CPU 3

1.4 Motorola的16位DSP 4

1.4.1 56800系列DSP 4

1.4.2 56800系列DSP片内的外设模块 6

1.4.3 568XX系列DSP的主要应用领域 7

1.4.4 DSP56800系列的开发工具 8

1.4.5 使用增强型内核56800E的16位DSP 5685X系列 9

1.4.6 StarCore DSP系列 10

1.5 Motorola的24位、32位DSP 10

第2章 DSP56800内核结构 12

2.1 算数逻辑单元ALU 12

2.1.1 算数逻辑单元ALU的内部结构 12

2.1.2 算数逻辑单元ALU中的数据格式 12

2.1.3 算数逻辑单元ALU中的数值计算 14

2.2 地址产生单元AGU 15

2.2.1 AGU中的内部结构与寻址方式 15

2.3.1 PCU的内部结构 17

2.2.2 用M01寄存器定义循环缓冲区 17

2.3 程序控制器PCU 17

2.3.2 程序计数器PC与条件码寄存器CCR 18

2.3.3 循环地址寄存器LA,循环次数寄存器LC和硬件堆栈HWS 18

2.3.4 运行模式寄存器OMR 19

2.4 DSP56800的存储空间分配 20

2.5 并行处理的实现 21

2.6 扩展型内核DSP56800E的结构 22

3.1.1 汇编语言的格式 25

3.1.2 常用汇编管理指令 25

3.1 DSP56800汇编语言 25

第3章 DSP56800指令集与汇编语言 25

3.2 DSP56800的寻址方式 27

3.2.1 立即数寻址与绝对地址寻址 27

3.2.2 寄存器直接寻址 27

3.2.3 寄存器间接寻址 27

3.2.4 带有偏移量的寄存器间接寻址 27

3.3 数据传输指令 28

3.2.7 存储器绝对短寻址与I/O短寻址 28

3.2.6 带事后加/减n的寄存器间接寻址 28

3.2.5 带事后加/减1的寄存器间接寻址 28

3.4 乘法与乘/加指令 30

3.5 除法指令DIV 30

3.6 移位指令 31

3.7 算数与逻辑运算指令 32

3.8 DSP56800中的并行处理 34

3.8.1 单并行处理 34

3.8.2 双重并行处理指令 34

3.9 位操作与位测试指令 35

3.10 跳转与返回指令 36

3.11 其他控制指令 37

3.12 规格化指令NORM 37

第4章 DSP56800硬件设计与开发工具制作 38

4.1 简介 38

4.2 开发板各个部分的硬件设计 38

4.2.1 时钟电路 38

4.2.2 串口电路 40

4.2.3 BDM调试工具 40

4.2.6 调试用小灯 43

4.2.4 供电电路 43

4.2.5 复位电路 43

第5章 嵌入式软件开发包SDK 44

5.1 SDK的安装过程 44

5.1.1 安装codewarrior 44

5.1.2 在codewarrior的基础上安装SDK 45

5.2 在SDK中创建一个简单工程的方法 45

5.2.1 产生一个新的SDK工程 45

5.2.2 从新工程中去掉main.c和sampleASM.asm 46

5.2.3 添加应用程序 47

5.2.4 调试程序 48

5.2.5 修改appconfig.h中的错误 48

5.2.6 再次调试程序 49

5.2.7 在主程序中设断点 49

5.2.8 运行程序 49

5.2.9 停止调试 49

5.3 SDK在线帮助和DSP功能函数库 50

5.4.1 配置config.h文件 52

5.4 用DSP实现数据采集的程序 52

5.4.2 编写main.c文件 54

5.5 定时器、中断和小灯驱动 57

5.5.1 配置config.h文件 57

5.5.2 编写main.c文件 57

第6章 定时器、复位和中断控制 59

6.1 定时器简介 59

6.2 定时器特点 59

6.5.1 定时器控制寄存器 60

6.5 定时器的相关寄存器 60

6.4 定时器功能描述 60

6.3 定时器寄存器综述 60

6.5.2 状态和控制寄存器(SCR) 63

6.5.3 比较寄存器#1(CMP1) 65

6.5.4 比较寄存器#2(CMP2) 65

6.5.5 捕捉寄存器(CAP) 66

6.5.6 加载寄存器(LOAD) 67

6.5.7 保持寄存器(HOLD) 68

6.5.8 计数寄存器(CNTR) 68

6.6.2 定时器B(只在DSP56F805和DSP56F807中) 69

6.6 定时器A、B、C、D功能描述 69

6.6.1 定时器A(只在DSP56F803、DSP56F805和DSP56F807中) 69

6.6.3 定时器C 70

6.6.4 定时器D 70

6.7 复位模块 72

6.7.1 复位相关模块中的寄存器 72

6.7.2 上电复位和低电压中断 73

6.7.3 外部复位 73

6.7.4 看门狗模块 73

6.7.5 STOP和WAIT模式的禁止功能 76

6.8 中断控制器 79

6.8.1 中断向量表 79

6.8.2 中断控制器寄存器描述 81

第7章 DSP56800的存储器 84

7.1 Flash存储器 84

7.1.1 Flash(闪速存储器)概述 84

7.1.2 Flash寄存器 84

7.1.3 Flash编程操作 90

7.1.4 应用SDK进行Flash编程 92

7.2.1 外扩存储器接口概述 96

7.2 外扩存储器接口 96

7.2.2 总线控制寄存器BCR 97

7.2.3 外扩存储器举例 97

7.3 存储器配置 98

7.3.1 编译代码 98

7.3.2 Linker Command文件 99

7.3.3 SDK启动步骤 103

第8章 串行通信接口SCI 106

8.1 串行通信协议RS-232标准 106

8.1.1 接口信号 106

8.1.2 电气特性 108

8.1.3 RS-232C连接方法 108

8.1.4 RS-232C标准接口的实现及电平转换 109

8.2 SCI简介 109

8.3.2 RXD引脚 110

8.3.3 DSP56F805 EVM板上的SPI接口 110

8.3 SCI引脚 110

8.3.1 TXD引脚 110

8.4 SCI功能 111

8.4.1 标准不归零NRZ(Non Return to Zero)数据格式 111

8.4.2 SCI发送器 111

8.4.3 SCI接收器 112

8.5 SCI寄存器 112

8.5.1 SCI波特率寄存器SCIBR 113

8.5.2 SCI控制寄存器SCICR 113

8.5.4 SCI数据寄存器SCIDR 115

8.5.3 SCI状态寄存器SCISR 115

8.6 应用SDK开发SCI 116

8.6.1 SCI的初始化 116

8.6.2 SDK中有关SCI的数据结构和命令 116

8.6.3 SDK提供的有关SCI的API 117

8.7 SCI应用开发实例 120

第9章 串行外设接口SPI 124

9.1 SPI的工作原理 124

9.2.3 串行时钟引脚SCLK 125

9.2.2 主出从入引脚MOSI 125

9.2.1 主入从出引脚MISO 125

9.2 SPI引脚 125

9.2.4 从机片选引脚? 126

9.2.5 DSP56F805 EVM板上的SPI接口 127

9.3 SPI工作模式 127

9.3.1 主机模式 127

9.3.2 从机模式 128

9.4 56F8xx系列DSP的SPI寄存器 128

9.4.1 SPI状态控制寄存器SPSCR 128

9.4.2 SPI数据宽度寄存器SPDSR 130

9.5.1 SPI的初始化 131

9.5.2 SDK有关SPI的数据结构 131

9.4.3 SPI接收数据寄存器SPDRR 131

9.5 应用SDK开发DSP的SPI 131

9.4.4 SPI发送数据寄存器SPDTR 131

9.5.3 SDK有关SPI的API 132

9.6 SPI应用开发实例 134

第10章 模数转换器ADC 137

10.1 模数转换器功能简介 137

10.2.1 ADC控制寄存器1——ADC Control Register 1 139

10.2 寄存器概述 139

10.2.2 ADC控制寄存器2——ADC Control Register 2 141

10.2.3 ADC过零控制寄存器ADZCC——ADC Zero Crossing Control Register 141

10.2.4 ADC通道列表寄存器ADLST1和ADLST2——ADC Channel List Registers 142

10.2.5 ADC采样允许寄存器ADSDIS——ADC Sample Disable Register 143

10.2.6 ADC状态寄存器ADSTAT——ADC Status Register 143

10.2.7 ADC域值状态寄存器ADLSTAT——ADC Limit Status Register 145

10.2.8 ADC过零状态寄存器ADZCSTAT——ADC ZERO Crossing Status Register 145

10.2.9 ADC结果寄存器ADRSLT 0~7——ADC Result Registers 145

10.2.10 ADC低高域值寄存器ADHLMT O~7和ADLLMT 0~7——ADC LOW AND HIGH LIMIT Register 146

10.2.11 ADC偏移寄存器ADOFS 0~7——ADC Offset Registers 147

10.3 A/D驱动 147

10.3.1 使用ADC驱动(driver)的步骤 147

10.3.2 详细介绍ADC的驱动 149

第11章 相位检测器 155

11.1 相位检测器的引脚描述 155

11.1.1 A相输入引脚PHASEA 155

11.2 相位检测器的功能描述 156

11.1.4 转换输入引脚HOME 156

11.1.3 输入引脚INDEX 156

11.1.2 B相输入引脚PHASEB 156

11.2.1 正向和反向 157

11.2.2 功能框图 157

11.2.3 用于低速或高速测量的预分频器 158

11.2.4 工作模式 158

11.3 锁存寄存器和初始化寄存器 159

11.4 寄存器定义 159

11.4.1 相位检测器控制寄存器DECCR 160

11.4.3 看门狗定时溢出寄存器WTR 162

11.4.2 滤波器采样间隔寄存器FIR 162

11.4.4 位置差寄存器POSD 163

11.4.5 位置差锁存寄存器POSDH 163

11.4.6 转角寄存器REV 163

11.4.7 转角锁存寄存器REVH 164

11.4.8 高16位位置寄存器UPOS 164

11.4.9 低16位位置寄存器LPOS 164

11.4.10 高16位位置锁存寄存器UPOSH 164

11.4.14 输入监控寄存器IMR 165

11.4.13 低16位初始化寄存器LIR 165

11.4.11 低16位位置锁存寄存器LPOSH 165

11.4.12 高16位初始化寄存器UIR 165

11.4.15 测试寄存器TSTREG 166

11.5 SDK中有关相位检测器的部分 167

11.5.1 相关数据结构 167

11.5.2 与硬件无关的接口函数定义 169

11.5.3 底层设备驱动接口函数定义 174

第12章 脉宽调制模块PWM 178

12.1 PWM脉宽调制模块的主要特性 178

12.2 PWM脉宽调制模块的引脚 179

12.3 PWM脉宽调制模块的寄存器 179

12.4 PWM脉宽调制模块的主要功能描述 179

12.4.1 预分频 179

12.4.2 PWM发生器 180

12.4.3 独立通道模式和互补通道模式 183

12.4.4 死时间产生器 184

12.4.5 软件控制输出 190

12.4.6 PWM发生器参数重载 192

12.4.7 出错保护功能 196

12.4.8 中断 199

12.5 PWM寄存器 199

12.5.1 PWM控制寄存器PMCTL 199

12.5.2 PWM出错控制寄存器PMFCTL 201

12.5.3 PWM出错状态和确认寄存器PMFSA 202

12.5.4 PWM输出控制寄存器PMOUT 203

12.5.5 PWM计数器PMCNT 204

12.5.6 PWM计数模寄存器PWMCM 204

12.5.7 PWM计数值寄存器PWMVAL0~5 204

12.5.8 PWM死时间寄存器PMDEADTM 205

12.5.9 PWM失效映射寄存器PMDISMAP1~2 205

12.5.10 PWM配置寄存器PMCFG 206

12.5.11 PWM通道控制寄存器PMCCR 206

12.5.12 PWM端口寄存器PMPORT 208

13.1.1 与PWM模块相关的几个主要的文件 209

13.1.2 arch.h文件中定义的结构体 209

13.1 PWM模块的编程 209

第13章 PWM模块的SDK编程 209

13.1.3 在pwm.h文件中定义的结构体 210

13.1.4 SDK提供的编程接口 211

13.2 AC交流感应电机的控制 213

13.2.1 流程图 213

13.2.2 相关文件源代码分析 214

13.3.2 电机控制过程 218

13.3.1 直流无刷电机 218

13.3 利用PWM模块实现对直流无刷(BLDC)电机的控制 218

13.2.3 程序运行结果 218

13.3.3 源文件结构和功能分析 219

第14章 CAN控制器局域网模块 224

14.1 CAN的性能特点 224

14.1.1 CAN总线分层结构 225

14.1.2 报文传送和帧结构 226

14.1.3 位编码解码 227

14.2 MSCAN模块 228

14.2.1 特性 228

14.2.2 MSCAN模块结构 229

14.2.3 MSCAN模块操作 235

14.3 范例程序 245

14.3.1 MSCAN初始化 245

14.3.2 MSCAN发送接收中断 247

14.3.3 主程序 247

第15章 数字滤波器的DSP实现 250

15.1 FIR滤波器的DSP实现 250

15.1.1 FIR滤波器原理 250

15.1.2 FIR滤波器的典型程序 251

15.1.3 FIR滤波器的C语言程序 255

15.1.4 SDK的FIR滤波器算法库调用 256

15.2 IIR滤波器的DSP实现 259

15.2.1 IIR滤波器原理 259

15.2.2 IIR滤波器的典型程序 261

15.2.3 IIR滤波器的C语言程序 266

15.2.4 SDK的IIR滤波器算法库 267

第16章 在568xx系列DSP上运行RTOS 271

16.1 在嵌入式系统应用中使用实时操作系统 271

16.2 嵌入式实时内核μC/OS和μC/OS-II 272

16.3 μC/OS和μC/OS-II的特点 273

16.4 实时多任务系统中的一些基本概念 274

16.4.1 不使用RTOS的系统 274

16.4.2 任务与多任务 275

16.4.3 任务切换与调度 275

16.4.4 嵌入式实时多任务系统 275

16.4.5 实时内核(the real time kernel) 276

16.4.6 任务优先级分配 276

16.4.7 优先级反转问题 277

16.4.10 可重入性 278

16.4.9 死锁 278

16.4.8 任务间的竞争 278

16.4.11 时钟节拍 279

16.4.12 信号与信号量(semaphores) 279

16.5 μC/OS的任务调度机制 280

16.6 μC/OS-II与Motorola DSP 283

16.7 向DSP56800上移植μC/OS-II 284

16.8 关于μC/OS-II V2.51 284

16.9 任务栈结构与DSP中断机制 285

16.10 关于在DSP上运行RTOS的讨论 287