dsp新手yu 发表于 2014-9-15 09:24

俩块2812串口通信问题

新手求教:请问各位可以直接把一块dsp的SCITXBUF端和另一块的SCIRXBUF端直接连到一起通信吗?如果可以的话为什么收不到呢?(发送板的数据是可以通过RS232送到PC端正常接收的)

wangch_sh 发表于 2014-9-15 10:37

接收端的程序有没有问题?

raoxianbin 发表于 2014-9-15 11:12

应该可以可以把代码贴出来看下

dsp新手yu 发表于 2014-9-15 12:51

raoxianbin 发表于 2014-9-15 11:12 static/image/common/back.gif
应该可以可以把代码贴出来看下

上面是接收数据中断中的程序,下面是主程序。(这个程序和上位机是可以正常通信的)
interrupt void SCIRXINTA_ISR(void)   // SCI-A接收中断函数
{
        Sci_Get = SciaRegs.SCIRXBUF.all; //接收数据               
      i++;

    if(i==24)
        {
           Send_Flag=1; //有数据需要发送,置位标志
           i=0;
        }
       
    PieCtrl.PIEACK.all=0x0100;//使得同组其他中断能够得到响应
    EINT;//开全局中断vcc

}

/****************************************************************************
*
*名    称:SCITXINTA_ISR()
*
*功    能:发送中断函数
*
*入口参数:无
*
*出口参数:无
*
****************************************************************************/

interrupt void SCITXINTA_ISR(void)   // SCI-A发送中断函数
{
   if(Send_Flag==2)
   {       
       SciaRegs.SCITXBUF=Sci_Get; //发送数据      
       j++;
           if(j==24)
           {
               j=0; //由于第一个数据已经在接收中断里发送,这里从第2个数据开始发送
                Send_Flag=0; //数据发送完成,清标志位
           }
        }

    PieCtrl.PIEACK.all=0x0100;//使得同组其他中断能够得到响应
    EINT;//开全局中断
}

void main(void)
{
    InitSysCtrl();//初始化系统函数

        DINT;
        IER = 0x0000;   //禁止CPU中断
        IFR = 0x0000;   //清除CPU中断标志
       
        InitPieCtrl();//初始化PIE控制寄存器

        InitPieVectTable();//初始化PIE中断向量表       
       
        InitGpio();//初始化Gpio口
       
        InitPeripherals(); //初始化SCIA
       
    for(i = 0; i <24; i++)//初始化数据变量
    {
            Sci_Get=0;
    }   
    i = 0;   
    Send_Flag = 0;

    PieCtrl.PIEIER9.bit.INTx1=1;//使能PIE模块中的SCI接收中断
    PieCtrl.PIEIER9.bit.INTx2=1;//使能PIE模块中的SCI发送中断

    IER|=M_INT9;//开CPU中断

    EINT;//开全局中断
    ERTM;//开全局实时中断
           
        for(;;)
        {               
           if(Send_Flag==1)
           {
                        SciaRegs.SCITXBUF=Sci_Get;
                        j=1;
                  Send_Flag=2;
           }
        }
}




dsp新手yu 发表于 2014-9-15 12:54

wangch_sh 发表于 2014-9-15 10:37 static/image/common/back.gif
接收端的程序有没有问题?

我感觉程序应该没有没有问题,因为接收端和上位机可以正常通信。不过发送端我是烧到FLASH里面运行的。

raoxianbin 发表于 2014-9-15 14:23

dsp新手yu 发表于 2014-9-15 12:51 static/image/common/back.gif
上面是接收数据中断中的程序,下面是主程序。(这个程序和上位机是可以正常通信的)
interrupt void SCIR ...

初步看了一下      Sci_Get = SciaRegs.SCIRXBUF.all; //接收数据               这个地方的Sci_Get 数组是没显示出来?      还有你说吧发送端的数据固化到flash中   用上位机调试过这部分吗?

raoxianbin 发表于 2014-9-15 21:52

还有   你这两块板子是一样的?    也就是电平形式是一样的吗?

dsp新手yu 发表于 2014-9-16 09:02

raoxianbin 发表于 2014-9-15 21:52 static/image/common/back.gif
还有   你这两块板子是一样的?    也就是电平形式是一样的吗?

嗯,俩块板子是一样的。我把俩板共地发现可以接收了,不知道为什么?

zhangmangui 发表于 2014-9-16 22:40

任何器件的SCI都是RX和TX相连,TX和RX相连通信的
如果要和上位机通信肯定是需要MAX232等转换
通信之间的所有肯定都需要共地的   

dsp新手yu 发表于 2014-9-17 20:04

zhangmangui 发表于 2014-9-16 22:40 static/image/common/back.gif
任何器件的SCI都是RX和TX相连,TX和RX相连通信的
如果要和上位机通信肯定是需要MAX232等转换
通信之间的所 ...

谢谢斑竹!
页: [1]
查看完整版本: 俩块2812串口通信问题