搜索
bottom↓
回复: 1

pic16f887与dsp2812 spi通信

[复制链接]

出0入0汤圆

发表于 2013-6-18 11:12:26 | 显示全部楼层 |阅读模式
PIC与2812进行通信 pic为主机 2812为从机,从机接收信号总是出错,求解答
pic主机spi发送波形

pic主机发送程序  晶振为4M 时钟周期为1M
void main(void)
{       
          ANSEL=0X00;                          //所有IO为数字IO
          ANSELH=0X00;                          //所有IO为数字IO
          OSCCON=0X08;                    //系统时钟由CONFIG决定   
        TRISC5=0;                        //SDO
        TRISA5=0;                        //cs
        TRISC3=0;                        //CLK信号

        SSPCON=0X20;                //主机模式 clk空闲时低电平
        SSPSTAT=0X00;                //下降沿发送数据
        uchar j=0,i=0;
          while(1)
          {
                RA5=0;                                        //cs选通
                for(uchar i=0;i<5;i++);       
                SSPBUF=0x55;                        //发送数据
                while(!SSPIF);                        //等待发送结束
                SSPIF=0;
                for(uchar i=0;i<5;i++);
                RA5=1;
                for(uchar i=0;i<240;i++)        //延时
                        for(uchar h=0;h<50;h++);
          }
}
dsp从机接收程序
void InitSpi(void)
{
         EALLOW;
         //spi
         GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2=1;
         GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0=1;
         GpioMuxRegs.GPFMUX.bit.SPISOMIA_GPIOF1=1;
         GpioMuxRegs.GPFMUX.bit.SPISTEA_GPIOF3=1;
     EDIS;

        // Initialize SPI-A:
          SpiaRegs.SPICCR.all=0x07;                        //每次移位8个 下降沿接收数据
          SpiaRegs.SPICTL.all=0x00;                        //从机模式 禁止发送
          SpiaRegs.SPIBRR=24;                                //晶振为20M 波特率为 20*10//2/4/25=1M
          SpiaRegs.SPISTS.all=0;
          SpiaRegs.SPICCR.all=0x87;                        //重启spi
        //  SpiaRegs.SPIPRI.bit.FREE=1;
        //tbd...
}       
unsigned int Spi_TxReady(void)
{
        unsigned int i;
        if(SpiaRegs.SPISTS.bit.BUFFULL_FLAG == 1)
        {
                i = 0;
        }
        else
        {
                i = 1;
        }
        return(i);
}
unsigned int Spi_RxReady(void)
{
        unsigned int i;
        if(SpiaRegs.SPISTS.bit.INT_FLAG == 1)
        {
                i = 1;
        }
        else
        {
                i = 0;
        }
        return(i);       
}
void main()
{
        uchar i=0,j=0,k;
        InitSysCtrl();
        DINT;
        IER=0x0000;
        IFR=0x0000;
        InitPieCtrl();
        InitPieVectTable();
        InitPeripherals();
        InitSpi();
        InitGpio();
        EINT;
        ERTM;
        i=0;
        j=0;
        while(1)
        {
        //        if(Spi_RxReady()==1)
                while(SpiaRegs.SPISTS.bit.INT_FLAG==0);        //等待接收数据
                        sp_data[j]=SpiaRegs.SPIRXBUF;                //读数据
                j++;
                if(j==10) j=0;
                for(i=0;i<1000;i++);                //延时
        }               
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2013-6-18 21:57:46 | 显示全部楼层
找到原因了程序是正确的,硬件问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-17 16:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表