This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28335: TMS320F28335在CCS上仿真问题

Part Number: TMS320F28335


DSP用CCS仿真问题,

问题一:

我定义了unsigned char table[][]=

{ "$0021,<DSP,TIME,*****,****,#",

"$0021,<DSP,DATE,*****,****,#"}  ;

定义了这样的 一个指令集,当DSP每次上电运行的时候,我想把这个指令集写到一个数组里面发出去,但是发现这个数组里面的指令集是乱码,

问题二:每次上电32单片机给DSP发送数据,DSP第一次接受的数据是空,但确实进中断接受了,而且会复制其他某些全局变量一个随机值, 

把程序在下载一次就不会出现以上两个问题  ,这两个问题都出现在每次给dsp上电后第一次仿真的时候。

  • 我想把这个指令集写到一个数组里面发出去,但是发现这个数组里面的指令集是乱码,

    能给出具体的代码吗?

    把程序在下载一次就不会出现以上两个问题  ,这两个问题都出现在每次给dsp上电后第一次仿真的时候

    请问32单片机和DSP是如何通信的?是否有使用示波器查看相应的时序是否正常?

  • 这些都是正常的  我写了一个标识符截取函数一直用在keil软件里面没发现问题,然后就在DSP里面调用了  发现DSP不适用这个函数,我把这个函数贴出来您看看CCS为啥用不了次函数,谢谢

    #define _comma_local


    #include "comma.h"
    #include <string.h>
    #include <math.h>
    #define uchar unsigned char
    #define uint unsigned int
    uchar GetComma(uchar num,char *str,uchar CH2) //搜索标志字符函数
    {
    uchar i,j = 0;
    int len=strlen(str);
    for(i = 0;i < len;i ++)
    {
    if(str[i] == CH2)j++;
    if(j == num)return i + 1;
    }
    return 0;
    }
    void Get_str(char *s,uchar CH1,char *Dest) //获取字符串
    {
    uchar i,j;
    memset(Dest,'\0',strlen(Dest));
    i=GetComma(1, s , CH1);
    i = i - 1;
    for(j=0;j<i;j++)
    {
    *(Dest+j)=*(s+j);
    }
    }
    /*
    功能:获取两个字符之间的数据
    函数描述:
    通过设定在原字符串中出现的开始和结束两个截取标志字符,即可截取两个字符之间的字符,
    但是,开始截取标志字符可以是第N次出现的,结束截取标志字符是紧接在开始截取标志字符第一次出现的
    参数描述:scr是源字符串,CH1开始截取标志字符,CH1_num是第N次出现的开始截取标志字符,CH2是结束截取标志字符
    Dest 目的字符串,即截取完成的
    返回值:Dest是的地址

    */
    void GetDestString(char *scr,char CH1,unsigned char CH1_num,char CH2,char *Dest)
    {
    unsigned char i;
    i=GetComma(CH1_num,scr,CH1);
    Get_str(scr+i,CH2,Dest);
    }

  • 调试发现第一次对DSP上电后执行这一个函数后会出现以上我说的两个问题,不调用次截取函数,就没有问题