DSPwilliam hill官网
直播中

1563661808

10年用户 1833经验值
擅长:电源/新能源
私信 关注

Elecfans高手问答Q&A——DSP问答

`

本帖非活动贴,我们将活动中的Q&A做了整合,方便大家共同学习。



Elecfans社区问答已经在大家的积极参与下全面展开,我们会在每一期活动结束后,将帖子中的精华问答整合于此,方便大家翻阅,共同学习,共同进步。



************************为了给大家一个方便的阅读环境,请不要在本帖回复,谢谢配合***********************


` QQQ.jpg

回帖(8)

1563661808

2014-8-20 10:12:26
高手问答第7——DSP问答
活动时间:2014.8.11-2014.8.18

Q:@michael_xing 请问前辈DSP TMS320F28232 是不是浮点型芯片?一个在28232上可以运行的程序,换成28335后程序不改动上是不是也可以跑?
A:我觉得这个问题,是这样子:
(1)首先,为什么想换片子?从flash容量,还是从代码编写上?从不同的角度出发,更换的芯片是不同的。
(2)其次,如果想获取更多的对芯片的了解,建议你记下官网www.ti.com,在搜索栏中,输入你要的芯片名称,就可以看到详细记录,这个比datasheet更直观,而且一般会有芯片的对比和升级路线,对于你更换芯片非常有帮助。
在我使用的代码里,tms320f28232和tms320f28334(5),代码架构类似,因此,只要注意管脚对应上,代码几乎不用更改。而且给的例程多数都是模块的使用,没有涉及浮点运算。
很抱歉,tms320f2000系列的芯片,主要用于控制,做算法的比较少。如果做简单的算法,即使tms320f28334(5)有FPU单元(浮点),我也会使用定点来做运算。tms320f28232是定点的内核,没有FPU单元。

如果这样还不够,可以再回复。抱歉,回复有点晚。

Q:烧写flash时提示如下错误,是锁死了么?请前辈给分析下什么原因引起的,三天锁三个,
C28xx: Flash Programmer: Error erasing Flash memory.
C28xx: Flash operation timed out waiting for the algorithm to complete. Operation cancelled.
C28xx: Trouble Writing Memory Block at 0x3f64fa on Page 0 of Length 0x12
Cannot write to target
在MAP中显示 CSM_PWL               003f7ff8   00000008  00000000  00000008  RWIX,密码位没被占用

A:先说一句非常悲观的话题:如果芯片锁死,意味着芯片不能用了,必须要更换。但是,一般上,烧写flash,如果没有进行特别的操作,不会锁死的。
特别的操作,比如烧写过程中,断电。但是,这样子,也不是完全就会出问题。再比如,我想知道你选用的仿真器是谁家的,使用的ccs是哪个版本????
所以说,你三天锁三个,有点不正常,我担心的是环境,不是你的操作手法。


Q:@michael_xing 小弟完全未接触过音频编解码,最近因为需要了解了一下音频编解码的芯片,其中均集成了ADC和DAC,想请教一下行工,音频编解码与ADC和DAC是什么关系?(我理解是:ADC是编码的基础,DAC是解码的基础,解码其实就是将数字量经DAC后生成了模拟量在经运放等恢复音频,不知对否?)
A:
你理解的基本上是对的。你所想了解的系统,就是通过ADC将音频模拟信号采样,进入dsp进行数字处理,处理完之后,通过DAC将数字信号再转换成音频模拟信号输出。如果你很想做音频,我给你建议一个系统,不过价格可能有点高。之前我也很想做,后来放弃了,时间太有限了。我可以把我羡慕已久的系统介绍给你。不是打广告,因为我有朋友已经使用过了。就学习而言,可以让你完全学会;就开发而言,也可以开发一些新产品。
C5535eZdsp USB 记忆棒开发套件          http://www.ti.com.cn/tool/cn/tmdx5535ezdsp



