资料介绍
作为一个电子硬件工程师,怎么不能懂DSP,或者我们中有一些同学对DSP的理解还不是很多,今天就让我们给大家介绍一个DSP的入门芯片,来自TI的TMS320F28335。相信看过了这一系列的内容,大家会对DSP有初步的了解。
TMS320F28335简介:
TMS320F28335采用176引脚LQFP四边形封装,其功能结构参见参考文献。其主要性能如下:
高性能的静态CMOS技术,指令周期为6.67 ns,主频达150 MHz;
高性能的32位CPU,单精度浮点运算单元(FPU),采用哈佛流水线结构,能够快速执行中断响应,并具有统一的内存管理模式,可用C/C++语言实现复杂的数学算法;
6通道的DMA控制器;
片上256 Kxl6的Flash存储器,34 Kxl6的SARAM存储器.1 Kx16 OTPROM和8 Kxl6的Boot ROM。其中Flash,OTPROM,16 Kxl6的SARAM均受密码保护;
控制时钟系统具有片上振荡器,看门狗模块,支持动态PLL调节,内部可编程锁相环,通过软件设置相应寄存器的值改变CPU的输入时钟频率;
8个外部中断,相对TMS320F281X系列的DSP,无专门的中断引脚。GPI00~GPI063连接到该中断。GPI00一GPI031连接到XINTl,XINT2及XNMI外部中断,GPl032~GPI063连接到XINT3一XINT7外部中断;
支持58个外设中断的外设中断扩展控制器(PIE),管理片上外设和外部引脚引起的中断请求;
增强型的外设模块:18个PWM输出,包含6个高分辨率脉宽调制模块(HRPWM)、6个事件捕获输入,2通道的正交调制模块(QEP);
3个32位的定时器,定时器0和定时器1用作一般的定时器,定时器0接到PIE模块,定时器1接到中断INTl3;定时器2用于DSP/BIOS的片上实时系统,连接到中断INTl4,如果系统不使用DSP/BIOS,定时器2可用于一般定时器;
串行外设为2通道CAN模块、3通道SCI模块、2个McBSP(多通道缓冲串行接口)模块、1个SPI模块、1个I2C主从兼容的串行总线接口模块;
12位的A/D转换器具有16个转换通道、2个采样保持器、内外部参考电压,转换速度为80 ns,同时支持多通道转换;
88个可编程的复用GPIO引脚;
低功耗模式;
1.9 V内核,3.3 V I/O供电;
符合IEEEll49.1标准的片内扫描仿真接口(JTAG);TMS320F28335的存储器映射需注意以下几点:
片上外设寄存器块0~3只能用于数据存储区,用户不能在该存储区内写入程序。
OTP ROM区(0x38 0000~0x38 03FF)为只读空间,存储A/D转换器的校准程序,用户不能对此空间写入程序。
即使不应用eCAN模块,也应使能时钟模块,将为eCAN分配的RAM空间用作一般RAM。
如果设置安全代码,存储器区域Ox33FF80~0x33FFF5需全部写入数据0x0000,而不能用于存储程序或数据。反之,0x33FF80~Ox33FEF可以存储数据或程序,其中0x33FFF0~Ox33FFF5只能存储数据。
仿真工具和开发环境:
TMS320F28335开发工具有:标准的优化C/C++编译/汇编/连接器,CCS集成开发环境,评估板和XDS510仿真器。其中CCS是一个界面友好,功能完善的集成的开发平台,具有编辑、汇编、编译、软硬件仿真调试功能。
TMS320F28335 的ADC:
TMS320F28335上有16通道、12位的模数转换器ADC。他可以被配置为两个独立的8通道输入模式,也可以通过配置AdcRegs.ADCTRL1.bit.SEQ_CASC=1,将其设置为一个16通道的级联输入模式。输入的方式可以通过配置 AdcRegs.ADCTRL1.bit.ACQ_PS=1,将其设置为顺序采集。即从低通道开始到高通道结束。 值得注意的是片上ADC的输入电压范围为0--3V,一旦超过3V,片上的ADC模块将会被烧掉。TI上的DATASHEET介绍其ADC的精度可达到12位,实际上达到不了。经测试,我们估计最好的时候可以达到11位就不错了。下面我们来简单介绍一下ADC模块的原理。其数字值由下面公司来计算,其中公式中的3为片内参考电压Digital Value=4096*(Input Analog Voltage-ADCLO)/3 ;(when 0 V 《 input 《 3 V)。ADC可以分为SEQ1和SEQ2两个模块,其中SEQ1包括ADCIN00--ADCIN07;SEQ2包括ADCIN08--ADCIN15。SEQ1模块可以通过软件、PWM、外部中断引脚来启动,而SEQ2不可以通过外部中断引脚来启动。另外就是ADC可以与DMA进行数据交换。
TMS320F28335 的时钟介绍:
TMS320F28335上有一个基于PLL电路的片上时钟模块,为CPU及外设提供时钟有两种方式:一种是用外部的时钟源,将其连接到X1引脚上或者XCLKIN引脚上,X2接地;另一种是使用振荡器产生时钟,用30MHz的晶体和两个20PF的电容组成的电路分别连接到X1和X2引脚上,XCLKIN引脚接地。我们常用第二种来产生时钟。此时钟将通过一个内部PLL锁相环电路,进行倍频。由于F28335的最大工作频率是150M,所以倍频值最大是5。其中倍频值由PLLCR的低四位和PLLSTS的第7、8位来决定。其详细的倍频值可以参照TMS320F28335的Datasheet。下面是F28335的时钟设置:
void InitPll(Uint16 val, Uint16 divsel)
{
// Make sure the PLL is not running in limp mode
if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
{
// Missing external clock has been detected
// Replace this line with a call to an appropriate
// SystemShutdown(); function.
asm(“ ESTOP0”);
}
// DIVSEL MUST be 0 before PLLCR can be changed from
// 0x0000. It is set to 0 by an external reset XRSn
// This puts us in 1/4
if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
EDIS;
}
// Change the PLLCR
if (SysCtrlRegs.PLLCR.bit.DIV != val)
{
EALLOW;
// Before setting PLLCR turn off missing clock detect logic
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLCR.bit.DIV = val;
EDIS;
// Optional: Wait for PLL to lock.
// During this time the CPU will switch to OSCCLK/2 until
// the PLL is stable. Once the PLL is stable the CPU will
// switch to the new PLL value.
//
// This time-to-lock is monitored by a PLL lock counter.
//
// Code is not required to sit and wait for the PLL to lock.
// However, if the code does anything that is timing critical,
// and requires the correct clock be locked, then it is best to
// wait until this switching has completed.
// Wait for the PLL lock bit to be set.
// The watchdog should be disabled before this loop, or fed within
// the loop via ServiceDog()。
// Uncomment to disable the watchdog
DisableDog();
while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
{
// Uncomment to service the watchdog
// ServiceDog();
}
EALLOW;
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
EDIS;
}
// If switching to 1/2
if((divsel == 1)||(divsel == 2))
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel;
EDIS;
}
// If switching to 1/1
// * First go to 1/2 and let the power settle
// The time required will depend on the system, this is only an example
// * Then switch to 1/1
if(divsel == 3)
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
DELAY_US(50L);
SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
EDIS;
}
}
TMS320F28335 的外部中断总结:
在这里我们要十分清楚DSP的中断系统。C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI、定时器1和定时器2分别使用中断13和14。这样还有12个中断都直接连接到外设中断扩展模块PIE上。说的简单一点就是PIE通过12根线与28335核的12个中断线相连。而PIE的另外一侧有12*8根线分别连接到外设,如AD、SPI、EXINT等等。这样PIE共管理12*8=96个外部中断。这12组大中断由28335核的中断寄存器IER来控制,即IER确定每个中断到底属于哪一组大中断(如IER |= M_INT12;说明我们要用第12组的中断,但是第12组里面的什么中断CPU并不知道需要再由PIEIER确定 )。接下来再由PIE模块中的寄存器PIEIER中的低8确定该中断是这一组的第几个中断,这些配置都要告诉CPU(我们不难想象到PIEIER共有12总即从PIEIER1-PIEIER12)。另外,PIE模块还有中断标志寄存器PIEIFR,同样它的低8位是来自外部中断的8个标志位,同样CPU的IFR寄存器是中断组的标志寄存器。由此看来,CPU的所有中断寄存器控制12组的中断,PIE的所有中断寄存器控制每组内8个的中断。除此之外,我们用到哪一个外部中断,相应的还有外部中断的寄存器,需要注意的就是外部中断的标志要自己通过软件来清零。而PIE和CPU的中断标志寄存器由硬件来清零。
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.XINT2 = &ISRExint; //告诉中断入口地址
EDIS; // This is needed to disable write to EALLOW protected registers
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block使能PIE
PieCtrlRegs.PIEIER1.bit.INTx5= 1; //使能第一组中的中断5
IER |= M_INT1; // Enable CPU 第一组中断
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
也就是说,12组中的每个中断都要完成上面的相同配置,剩下的才是去配置自己的中断。
TMS320F28335简介:
TMS320F28335采用176引脚LQFP四边形封装,其功能结构参见参考文献。其主要性能如下:
高性能的静态CMOS技术,指令周期为6.67 ns,主频达150 MHz;
高性能的32位CPU,单精度浮点运算单元(FPU),采用哈佛流水线结构,能够快速执行中断响应,并具有统一的内存管理模式,可用C/C++语言实现复杂的数学算法;
6通道的DMA控制器;
片上256 Kxl6的Flash存储器,34 Kxl6的SARAM存储器.1 Kx16 OTPROM和8 Kxl6的Boot ROM。其中Flash,OTPROM,16 Kxl6的SARAM均受密码保护;
控制时钟系统具有片上振荡器,看门狗模块,支持动态PLL调节,内部可编程锁相环,通过软件设置相应寄存器的值改变CPU的输入时钟频率;
8个外部中断,相对TMS320F281X系列的DSP,无专门的中断引脚。GPI00~GPI063连接到该中断。GPI00一GPI031连接到XINTl,XINT2及XNMI外部中断,GPl032~GPI063连接到XINT3一XINT7外部中断;
支持58个外设中断的外设中断扩展控制器(PIE),管理片上外设和外部引脚引起的中断请求;
增强型的外设模块:18个PWM输出,包含6个高分辨率脉宽调制模块(HRPWM)、6个事件捕获输入,2通道的正交调制模块(QEP);
3个32位的定时器,定时器0和定时器1用作一般的定时器,定时器0接到PIE模块,定时器1接到中断INTl3;定时器2用于DSP/BIOS的片上实时系统,连接到中断INTl4,如果系统不使用DSP/BIOS,定时器2可用于一般定时器;
串行外设为2通道CAN模块、3通道SCI模块、2个McBSP(多通道缓冲串行接口)模块、1个SPI模块、1个I2C主从兼容的串行总线接口模块;
12位的A/D转换器具有16个转换通道、2个采样保持器、内外部参考电压,转换速度为80 ns,同时支持多通道转换;
88个可编程的复用GPIO引脚;
低功耗模式;
1.9 V内核,3.3 V I/O供电;
符合IEEEll49.1标准的片内扫描仿真接口(JTAG);TMS320F28335的存储器映射需注意以下几点:
片上外设寄存器块0~3只能用于数据存储区,用户不能在该存储区内写入程序。
OTP ROM区(0x38 0000~0x38 03FF)为只读空间,存储A/D转换器的校准程序,用户不能对此空间写入程序。
即使不应用eCAN模块,也应使能时钟模块,将为eCAN分配的RAM空间用作一般RAM。
如果设置安全代码,存储器区域Ox33FF80~0x33FFF5需全部写入数据0x0000,而不能用于存储程序或数据。反之,0x33FF80~Ox33FEF可以存储数据或程序,其中0x33FFF0~Ox33FFF5只能存储数据。
仿真工具和开发环境:
TMS320F28335开发工具有:标准的优化C/C++编译/汇编/连接器,CCS集成开发环境,评估板和XDS510仿真器。其中CCS是一个界面友好,功能完善的集成的开发平台,具有编辑、汇编、编译、软硬件仿真调试功能。
TMS320F28335 的ADC:
TMS320F28335上有16通道、12位的模数转换器ADC。他可以被配置为两个独立的8通道输入模式,也可以通过配置AdcRegs.ADCTRL1.bit.SEQ_CASC=1,将其设置为一个16通道的级联输入模式。输入的方式可以通过配置 AdcRegs.ADCTRL1.bit.ACQ_PS=1,将其设置为顺序采集。即从低通道开始到高通道结束。 值得注意的是片上ADC的输入电压范围为0--3V,一旦超过3V,片上的ADC模块将会被烧掉。TI上的DATASHEET介绍其ADC的精度可达到12位,实际上达到不了。经测试,我们估计最好的时候可以达到11位就不错了。下面我们来简单介绍一下ADC模块的原理。其数字值由下面公司来计算,其中公式中的3为片内参考电压Digital Value=4096*(Input Analog Voltage-ADCLO)/3 ;(when 0 V 《 input 《 3 V)。ADC可以分为SEQ1和SEQ2两个模块,其中SEQ1包括ADCIN00--ADCIN07;SEQ2包括ADCIN08--ADCIN15。SEQ1模块可以通过软件、PWM、外部中断引脚来启动,而SEQ2不可以通过外部中断引脚来启动。另外就是ADC可以与DMA进行数据交换。
TMS320F28335 的时钟介绍:
TMS320F28335上有一个基于PLL电路的片上时钟模块,为CPU及外设提供时钟有两种方式:一种是用外部的时钟源,将其连接到X1引脚上或者XCLKIN引脚上,X2接地;另一种是使用振荡器产生时钟,用30MHz的晶体和两个20PF的电容组成的电路分别连接到X1和X2引脚上,XCLKIN引脚接地。我们常用第二种来产生时钟。此时钟将通过一个内部PLL锁相环电路,进行倍频。由于F28335的最大工作频率是150M,所以倍频值最大是5。其中倍频值由PLLCR的低四位和PLLSTS的第7、8位来决定。其详细的倍频值可以参照TMS320F28335的Datasheet。下面是F28335的时钟设置:
void InitPll(Uint16 val, Uint16 divsel)
{
// Make sure the PLL is not running in limp mode
if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
{
// Missing external clock has been detected
// Replace this line with a call to an appropriate
// SystemShutdown(); function.
asm(“ ESTOP0”);
}
// DIVSEL MUST be 0 before PLLCR can be changed from
// 0x0000. It is set to 0 by an external reset XRSn
// This puts us in 1/4
if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
EDIS;
}
// Change the PLLCR
if (SysCtrlRegs.PLLCR.bit.DIV != val)
{
EALLOW;
// Before setting PLLCR turn off missing clock detect logic
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLCR.bit.DIV = val;
EDIS;
// Optional: Wait for PLL to lock.
// During this time the CPU will switch to OSCCLK/2 until
// the PLL is stable. Once the PLL is stable the CPU will
// switch to the new PLL value.
//
// This time-to-lock is monitored by a PLL lock counter.
//
// Code is not required to sit and wait for the PLL to lock.
// However, if the code does anything that is timing critical,
// and requires the correct clock be locked, then it is best to
// wait until this switching has completed.
// Wait for the PLL lock bit to be set.
// The watchdog should be disabled before this loop, or fed within
// the loop via ServiceDog()。
// Uncomment to disable the watchdog
DisableDog();
while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
{
// Uncomment to service the watchdog
// ServiceDog();
}
EALLOW;
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
EDIS;
}
// If switching to 1/2
if((divsel == 1)||(divsel == 2))
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel;
EDIS;
}
// If switching to 1/1
// * First go to 1/2 and let the power settle
// The time required will depend on the system, this is only an example
// * Then switch to 1/1
if(divsel == 3)
{
EALLOW;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
DELAY_US(50L);
SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
EDIS;
}
}
TMS320F28335 的外部中断总结:
在这里我们要十分清楚DSP的中断系统。C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI、定时器1和定时器2分别使用中断13和14。这样还有12个中断都直接连接到外设中断扩展模块PIE上。说的简单一点就是PIE通过12根线与28335核的12个中断线相连。而PIE的另外一侧有12*8根线分别连接到外设,如AD、SPI、EXINT等等。这样PIE共管理12*8=96个外部中断。这12组大中断由28335核的中断寄存器IER来控制,即IER确定每个中断到底属于哪一组大中断(如IER |= M_INT12;说明我们要用第12组的中断,但是第12组里面的什么中断CPU并不知道需要再由PIEIER确定 )。接下来再由PIE模块中的寄存器PIEIER中的低8确定该中断是这一组的第几个中断,这些配置都要告诉CPU(我们不难想象到PIEIER共有12总即从PIEIER1-PIEIER12)。另外,PIE模块还有中断标志寄存器PIEIFR,同样它的低8位是来自外部中断的8个标志位,同样CPU的IFR寄存器是中断组的标志寄存器。由此看来,CPU的所有中断寄存器控制12组的中断,PIE的所有中断寄存器控制每组内8个的中断。除此之外,我们用到哪一个外部中断,相应的还有外部中断的寄存器,需要注意的就是外部中断的标志要自己通过软件来清零。而PIE和CPU的中断标志寄存器由硬件来清零。
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.XINT2 = &ISRExint; //告诉中断入口地址
EDIS; // This is needed to disable write to EALLOW protected registers
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block使能PIE
PieCtrlRegs.PIEIER1.bit.INTx5= 1; //使能第一组中的中断5
IER |= M_INT1; // Enable CPU 第一组中断
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
也就是说,12组中的每个中断都要完成上面的相同配置,剩下的才是去配置自己的中断。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- tms320f28335资料手册(中文版) 0次下载
- TMS320F28335寄存器手册 134次下载
- 使用DSP芯片TMS320F28335和FPGA的电路原理图免费下载 224次下载
- TMS320F28069和TMS320F28335的DSP处理器到底有什么区别 75次下载
- TMS320F28335 DSP处理器的电路原理图 166次下载
- DSP处理器TMS320F28335详细资料大全 52次下载
- TMS320F28335资料 84次下载
- tms320f28335(中文版) 0次下载
- dsp控制电机_tms320f28335的运行程序 49次下载
- TI官方的TMS320F28335参考设计的原理图 158次下载
- tms320f28335主数据手册(中文) 63次下载
- 基于TMS320F28335的SVPWM实现方法 73次下载
- tms320f28335的数据手册 49次下载
- TMS320F28335及其应用设计介绍 216次下载
- TMS320F28335,TMS320F28334,TMS320F28332 Digital Signal Controllers (DSCs) 63次下载
- 基于TMS320F28335和STM32F103VET6芯片实现北斗定位系统的设计 6721次阅读
- 基于TMS320F28335处理器实现驱动双电动机同步控制系统的设计 6390次阅读
- 广州创龙电子嵌入式双核实验箱介绍 1959次阅读
- 广州创龙电子嵌入式C2000实验箱简介 2042次阅读
- 基于TI TMS320C6748定点/浮点DSP C674x处理器 3209次阅读
- 基于dsp风电场电能质量检装置 1260次阅读
- TMS320C6748和TMS320C6747芯片对比 1.7w次阅读
- dsp tms320c6000基本作用的认识 9889次阅读
- TMS320F28335最小应用系统设计电路 1.7w次阅读
- 基于FPGA、DSP的电能质量监测装置设计 1368次阅读
- dsp28335如何入门:程序设计步骤 1.9w次阅读
- TMS320f28335控制AD7656的硬件电路设计 1.1w次阅读
- 三大电机控制方案之DSP篇(1):TMS320F28335 5.6w次阅读
- 带你了解TI的DSP入门芯片TMS320F28335 3.9w次阅读
- 基于DSP芯片TMS320LF2407的天然气发动机控制系统 1570次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1489次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 91次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 9次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 3次下载 | 免费
- 8基于单片机的红外风扇遥控
- 0.23 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30319次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多