精彩书摘:
和PIC16或PIC18等8位单片机的硬件堆栈不同,dsPIC30F。系列DSC采用软件堆栈。所有16位。PIC和dsPIC的堆栈都是建立在RAM里面,因此堆栈的深度完全决定于某颗芯片片上RAM的多少。硬件堆栈数量较少(8级或31级)、简单可靠、操作快速、不占用系统RAM,但是存在堆栈级数少、不能被用户直接操作、不支持递归运算、不能用来保存用户变量等缺点。而基于RAM的软件堆栈深度可调、可保存用户变量、操作灵活、支持递归等复杂算法。软件堆栈的缺点是占用系统RAM、芯片成本增加。
w15被用作堆栈指针,因此用户一般不要使用W15作别的用途。为了避免错误的堆栈访问,w15的最低位被硬件强制设置为“O”。该指针在中断处理、子程序调用与返回等情况下将被自动修改。与操作所有其他w寄存器的方式一样,w15也可以使用任何指令对其进行操作。这样可以简化对堆栈指针的读、写和控制操作。例如用户可以建立堆栈帧(StackFrame)。
当芯片发生复位时(任何类型的复位)w15都被初始化为指向0x0800,也就是片内RAM的起始地址(0~7FF为SFR的范围)。这样可以确保芯片一复位即可获得有效的堆栈指针,指向有效的RAM地址。这样的设计非常有利于处理一些极端情况,比如单片机复位后,在软件还没有来得及初始化SP之前就发生了非屏蔽陷阱的时候,堆栈可以用来保存断点数据。在初始化期间,用户可以根据需要将SP重新指向RAM空间内的任何地址单元。
作者简介:
石朝林,毕业于哈尔滨理工大学电机系电气自动化专业.后进修于清华大学电子系电子技术与计算机技术专业。毕业后在北京机械工业学院先后担任精密仪器系和自动化系实验员、实验室主任职务。后就职于香港科汇北京办事处负责8位、32位处理器技术支持。目前就职于微芯科技北京办事处.担任主任工程师,主要负责Mcu类产品技术支持。
作者有累计17年嵌入式系统工程设计经验,组织和参加过多个涉及MCu和模拟电路的技术开发项目,具有比较丰富的开发经验。
内容简介:
《dsPIC数字信号控制器入门与实战:入门篇》可以称作16位DsC的“入门篇”。侧重于dsPIc30F/33F系列16位数字信号控制器的基础知识和相关实际工程经验的介绍。针对这一系列McU的架构、外设、存储器模式、寻址模式、开发工具等进行循序渐进、深入浅出的介绍,从入门到精通再到实战。提供了关于数字滤波、FFT等实战范例,帮助工程师系统学习和研究,同时把指令集以简洁的表格形式呈现在读者面前,方便编程时迅速准确查找。《dsPIC数字信号控制器入门与实战:入门篇》附光盘1张,内含实用软件和程序范例。《dsPIC数字信号控制器入门与实战:入门篇》可作为工程技术人员迅速掌握dsPIC30F/33F系列16位数字信号控制器开发技术的实用参考书。
目录:
第1章 CPU架构
1.1 概述
1.2 编程者模型(Programmer’sModel)
1.2.1 工作寄存器堆
1.2.2 影子寄存器(ShadowRegister)
1.2.3 未初始化的w寄存器的复位
1.3 软件堆栈(SoftwareStack)
1.3.1 软件堆栈示例
1.3.2 W14软件堆栈帧指针
1.3.3 堆栈指针上溢(Overflow)和下溢(Underflow)
1.4 与核心相关的寄存器
1.4.1 状态寄存器(SR)
1.4.2 核心控制寄存器(CORCON)
1.4.3 其他CPU控制寄存器
1.5 算术逻辑部件(ALU)
1.6 DSP引擎
1.6.1 累加器(Accumulators)
1.6.2 乘法器(MultipIier)
1.6.3 累加器与加法器
1.6.4 舍人逻辑(RoundLogic)
1.6.5 桶形移位寄存器(BarrelShifter)
1.6.6 DSP引擎陷阱事件
1.7 除法器
1.8 指令流类型
1.9 循环结构
1.9.1 REPEAT循环结构
1.9.2 DO循环结构
第2章 中断系统
2.1 中断系统简介
2.2 中断优先级(Interrupt Priority)
2.2.1 用户中断优先级
2.2.2 CPU中断优先级
2.3 中断的操作过程
2.4 中断嵌套(Interrupt Nest)
2.5 非屏蔽中断陷阱(Non-Maskable Trap)
2.5.1 软陷阱(Solt Trap)
2.5.2 硬陷阱(Hard Trap)
2.6 软件禁止中断指令(DISI)
2.7 利用中断将CPU从SLEEP和IDLE状态唤醒
2.8 外部中断源
2.9 中断处理时序
2.9.1 单周期指令的中断响应时间
2.9.2 双周期指令的中断响应时间
2.9.3 从中断返回
2.9.4 中断响应时间的特殊情况
2.1 0中断设置流程
2.1 0.1 初始化
2.1 0.2 中断服务程序
2.1 0.3 禁止中断
2.1 1和中断相关的寄存器
第3章 程序存储器与数据存储器
3.1 程序存储器与EEPROM
3.1.1 程序存储器地址映射
3.1.2 程序计数器PC
3.1.3 从Flash或EEPROM进行数据读写的方法
3.2 数据存储器
3.2.1 概述
3.2.2 数据区地址发生单元(AGU)
3.2.3 模数寻址(ModuloAddressing)
3.2.4 位反转寻址(BitReversedAddressing)
第4章 定时计数器
4.1 概述
4.2 定时计数器的分类
4.2.1 A类定时计数器
4.2.2 B类定时计数器
4.2.3 C类定时计数器
4.3 工作模式
4.3.1 使用系统时钟作为时钟源的16位计数器
4.3.2 使用外部时钟作为时钟源的16位同步计数器
4.3.3 使用外部时钟源的异步计数器模式(A类定时计数器)
4.3.4 门控计数器模式
4.4 定时计数器中断
4.5 读和写16位定时计数器模块寄存器
4.5.1 写16位定时计数器
4.5.2 读16位定时计数器
4.6 32位定时计数器
4.6.1 32位定时器模式
4.6.2 32位同步计数器模式
4.6.3 32门控计数器模式
4.6.4 32位定时计数器的读写操作
4.7 低功耗状态下的定时计数器工作
4.7.1 SLEEP模式下的定时计数器工作
4.7.2 IDLE模式下的定时计数器工作
4.8 使用定时计数器模块的外设
4.8.1 输入捕捉/输出比较的时基
4.8.2 A/D特殊事件触发信号
4.8.3 定时计数器作为外部中断引脚
4.8.4 I/O引脚方向控制
第5章 A/D转换器及其应用
5.1 A/D转换器(ADC)概述
5.2 与10位A/D转换器相关的主要寄存器
5.2.1 ADCONl:第一A/D控制寄存器
5.2.2 ADCON2:第二A/D控制寄存器
5.2.3 ADCON3:第三A/D控制寄存器
5.2.4 ADPCFG:A/D端口配置寄存器
5.2.5 ADCHS:A/D通道选择寄存器
5.2.6 AD(2SSL:A/D输入扫描选择寄存器
5.3 A/D模块的工作特点及设置
5.3.1 ·A/D模块采样方式的设置
5.3.2 A/D转换缓冲区的使用
5.3.3 A/D转换应用范例
5.4 A/D转换的防混叠滤波器
第6章 DMA控制器(DMAC)
6.1 DMA操作模式
6.1.1 字节或字传输模式
6.1.2 寻址模式
6.1.3 DMA传输方向
6.1.4 空数据外设写(NullDataPeripheralwrite)模式
6.1.5 单次传输模式(One-Shot)
6.1.6 连续传输模式(ContinuOUS)
6.1.7 “半块传输结束”中断与“整块传输结束”中断模式
6.1.8 “乒乓”模式
6.1.9 手动传输(ManualTransfer)模式
6.1.1 0DMA请求源选择
6.2 DMA中断和陷阱
6.3 和DMA相关的寄存器
6.4 DMA控制器的使用
6.4.1 将DMA通道和相关的外设联系起来
6.4.2 对外设进行相应的配置
6.4.3 初始化DPSRAM(双端口SRAM)数据起始地址
6.4.4 初始化DMA传输计数值
6.4.5 选择相应的寻址和操作模式
第7章 串行通信端口
7.1 通用异步收发器(UART)
7.1.1 相关的寄存器
7.1.2 UART波特率发生器(BaudRateGenerator,BRG)
7.1.3 UART配置
7.1.4 UART发送器
……
第8章 输入捕捉与输出比较
第9章 电机控制专用外设
第10章 时钟电路
第11章 系统管理模块
第12章 I/O商品及相关功能
第13章 开发工具
第14章 数字滤波器设计
第15章 实时时钟模块(RTC)
附录A 快速傅里叶变换(FFT)
附录B 指令集详解
附录C 利用DSP核提高直流无刷电机的PID效率
附录D 随身携带的PIC开发利器PICKit2
参考文献
好评度