Q:请问下,DSP2812怎么实现3路的模拟信号输出,而且该3路模拟信号是可控,可调的。如果用SPI,怎么实现3路输出?或者其他用PWM波然后再经过什么可以实现这样的功能?先谢谢前辈的指导了。
A:
哈哈,首先抱歉,你的问题,我有点没理解。
那我先来谈谈我的看法,理解不到之处,请你继续回复。
(1)SPI是接口,对于tms320f2812来说,只有一个SPI接口,那么如果要使用该接口来控制两个以上的从设备,就必须了解SPI总线的原理,把例程代码进行扩展,就可以实现了。前提已经很明确,SPI可以实现主从一对一,主从一对多的控制。
(2)PWM模块,对于tms320f2812来说,有16路吧,记得是很多,那么实现多路模拟输出是完全没有问题的。而且有一个特点,对于dsp来说,所有的模块是独立的。既然是独立的,肯定是可以单独控制,并可调。不过,dsp一般都是单线程,需要使用者合理安排各自的调整时间和顺序。
不到之处,请回复。

Q:自己写的一直进不去中断,关于PDPINT保护,中断pwm输出的程序。我写的程序是这样子的使用的是evb的pdpintb中断
先是
         GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB_GPIOD5=1;    //设置外设功能
         GpioMuxRegs.GPDDIR.bit.GPIOD5=1;                     //设置为输出口
         
Ev中
        EvbRegs.EXTCONB.bit.INDCOE=0;
        EvbRegs.EVBIMRA.bit.PDPINTB=1;
        EvbRegs.EVBIFRA.bit.PDPINTB=1;
主程序中
PieCtrl.PIEIER1.bit.INTx2=1; //pdpintb 中断
请问还缺少什么?

初步问题是 没开CPU的中断和外设的时钟时能
应加上
IER|=M_INT1;        //开CPU中断1
SysCtrlRegs.PCLKCR.bit.EVBENCLK = 1;    //使能EVB模块时钟


还有其它问题吗? 不知道问题出在哪里呢?希望能得到指导。谢谢前辈。
A:
虽然你没说你使用的芯片,我大致猜一下,应该是tms320f281x系列的芯片。
我调试过tms320f2806x或者tms320f28x,建议,先调试一下ev_pwm和ev_timer_period两个例程,有问题,可以讨论。

不到之处,请回复。


Q:大虾,我在调试DSP(6701)的时候,发现程序下到SDRAM内跑的时候,只能按INT型数据跑,如果按字节读写的时候就会乱。还有我调试时使用fopen,printf函数时,就会死机。我研究威廉希尔官方网站 图发现,SDRAM是由两个16位宽的尔必达EDS5116ABTA拼接成32位。但是SDRAM的高16位和低16位UDQM和LDQM同时共用DSP的BE0和BE1,高16位的SDRAM没有接BE2和BE3。请教大虾,这是不是就是我出问题的原因???
A:
实在抱歉,我没有调试过6701的芯片。对不住了。
Q:通过dsp f2812 的gpioA组引脚采集一幅静态数字图像,采集后存储到外部存储单元sram中,该怎样设置gpio引脚,该怎样配置,摄像头用ov6620.@michael_xing  大虾
A:
首先,你准备使用ov6620摄像头芯片,先搞清楚,这款新片的接口是什么?然后,再决定使用2812的哪些管脚。
其次,ov6620资料很多,
(1)ov6620摄像头使用说明
(2)OV6620详细操作指南
(3)OV6620 源程序代码
再次,看到了单片机采集数据的时候,使用的是一个P口,那么使用2812的GPIO口也可以,需要设置为输入特性。
关于GPIO的使用,参考例程gpio_loopback和gpio_toggle
特别注意,操作GPIO时,一定添加保护,EALLOW和EDIS。


比如:
        //////*******************************input**************************************************two
        ////===================================================adf4351: muxout
        GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
        GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;
        ////===================================================*no_ptt(no use)
        //GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
        //GpioCtrlRegs.GPADIR.bit.GPIO1 = 0;
        ////===================================================off_rem(no use)
        //GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;
        //GpioCtrlRegs.GPADIR.bit.GPIO2 = 0;


