俩块2812串口通信问题

[复制链接]
1512|9
 楼主| dsp新手yu 发表于 2014-9-15 09:24 | 显示全部楼层 |阅读模式
新手求教:请问各位可以直接把一块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
应该可以  可以把代码贴出来看下

上面是接收数据中断中的程序,下面是主程序。(这个程序和上位机是可以正常通信的)
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]; //发送数据      
       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[0];
                        j=1;
                    Send_Flag=2;
           }
        }
}




 楼主| dsp新手yu 发表于 2014-9-15 12:54 | 显示全部楼层
wangch_sh 发表于 2014-9-15 10:37
接收端的程序有没有问题?

我感觉程序应该没有没有问题,因为接收端和上位机可以正常通信。不过发送端我是烧到FLASH里面运行的。
raoxianbin 发表于 2014-9-15 14:23 | 显示全部楼层
dsp新手yu 发表于 2014-9-15 12:51
上面是接收数据中断中的程序,下面是主程序。(这个程序和上位机是可以正常通信的)
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
还有   你这两块板子是一样的?    也就是电平形式是一样的吗?

嗯,俩块板子是一样的。我把俩板共地发现可以接收了,不知道为什么?
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
任何器件的SCI都是RX和TX相连,TX和RX相连通信的
如果要和上位机通信肯定是需要MAX232等转换
通信之间的所 ...

谢谢斑竹!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部