DSP28335学习笔记1

本文介绍了TI的DSP中用于提高安全性的寄存器保护机制。通过状态寄存器1(ST1)的位6设置与否,可以控制是否允许DSP指令修改关键寄存器。这些关键寄存器包括器件仿真寄存器、FLASH寄存器等。文章还提供了如何在初始化过程中正确设置和取消这些寄存器保护的方法。
TI的DSP为了提高安全性能,将很多关键寄存器作了保护处理。通过状态寄存器1(ST1)的位6设置与复位,来决定是否允许DSP指令对关键寄存器进行操作。这些关键寄存器包括:器件仿真寄存器、FLASH寄存器、CSM寄存器、PIE矢量表、系统控制寄存器、GPIOMux寄存器、eCAN寄存器的一部分。

DSP由于在上电复位之后,状态寄存器基本上都是清零,而这样的状态下正是上述特殊寄存器禁止改写的状态。为了能够对这些特殊寄存器进行初始化,所以在对上述特殊寄存器进行改写之前,一定要执行汇编指令asm(“EALLOW”)或者宏定义EALLOW来设置状态寄存器1的C6位,在设置完寄存器之后,一定要注意执行汇编指令asm(“EDIS”)或者宏定义EDIS来清除状态寄存器1的C6位。

转自珠慕锋的新浪博客

<think> 嗯,用户想要了解DSP28335的学习路径。从用户提供的背景资料来看,用户已经接触过一些基础文档和工程配置内容,但需要系统化的学习指引。用户可能是一名嵌入式工程师或学生,正在开始学习这款DSP芯片。 注意到用户引用了三份资料:第一份是关于系统设计的,第二份是工程配置的笔记,第三份是工程项目创建的教程。这说明用户已经具备最基础的认知,但需要更清晰的学习路线。用户没有直接询问具体技术问题,而是询问"学习路径",表明ta更关注知识框架的搭建。 这款DSP芯片的学习确实需要循序渐进。首先必须理解其核心架构,因为DSP28335是浮点型处理器,其哈佛架构、流水线机制等特性直接影响编程方式。然后要掌握工具链的使用,因为不同于普通单片机,DSP开发对编译器和链接脚本有特殊要求——用户引用的第二篇文档恰好提到了RAM调试和Flash烧写的区别,这点很重要。 外设驱动开发应该是第三阶段,特别是PWM、ADC这些工业控制常用的模块。最后才是算法实现,发挥其数字信号处理的优势。考虑到用户可能用于电机控制或电源设计,在进阶部分加入了常见应用场景的提示。 在整理学习框架时,特意将"创建第一个工程"放在初期阶段,因为用户第三篇引用显示ta正在尝试搭建开发环境。另外补充了调试技巧作为独立环节,毕竟DSP的实时调试比普通MCU更复杂。 用户没有提及具体应用方向,所以补充了"应用开发"作为可选路径。最后推荐的两个资源——controlSUITE和TI论坛都是经过验证的优质内容源,比零散的博客更系统。回复时采用阶梯式结构,确保用户能明确每个阶段的目标和关键点。 </think> 基于DSP28335的系统学习路径可遵循以下结构化步骤,结合核心知识、工具实践与应用开发: --- ### **一、基础准备阶段** 1. **硬件架构理解** - 掌握**哈佛总线结构**、**32位浮点运算单元(FPU)** 及**150MHz主频特性** - 熟悉存储映射:`SARAM`/`FLASH`分区(参考引用[1][^1]的1.1节) - 关键外设:增强型PWM(ePWM)、高精度ADC(12位)、CAN、SPI等接口功能 2. **开发环境搭建** - 安装**Code Composer Studio (CCS)** ,配置DSP2833x器件支持包 - 掌握**工程结构**(引用[2][^2]): - 调试工程:`28335_RAM_lnk.cmd`(RAM运行) - 烧录工程:`F28335.cmd`(FLASH存储) - 通用头文件映射:`DSP2833x_Headers_nonBIOS.cmd` --- ### **二、核心实践阶段** #### 步骤1:创建基础工程 ```c #include "DSP2833x_Device.h" // 引用全局寄存器定义(引用[3][^3]) void main() { InitSysCtrl(); // 初始化系统时钟 DINT; // 关中断 InitPieCtrl(); // 初始化PIE中断控制器 // 添加外设初始化代码(如GPIO、ADC等) while(1); } ``` - **关键文件**(引用[3][^3]): - `DSP2833x_GlobalVariableDefs.c`:寄存器地址映射 - `DSP2833x_SysCtrl.c`:系统时钟配置源码 - 链接脚本选择:调试用RAM配置,发布用FLASH配置 #### 步骤2:外设驱动开发 | 外设模块 | 学习重点 | 实践目标 | |------------|---------------------------|------------------------------| | **GPIO** | 复用功能配置、上下拉控制 | LED闪烁/按键中断 | | **ePWM** | 时基/比较寄存器配置 | 生成互补PWM波(电机控制) | | **ADC** | 采样窗口/触发源设置 | 实现12位电压采集 | | **SCI** | 波特率校准、FIFO使用 | 实现PC-DSP通信 | #### 步骤3:中断系统精讲 - **PIE中断控制器层级**: `外设中断 → PIE组(INT1~INT12) → CPU级中断(INT1~INT14)` - 配置流程: 1. 使能PIE组中断:`PieCtrlRegs.PIEIERx.bit.INTyx = 1` 2. 注册中断服务函数:`EALLOW; PieVectTable.ADCINT = &adc_isr; EDIS;` 3. 开启全局中断:`EINT;` --- ### **三、进阶开发阶段** 1. **FLASH操作与固化** - 使用`MemCopy()`函数将代码从RAM搬移到FLASH(参考`DSP2833x_MemCopy.c`) - 配置`F28335.cmd`链接脚本,修正`.text`段地址到FLASH区域 2. **实时调试技巧** - 利用**Real-time Mode**监控变量(避免断点破坏时序) - 加载`.gel`文件初始化外设(引用[3][^3]) 3. **算法库集成** - 调用`IQmath`库实现定点浮点转换(`IQsin()`/`IQmpy()`等) - 集成`rts2800.lib`运行时库支持复杂运算 --- ### **四、系统设计与优化** 1. **电源与时钟设计**(引用[1][^1]) - 内核电压`1.9V`与I/O电压`3.3V`的稳压电路设计 - 时钟树配置:外部晶振→PLL倍频→外设分频 2. **抗干扰措施** - 模拟/数字电源分割(使用磁珠隔离) - ADC参考电压旁路电容布局优化 3. **Bootloader开发** - 基于SCI/CAN的串口烧录协议实现 - 跳转指令`ExitBoot()`的应用 --- ### **学习资源推荐** 1. **官方文档**: - 《TMS320F2833x Technical Reference Manual》(SPRU811) - 《C2833x IQmath Library》(SPRC087) 2. **实践资源**: - TI官网例程:`controlSUITE > C2000 > device_support > f2833x` - 调试工具:XDS100v2仿真器+TI官方开发板 > 学习路径遵循 **硬件认知→工程构建→外设实践→系统集成** 的递进逻辑,建议每阶段配合实际项目验证(如直流电机调速、数字电源控制)强化理解[^1][^3]。 --- ### 相关问题 1. DSP28335的PWM死区时间如何精确配置? 2. 如何优化ADC采样精度以减少电源噪声影响? 3. FLASH烧写后程序不运行的可能原因有哪些? 4. DSP28335STM32在实时控制应用中的优劣对比?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值