通过TMS320F28335学习DSP的开发流程——28335的基础知识(1)

1、TMS320F28335内核的主要特点

①F28335 DSP集成了DSP和微控制器的长处,如DSP的主要特征、单周期乘法运算,F28335能够在一个周期内完成32x32位的乘法累加运算,或者两个16x16位乘法累加运算,而同样32位的普通单片机则需要4个周期以上才能完成
②快速的中断响应
③可在任何内存位置进行单周期读、修改、写操作
④可采用C/C++编程软件,效率非常高

2、处理器的主要资源

①32位浮点DSP,主频是150MHz,方便电机控制、电力设备控制及工业控制等。
②片上存储器:FLASH–256Kx16位;SRAM–34Kx16位;BOOT ROM–8Kx16位;OPT ROM–2Kx16位。其中FLASH、OPT ROM受口令保护,可以保护用户程序。
③片上外设:PWM–18路;HRPWM–6路;CAP–6路;QEP–2通道;ADC–2*8通道,12位,80ns转换时间,0-3V输入量程;SCI–3通道;MCBPS–2通道;CAN–2通道;SPI–1通道;I2C–1通道;外部存储器扩展接口–XINTF;通用输入/输出IO–88个;看门狗电路。

3、与DSP2812的性能对比

在这里插入图片描述
在这里插入图片描述

3、存储器与寄存器

(1)存储器映射

存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。
在这里插入图片描述

(2)F28335存储器特点

F28335是采用多级流水线的增强的哈佛总线结构,能够并行访问程序和数据存储空间。在F28335芯片内部集成了大量的不同的存储介质,F28335片上有256K×16位的FLASH,34K×16位的SARAM,8K×16位的BOOT ROM,2K×16位的OPT ROM,采用统一寻址方式(程序、数据和I/O统一寻址),从而提高了存储空间的利用率,方便程序的开发。除此之外,F28335还提供了外部并行扩展接口XINTF,可进一步外扩存储空间。
(1)片上SARAM
(2)BOOT ROM
(3)片上FLASH和OTP

在这里插入图片描述

(3)寄存器映射

通过#pragma预处理命令和DATA_SECTION将定义的寄存器指定到相应的存储单元内,然后即可通过C语言来操作这些寄存器。
比方说我们找到0x007010这个单元地址,那么可以通过查阅芯片数据手册了解到此单元是系统控制寄存器功能(至于此地址如何查找这个功能我们后面会具体介绍)。因此为了更好区分此单元的功能和方便后续的程序开发,可以给这个单元取一个别名SysCtrlRegs,那么这个SysCtrlRegs就是寄存器,并且这个寄存器地址就是0x007010。这个过程就是寄存器映射。

(4)如何访问F28335寄存器内容

根据#pragma和DATA_SECTION(这些是CCS软件内特定的)的特点,可以使用#pragma和DATA_SECTION将定义的寄存器与实际的存储单元对应起来,然后再使用C语言操作定义的寄存器,比如使用结构体等。假如我们要让F28335的GPIOC的第68管脚输出低电平,我们怎么使用 C 语言来处理?
(1)首先要知道GPIO外设每类寄存器所对应存储单元的首地址是哪个,比如GPIO控制寄存器,通过查询数据手册可知其首地址是0x006F80,然后使用#pragma和DATA_SECTION将定义的寄存器与实际的存储单元对应起来。

#pragma DATA_SECTION(GpioCtrlRegs,"GpioCtrlRegsFile");

该定义可在DSP2833x_GlobalVariableDefs.c文件中查找到

volatile struct GPIO_CTRL_REGS GpioCtrlRegs;

GPIO数据寄存器GPIO_DATA_REGS:

struct GPIO_DATA_REGS 
{
   union  GPADAT_REG       GPADAT;       // GPIO Data Register (GPIO0 to 31)
   union  GPADAT_REG       GPASET;       // GPIO Data Set Register (GPIO0 to 31)
   union  GPADAT_REG       GPACLEAR;     // GPIO Data Clear Register (GPIO0 to 31)
   union  GPADAT_REG       GPATOGGLE;    // GPIO Data Toggle Register (GPIO0 to 31) 
   union  GPBDAT_REG       GPBDAT;       // GPIO Data Register (GPIO32 to 63)
   union  GPBDAT_REG       GPBSET;       // GPIO Data Set Register (GPIO32 to 63)
   union  GPBDAT_REG       GPBCLEAR;     // GPIO Data Clear Register (GPIO32 to 63)
   union  GPBDAT_REG       GPBTOGGLE;    // GPIO Data Toggle Register (GPIO32 to 63)
   union  GPCDAT_REG       GPCDAT;       // GPIO Data Register (GPIO64 to 95)
   union  GPCDAT_REG       GPCSET;       // GPIO Data Set Register (GPIO64 to 95)
   union  GPCDAT_REG       GPCCLEAR;     // GPIO Data Clear Register (GPIO64 to 95)
   union  GPCDAT_REG       GPCTOGGLE;    // GPIO Data Toggle Register (GPIO64 to 95)
   Uint16                  rsvd1[8];
};
union GPACTRL_REG 
{
   Uint32              all;
   struct GPACTRL_BITS bit;
};

// GPIO A control register bit definitions */                                    
struct GPACTRL_BITS 
{  // bits   description
   Uint16 QUALPRD0:8;        // 7:0    Qual period 
   Uint16 QUALPRD1:8;        // 15:8   Qual period 
   Uint16 QUALPRD2:8;        // 23:16  Qual period 
   Uint16 QUALPRD3:8;        // 31:24  Qual period  
};

所以要让GPIO68输出一个低电平可使用C语言调用结构体内成员,如下:

GpioDataRegs.GPCCLEAR.bit.GPIO68=1;//设置GPIO输出低电平信号
  • 16
    点赞
  • 160
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SVPWM是一种矢量控制方法,用于驱动三相电机。在DSP28335芯片上,可以使用ePWM模块实现SVPWM编程调制。根据引用和引用的资料,SVPWM编程需要按照具体的思路进行配置,具体步骤包括文件模型建立、输入配置和ePWM配置。根据引用的资料,SVPWM的载波频率为10kHz,每个周期触发ADC中断采集相电流,并且需要配置死区。 综上所述,28335 SVPWM是指在DSP28335芯片上使用ePWM模块配置的一种矢量控制方法,通过SVPWM编程实现对三相电机的驱动。具体的配置步骤包括文件模型建立、输入配置和ePWM配置,同时需要设置SVPWM的载波频率为10kHz,并在每个周期触发ADC中断采集相电流。此外,还需要配置死区。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SVPWM.rar_DSP28335 svpwm_EPWM_SVPWM DSP28335_svpwm_svpwm pdf](https://download.csdn.net/download/weixin_42660494/86106527)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Simulink嵌入式自动代码DSP F28335(4)——SVPWM](https://blog.csdn.net/weixin_42773255/article/details/122094596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Matlab对TMS320F28335编程--SVPWM配置互补PWM输出](https://blog.csdn.net/qq_36625174/article/details/132092594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhengky6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值