Q:最近在做DSP图像处理,需要将采集到的图像从YCrCb转换成RGB格式后,进行图像处理,再将RGB图像转换成YCrCb进行显示,下面是我的图像处理的程序,不知道为什么显示出来的结果总是一片黑,求大神指点。
void videoReverse()
{
      int i,j,temp;
        int r,g,b,y,cr,cb,pr,pg,pb;
Uint8 *Y,*Cr,*Cb;
for(i=intALines;i         {
            for(j=intAPixels;j             {
            Y=(Uint8 *)(tempYbuffer + i*numPixels + j);
            Cr=(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j);
            Cb=(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j);
            y=(*Y);cr=(*Cr);cb=(*Cb);
            y-=16;cr-=128;cb-=128;
            r=1.164*y+1.596*cr;
            g=1.164*y-0.813*cr-0.392*cb;
            b=1.164*y+2.017*cb;
            if ( r>255 )        r=255;
                        else if ( r<0 )        r=0;
                        if ( g>255 )        g=255;
                        else if ( g<0 )        g=0;
                        if ( b>255 )        b=255;
                        else if ( b<0 )        b=0;

            temp=2*g-r-b;
            if ( temp>255 )          temp=255;
                        else if ( temp<0 )        temp=0;
            r=abs(temp);g=abs(temp);b=abs(temp);
            pr=abs(0.257*r+0.504*g+0.098*b+16);
            *(Uint8 *)(tempYbuffer + i*numPixels + j)=pr;
                        pb=abs(-0.148*r-0.291*g+0.439*b+128);
              *(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j)=pb;
                        pr=abs(0.439*r-0.368*g-0.071*b+128);
            *(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j)=pg;
            Y++;Cr++;Cb++;
}
}
for(i=numLines/2+intALines;i         {
            for(j=intAPixels;j             {
               Y=(Uint8 *)(tempYbuffer + i*numPixels + j);
            Cr=(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j);
            Cb=(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j);
            y=(*Y);cr=(*Cr);cb=(*Cb);
            y-=16;cr-=128;cb-=128;
            r=1.164*y+1.596*cr;
            g=1.164*y-0.813*cr-0.392*cb;
            b=1.164*y+2.017*cb;
            if ( r>255 )        r=255;
                        else if ( r<0 )        r=0;
                        if ( g>255 )        g=255;
                        else if ( g<0 )        g=0;
                        if ( b>255 )        b=255;
                        else if ( b<0 )        b=0;
            temp=2*g-r-b;
            if ( temp>255 )          temp=255;
                        else if ( temp<0 )        temp=0;
            r=abs(temp);g=abs(temp);b=abs(temp);
            pr=abs(0.257*r+0.504*g+0.098*b+16);
            *(Uint8 *)(tempYbuffer + i*numPixels + j)=pr;
                        pb=abs(-0.148*r-0.291*g+0.439*b+128);
              *(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j)=pb;
                        pr=abs(0.439*r-0.368*g-0.071*b+128);
            *(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j)=pg;
            Y++;Cr++;Cb++;
        }
}                        
}
A:
我倒,这是你的算法。我只有一个建议,做软件算法之前,现在pc上的软件上,进行仿真,最后再在dsp上进行移植。


Q:求助@michael_xing 大侠下面这段程序中的void image_projecting ()函数该如何进行优化呢?进行线性汇编的话该如何进行代码修改呢?
* FILENAME: app_process.c
* PLATFORM: VC6.0
*
*  The c file is used to compute the  projection iamge   
*
*
******************************************************************************/

/*--------------the head file declaration-------------------------------------*/

#include      
#include      
#include      
#include      "app_extern.h"
#include      "app_main.h"

/*---------------------------------------------------------------------------------------*/


/*----------------------the function of computing the prejectiong image  -----------------*
*                                                                                         *
*                      此函数用于计算该图像的目标放投影图                                 *
*                      即:计算图像中每一点成为目标的概率                                 *
*                         反投影图中越亮的点表明该点越有可能成为目标                      *
*                        由两部分在组成:1.计算目标的归一化直方图                         *
*                                        2.计算各个像素点成为目标的概率                   *
*                   注:本文在图像上建立的坐标系如下图所示                                *
*                                                                                         *
*                         0---------------> X(352)                                        *
*                         |                                                               *
*                         |                                                               *
*                                                  |                                                               *
*                                                  |                                                               *
*                                                  V y (288)                                                       *
/-----------------------------------------------------------------------------------------*/

void image_projecting ()
{
  object_modeling(Y_data);
  compute_prob_project(Y_data,Y_shadow);

}

/*------------------the function of computing the probility of the pixel -----------------*
*                                                                                         *
*                      此函数用来计算图像中各像素点成为目标的概率                         *
*                                                                                         *
/-----------------------------------------------------------------------------------------*/
void compute_prob_project(unsigned char *p_data ,unsigned char*p_data_project)
{
  int i ;
  unsigned short    *prob=Histogram_object;
  unsigned char     temp;
  for(i=0;i   {

   temp=*(p_data++);
   *p_data_project++=(unsigned char)(*(prob+temp));

  }

}

/*----------------------the function of compute the histogram  ---------------------------*
*                                                                                         *
*                      此函数用来计算目标的归一化直方图                                   *
*                                                                                         *
/-----------------------------------------------------------------------------------------*/

void object_modeling(unsigned char *p_data)
{         
          unsigned short   *prob=Histogram_object;
          int              i,j,t;
      unsigned short   x1=object_location_x1;
          unsigned short   x2=object_location_x2;
          unsigned short   y1=object_location_y1;
          unsigned short   y2=object_location_y2;
          unsigned short   scale_window;

          scale_window=(x2-x1)*(y2-y1);
          memset(prob,0,512);

  for(j=y1;j         {

                for(i=x1;i                 {
                        *(prob+(*(p_data+j*width+i)))+=1;
                }

        }

   for(i=0;i<256;i++)
   {
     *(prob+i)= *(prob+i)*255*3/scale_window;
   }
   printf("The object model is constructedn");
}


/*-------------------the function of drawing a window around the object ------------------*
*                                                                                         *
*                      此函数用来标注目标在图像中的位置                                   *
*                                                                                         *
/-----------------------------------------------------------------------------------------*/

void draw_window (unsigned char *src_data )
{
  int i ;
  unsigned short    x1=object_location_x1;
  unsigned short    x2=object_location_x2;
  unsigned short    y1=object_location_y1;
  unsigned short    y2=object_location_y2;
  unsigned short    window_w=x2-x1;
  unsigned short    window_h=y2-y1;
  unsigned char     *src;

  src=src_data+y1*width+x1;

/****************标注平行于x轴的框子*************************************/

for(i=0;i   {
        *(src+i)=255;
        *(src+width+i)=255;
    *(src+i+(window_h-1)*width)=255;
    *(src+i+window_h*width)=255;
  }

/****************标注平行于y轴的框子*************************************/

for(i=0;i   {
        *(src+i*width)=255;
    *(src+i*width+1)=255;
    *(src+i*width+window_w)=255;
        *(src+i*width+window_w-1)=255;
  }


}

/*----------------------the function of write the output information  --------------------*
*                                                                                         *
*                      此函数用来将所做的题目号和耗费时间加到图像数据中                   *
*                      注:* 请勿修改此项*                                                *
/-----------------------------------------------------------------------------------------*/

void fun_out(unsigned char *buffer_in, float costtime)
{
        int  j ;
        unsigned char num = 17;
        double tt=costtime;
        for (j = 0 ; j < 10; j ++)
        {
                buffer_in[j] = 0;
        }
        buffer_in[0] = num;
        memcpy(&buffer_in[1],&tt,8);
}

/*********************************** end of the file **********************************************/
A:
三条建议:(1)将指针类型,评估占用空间大小,定义为数组类型。
(2)去掉printf语句,使用串口或者iic,上传打印信息。
(3)然后可以评估你使用的dsp或者mcu的空间是否满足你的要求。

期待将你要移植的目标,回复。

Q:求大神帮助,请问epwm模块,事件触发选择寄存器,如果我想选择多事件触发中断,那么INTSEL位要怎么设置呢?好像它只能设置一种事件来触发中断。。。比如在(TBCTR=0x0000和TBCTR=TBPRD)两个事件都触发,急求!!!!!!再次先谢过了!!
A:
我记得,是有两个触发的。PWM具有两个比较器,CA和CB,将这两个同时使用时,就可以完成你的目的了。参考一下例程epwm_updown_aq。



Q:出现error:struct "PIE_VECT_TABLE" has no field "SCIRXINTA"该如何解决
A:
(1)需要将SCIRXINTA挂在到中断表里。        PieVectTable.SCITXINTA = &sciaTxFifoIsr;        PieVectTable.SCIRXINTA = &sciaRxFifoIsr;
(2)另一个原因是,你没有添加文件DSP2833x_PieVect.c。

Q:我的小车单独转弯,一个轮前转一个后转可以。。但是一加传感器检测时,只能一个轮子前转,而另一个轮子不转啦。。。怎么回事。。测试时,代码很简单啊。。求帮助。
        while(1)
        {
               
                if(p10==1&&p11==0)
                {
                        turn_right();
                }
                if(p10==0&&p11==1)
                {
                        turn_left();
                }
                if(p10==1&&p11==1)
                {
                        back();
                }
                else                        
                forward();                 

                        
        }
A:
while(1)
        {
               
                if(p10==1&&p11==0)
                {
                        turn_right();
                }
                else if(p10==0&&p11==1)
                {
                        turn_left();
                }
                else  if(p10==1&&p11==1)
                {
                        back();
                }
                else                             {            
                        forward();                 
                 }

                        
        }

Q:最近在做dsp通过68013与pc机进行数据通信的项目!遇到一个很奇怪的问题,想请教一下。
首先我采用的是68013的异步slave fifo的模式。使用BULK传输。fifo缓冲区设定大小为512*4,固件程序中自动处理数据包的长度为512.

68013的异步slave fifo传输模式的逻辑控制是用cpld和dsp共同控制的,cpld中控制读写信号,控制输出使能信号SLOE,控制片选信号CS;DSP程序中控制地址FIFO_ADR0/ADR1,并读取FIFO_FLAGB/FIFO_FLAGC标志位。整个逻辑控制都实现好了!通信也正常,数据收发都很正常。

但是在测试68013通信速度时,出现了问题!我用ccs中profile->clock->view时钟周期计算时间,然后根据发送的字节数计算速度。
现在我就发送512字节,用for循环赋值。
void Dsp_PC(char* buf,int len)
{               
        int i,k;
        
        if(0==GPIO_Input_Read(pin_FLAGB))
        {
                while(1)
                {
                        if(1==GPIO_Input_Read(pin_FLAGB))
                        {   
                                break;
                        }                        
                }                                

        }
        
        if(1==GPIO_Input_Read(pin_FLAGB))
        {        

                GPIO_Output_Config(pin_ADR1,1);
                GPIO_Output_Config(pin_ADR0,0);                                                        
                for(i=0;i                 {               
--->设置断点                        *(unsigned char*)USB_68013CS=buf
;
                        
                }                                
        }         
                        
        return ;
}


main()
{
      、、、、、一系列的初始化、、、

-->设置断点        asm(" NOP ");   
                       for(i=0;i<1;i++)
                      {
-->设置断点                Dsp_PC(buf,512);   //buf是我自己定义的一个数据,里面存放我发送的数据,512是发送的字节数

                       }
-->设置断点        asm(" NOP ");

}

现在如果在我标注的地方设置断点,那么就是单步执行Dsp_PC中发送的数据,在全部发送完512字节后,用的时钟周期是12000左右,但是如果我只在main函数中的两个空语句asm(" NOP ");处加断点,那么是for循环自行发送512字节,这时的时钟周期是37000,两者差别30倍左右!
请教前辈,问题出在哪???首先这两种方法外部因素全部一样   。 在线等、、
A:
main()
{
      、、、、、一系列的初始化、、、

-->设置断点        asm(" NOP ");   
                      // for(i=0;i<1;i++)
                     // {
                             Dsp_PC(buf,512);   //buf是我自己定义的一个数据,里面存放我发送的数据,512是发送的字节数

                       //}
-->设置断点        asm(" NOP ");

}


这样子,测试过吗?

Q:刚接手DSP6678,买了TMDSEVM6678LE的板子,以前做的是28335,现在想搞清楚bois如何配置,不知道怎么下手?求指导
A:
关于bios的配置,经验不足,见谅。


Q:@michael_xing需要采集46个模拟信号与6个数字信号,打算选取2片16通道12位AD再加上DSP自带的16通道进行采样。目前在选取AD芯片和如何分配资源以及与上位机通信方面比较迷茫,希望大神能指指路   O(∩_∩)O谢谢
A:
这个问题,我可以推荐个采样芯片,AD7606,这个芯片我使用过,8路同步采样AD,使用一个SPI接口就可以控制。
类似的16路芯片,也可以使用。建议这样的威廉希尔官方网站 搭建,不要采用片内的AD,直接采用全部外挂的AD来进行。这样子,可以简单些。
另外,提到数字信号,可以不用采用,直接进行电压处理(将其压缩到3.3v以内,加上电压保护),输入到DSP(MCU)的IO,就可以了。
注意事项:
(1)AD有双极性和单极性之分;
(2)AD布板,最好参考芯片的参考威廉希尔官方网站 来进行,需要考虑干扰问题。


Q:请问行工  使用三星的k9wag08u1m Flash芯片,使用dsp320f28069对其进行读写操作,发现在坏块检测的时候每次返回的都是随机数?请问高手,这是什么原因导致的?补充:时序和读写地址都是按照datasheet上写的。  
A:
读写时序,有数字示波器观测过吗?第一次调试不熟悉的芯片,总是有这样子的问题的。
建议,如果代码没有问题,一般从两个方面查找:
(1)访问芯片的电平信号,是否满足要求,比如SPI接口访问,需要电平3v,但是有电阻衰减,造成电平信号弱,就会出现时序问题。
(2)使用示波器,查看时序,确保时序的正确性。
Q:大虾  我还有一个问题哦@michael_xing    我这里有信号发生器,连接上DSP板子,再连接上主机,在主机上创立一个Host API ,要求采样,比如采1024点,把数据序列存在一个文件夹里面,也写出DSP采样主程序,这就结束了,我再用Matlab把所采集的数据序列绘出图来,这样的过程该如何下手呢?
A:
我这里有信号发生器,连接上DSP板子,再连接上主机,在主机上创立一个Host API ,要求采样,比如采1024点,把数据序列存在一个文件夹里面,也写出DSP采样主程序,这就结束了,我再用Matlab把所采集的数据序列绘出图来,这样的过程该如何下手呢?
其实,你想做的就是一个数据采集和显示器,数据采集是靠dsp来实现,数据显示是在PC上实现,那么中间需要一个数据传输,你没说。
(1)dsp采集,不太难,你已经实现了;
(2)dsp需要和pc之间有个数据交互或者数据传递,你要选择一种通信方式;
(3)PC只要接收到数据之后,就可以存储、显示、计算等等操作了。
建议,如果数据速率要求不高,也可以选择串口,因为串口最简单。
如果数据速率要求高,就要选择诸如网口、u***来传输,这样一方面需要dsp侧做一些工作,同时PC侧也需要做一些工作。

Q:请问大神如何选择DSP的电源芯片?
A:
这个问题好,因为dsp的厂家都注意到这个问题了。一般上,dsp的厂家在推荐芯片的同时,都是配套销售。从电源芯片(LDO)到外围的串口,包括处理EMI的芯片,都会有。     直接的方法:问代理,绝对让你有收获


Q:前辈你好,DSP的最高主频能从芯片型号中获得吗?
A:假如,你使用的是ti的芯片,那么在官网上搜索型号,然后看所有的指标。就可以看到了。而且,厂家一般都会把给型号的演进过程中的产品,贴出来,供你挑选。


Q:从CCS5版以后,抛弃了过去CCS3.3的开发方法,普通采用CCS5+controlSUIT的模式,请前辈谈谈这种新方法的感受。
A:更新为ccs5之后,很多问题,都变得简单了。
(1)以前每次烧写都要搭建环境,步骤繁多,改由ccs5之后,只需要简单的配置,就可以完成。
(2)抛弃之前的3.1、3.2、3.3之后,我可以多个芯片的工程都移植在ccs5下,方便管理和调试。
(3)使用eclipse界面后,可以更好的和其他软件匹配,当然这个匹配是从视觉角度而言的。比如开发android使用的eclipse,开发linux界面的qt等等。
(4)最主要的是ti也发布了controlsuit,更加方便了对每个芯片的学习。

我深有感触的,先谈着几点吧。够我用了。哈哈。


Q:用cc5调试的时候,有时候总是曝出在low-power mode下工作?这个是为什么?谢谢前辈
A:你采用的电源芯片是官方为此mcu推荐的吗?另外,如果方便,可以把dsp和外围威廉希尔官方网站 ,抓个图上来。具体还真不清楚。我只能像判断RMB一样,告诉你这张是真的,而不能告诉你为什么这是假的。

Q:现在我在做C6678方面的开发,我有两个问题想问一下专家: 1在用CCS对C6678进行调式的时候,具体详细的步骤是什么样的啊,需要注意一些什么问题呢
A:谈不上什么专家。

调试取决于你使用的开发板,使自己做的,还是购买的。
(1)自己做的,硬件威廉希尔官方网站 需要调试,这方面,想必你已经都会了。
(2)购买的,上电肯定没问题了。

上电没有问题,基本上就剩下软件的工作了。
(1)如果在线调试,完全没有问题。按照一般的步骤,这个步骤在例程中都会有所体现,包括时钟配置,看门狗关掉,中断配置,模块初始化等等;
(2)如果烧写调试,特别注意烧写不要加密,到最后产品化的时候,再做加密;
(3)其他的都是软件配置,按照例程或者模块使用的步骤编写就行,坏不了的。

如果是直流源供电,特别注意一下电流大小。

Q:我正在参加电子大赛,对于由话筒产生的叫啸现象如何抑制?查了资料都是用DSP理论说明的。目前对DSP理论计算掌握不熟,大神能指点一下吗?多谢了!
A:话筒啸叫应该是放大倍数过大了。调整模拟威廉希尔官方网站 ,话筒的激励放大倍数减小。先试试吧。或者,前端不加任何信号时,话筒是否也有声音,如果这样子,就是话筒自激了。必须先调小放大倍数。


Q:大虾 我是学弱 想请问一下ti dspc200系列可以完成图像处理吗?
A:如果你只是想验证一些算法的话,可以使用c2000实验,如果进到产品级别,不大适合。因为c2000的初衷主要用于工业控制。
我做过电力方面的算法和控制,如果使用c2000,必须要对算法进行优化,而且还有难度。

Q1:请问下,DSP2812怎么实现3路的模拟信号输出,而且该3路模拟信号是可控,可调的。
如果用SPI,怎么实现3路输出?
或者其他用PWM波然后再经过什么可以实现这样的功能?先谢谢前辈的指导了。
A1:哈哈,首先抱歉,你的问题,我有点没理解。  那我先来谈谈我的看法,理解不到之处,请你继续回复。 (1)SPI是接口,对于tms320f2812来说,只有一个SPI接口,那么如果要使用该接口来控制两个以上的从设备,就必须了解SPI总线的原理,把例程代码进行扩展,就可以实现了。前提已经很明确,SPI可以实现主从一对一,主从一对多的控制。 (2)PWM模块,对于tms320f2812来说,有16路吧,记得是很多,那么实现多路模拟输出是完全没有问题的。而且有一个特点,对于dsp来说,所有的模块是独立的。既然是独立的,肯定是可以单独控制,并可调。不过,dsp一般都是单线程,需要使用者合理安排各自的调整时间和顺序。  不到之处,请回复
Q2:可是@michael_xing
本来想用SPi接口接4路的DA转换的,现在遇到了新问题,买的DA转换是DA8534,4路16位的DA转换,发送的数据位是24位的,而SPI则做多是16位的数据传输,然后是不是就不能用SPI进行通信了

A2:我也觉得是,不能用SPI了。不过,还有一种方法,就是IO模拟。

Q:还有一个问题问大虾MB9BF506NB与TMS320LF2406A可以替换使用吗?引脚一样吗?  谢谢
A:这个问题呢,首先,你先把两个芯片的手册pdf下载下来;其次,一般在pdf的最前面,有个芯片的管脚图,看一下,各种管脚数目的芯片的各个管脚说明,比如说,有40脚的封装,有64脚的封装,有128脚封装,有176封装,等等,最后,从两个图中对比,找到你要的结论。

如果你还有问题,可以把pdf发到邮箱:zehxjt@163.com,我可以提供帮助。

Q:请教大侠,在使用FLASH _api 函数 擦除Flash时,返回值为STATUS_FAIL_PRECOMPACT,这个错误代码是什么意思呢?该怎么解决这个错误了?谢谢
A:对不起啊,我没遇到过。你用的是哪个环境,哪个芯片?我给你推荐一个方法吧。


Q:同一个程序,运行三次,其中有个量date,每次运行都代表了不同的端口P0,P1,P2,这个程序怎么写?
可以先判断后赋值么?例如if a=1; date=P0; else date=P1;(能把端口赋给变量?变量应该是什么类型?)
可以先判断后宏定义么?例如if a=1; #define date P0; else  #define date P1;(#define能用在主函数里么?能跟if语句嵌套么?每次运行都重新宏定义么?)
请指教!@michael_xing

A:同一个程序,运行三次,其中有个量date,每次运行都代表了不同的端口P0,P1,P2,这个程序怎么写?
可以先判断后赋值么?例如if a=1; date=P0; else date=P1;(能把端口赋给变量?变量应该是什么类型?)
可以先判断后宏定义么?例如if a=1; #define date P0; else  #define date P1;(#define能用在主函数里么?能跟if语句嵌套么?每次运行都重新宏定义么?)
请指教!@michael_xing

猜一下,使用端口P0/1/2,应该是单片机的代码。
单片机的代码可以直接将端口赋值给变量。

在c语言里,如果出现你所属的情况,一般会用入口参数来区分。

Q:利用DSP2812的SCI模块进行串口通信时,怎样将int型数转化为char型数发送给上位机?(比如int型19转化为char型19)
A:你指的int型是16位的,(如果是32位的话,方法类似)
int a;
char b[2];

b[1] = a / 256;
b[0]= a % 256;


Q:大侠,我今年研一,我们实验室老师让我选择JAVA或DSP,两个我基础都不好,问下大侠DSP学习的话需要哪些知识,该怎么学习,我们实验室好像是主要做音频处理的谢大侠指导
A:java是上层,将来的方向就是纯软的东西;
dsp是驱动或者硬件控制层,将来就是嵌入式。

你自己选择了。
有c语言基础,稍微懂点威廉希尔官方网站 知识,就可以玩dsp。
但是想把dsp玩的更好,就得懂点算法的东西。比如你说的视频处理,就是算法。

一般上,现用vc仿真算法,然后优化算法,移植到dsp内进行硬件验证,最终固话到dsp中
Q:使用DSP2812的sci发送数据 用的是查询 代码如下:

  if((SciaTx_Ready()==1)&&(send_flag==1)){
   if(i%5==0){
    SciaRegs.SCITXBUF=0x41;     
   }
   
   SciaRegs.SCITXBUF=data;
   i++;
   if(i==35){
    i=0;
    send_flag=0;
   }  
  }

为什么只能发送出data的值 没有发送0x41呢?
A:貌似没有问题啊。
可以做个测试,把i%5==0的条件干掉,
看看效果。验证i的问题。

如果还不行,可以把上传data的语句干掉,看看效果,是否不能同时上传。(原理上应该没问题的)。

Q:前辈eCAN发送消息  如果成功则CPU将发送响应寄存器CANTA置位   没成功的话 怎么处理才合理?
A:对不起,can总线,我一直想调,但从来没调试过。不好意思啊。






举报

tuoCHang

2014-8-28 16:12:34
说的很好,很好用!!!
举报

chenguocc

2014-9-13 13:11:21
分享的东西不错,值得一看
举报

月夜漂泊

2014-9-15 16:25:25
向高手学习,向高手致敬
举报

月夜漂泊

2014-9-15 16:25:39
向高手学习,向高手致敬
举报

牛氓分界线

2014-9-15 16:42:28


undefined first referenced                                                      
  symbol       in file                                                           
--------- ----------------                                                      
_main     C:/CCStudio_v3.3PLA/C2000/cgtools/lib/rts2800_fpu32.lib

error: unresolved symbols remain
error: errors encountered during linking; "./Debug/test.out" not built

>> Compilation failure
请问这个问题怎么解决?@michael_xing
举报

jfg

2014-9-21 11:44:43
DSP—算法——精华资料  看看先
举报

世友史

2016-12-3 14:31:07
很好。。。。。。。。。。。。。。。。。。。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分