DSP怎么烧程序

DSP怎么烧程序,第1张

各种DSP烧写程序的方法

推荐1、TMS320LF24xx, TMS320LF28xx:

利用CCS里面自带的flash burn插件,很容易烧写。

不必专门编程,只要输入out文件即可。

2、TMS320C5x

需要自己手工编写BootLoader程序,和烧写flash的程序,有点麻烦。

利用CCS装载烧写flash的程序,运行之,写入flash中。

3、TMS320C62xx(除了C6211)

需要自己手工编写BootLoader程序,和烧写flash的程序,非常麻烦。

关于怎样编写C62xx的BootLoader程序,凡是我能找到的国内的论文,都是错误的,纯粹为了骗学位。

利用CCS装载烧写flash的程序,运行之,写入flash中。

4、TMS320C64xx(包括C6211)

需要自己手工编写BootLoader程序,和烧写flash的程序,比较麻烦。不过还好,能找到国内的高手请教。

利用CCS装载烧写flash的程序,运行之,写入flash中。

要做好有效值运算,必须遵守相关的前提和约束。

1、dsp是对数字信号进行处理,因此,先要保证源头的数据的正确性和充分性。首先,电路带宽必须大于信号带宽,其次,采样频率必须满足采样定理要求,至少是信号带宽的2倍以上,建议采用10倍以上。

2、进行方均根运算时,关键在于“均”,也就是必须明白是多少数据的“均”。对于交流信号,严格讲,必须是信号周期的整倍数时间内的采样点的“均”。因此,运算前,必须知道信号的频率(周期)。信号频率除以采样频率再乘以任意自然数都可以作为运算的点数。

3、对于低频信号而言,若运算的信号周期数太大,数据更新时间太长,可设置较少的周期数。对于较高频率的信号,可以设置较多的周期数。

4、对于较高频率的信号,若运算的点数足够多,也就是信号的时间跨度远远大于信号周期,可以不考虑整数倍的问题。

5、有了上述基础,按照计算或设定的运算点数,提取最近采样的相应点数的数据,依次平方、求和、开方,即可得到有效值。

如何使用STM32F4的DSP库

我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。当遇到形如11+11的浮点数运算时,定点CPU就遇到大难题了。对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。

现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。我们见到过TI的DSP,还有STM32F4系列的带有DSP功能的微控制器。前者笔者没有用过,不作评论,而后者如果需要用到FPU的浮点运算功能,必须要进行一些必要的设置。

首先,由于浮点运算在FPU中进行,所以首先应该使能FPU运行。在system_init()中,定义__FPU_PRESENT和__FPU_USED

/ FPU settings------------------------------------------------------------/

#if (__FPU_PRESENT == 1)&& (__FPU_USED == 1)

SCB->CPACR |= ((3UL<< 102)|(3UL << 112)); /set CP10 and CP11 Full Access /

#endif

这样就使能了FPU。

对于上述改变,当程序中出现这种简单的加减乘除运算FPU就起作用了。但是对于复杂的如三角运算、开方运算等,我们就需要加入mathh头文件。但是如果单纯的加入他,那么Keil会自动调用内部的mathh,该头文件是针对ARM处理器的,专门用于定点CPU和标准算法(IEEE-754)。对于使用了FPU的STM32F4是没有任何作用的。所以,需要将mathh换成ST的库,即arm_mathh。在该头文件中,涉及到另一个文件core_cmxh(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4h即可。

到这里,算是全部设置完毕,之差最后一步,调用!但是别小看了这一步,因为如果调用的不正确,全面的设置就白费了。在使用三角函数如sin()、cos()时不要直接写如上形式,因为他们函数的名字来自于mathh,所以你调用的仍旧是Keil库中的标准mathh。要使用arm_mathh中的arm_sin_f32()函数(见Line5780,原函数见DSP_Lib\Source\FastMathFunctions),可以看到他利用的是三次样条插值法快速求值(见Line263 / Cubic interpolation process /)。

注意一下例外函数,sqrt(),在arm_mathh中为arm_sqrt_f32()。使用他的时候需要同时开启#if(__FPU_USED == 1) && defined ( __CC_ARM )才行,切记!还可以发现开方函数还有q15和q31之分,我想他们的区别就是精度的问题,但是他们没有应用FPU来计算,说白了就是利用0x5f3759df这个数进行快速开方

以上就是关于DSP怎么烧程序全部的内容,包括:DSP怎么烧程序、dsp编写程序求出cost的值、请问在编写DSP程序时,数学函数如:sprt这种开方的,需要定义什么头文件吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10138433.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存