智能车制作

标题: spi双机通讯,求救!!!!!!!! [打印本页]

作者: 快乐还是忧伤    时间: 2012-4-21 20:43
标题: spi双机通讯,求救!!!!!!!!
双机通讯时出错。。。。。。。。求助啊!!先感谢各位亲人啦!!!!
先说下现象啊,主机仅发送,丛机仅接受时,从机接受到得数据并不完全准确!!!会出错。。。。
下面是代码。。
主机:#include <hidef.h>      
#include "derivative.h"     

void SPI_Write_Byte();
void SPI_INIT();
void PLL_INIT();
int i=1;
extern char data[5],data2,k=0;
void main(void)
{
  
  PTS=0XFF;/* put your own code here */
  DDRB=0XFF;
  PORTB=0X55;
  PLL_INIT();
  SPI_INIT();
  DDRS=0XFF;
  EnableInterrupts;
   for(;;)
   {
    SPI_Write_Byte ();
  }   }
   void PLL_INIT()
{  
  CLKSEL_PLLSEL=0;
  POSTDIV=0;
  SYNR=0x44;
  REFDV=0x81;
  while(!CRGFLG_LOCK);
  CLKSEL_PLLSEL=1;
}
void SPI_INIT()
{
MODRR_MODRR4=0;
(void)SPI0SR;
(void)SPI0DR;
SPI0CR1=0X56;
SPI0CR2=0X10;
SPI0BR=0X12;
}
void SPI_Write_Byte()
{
  char j=0;
char data[5]={85,100,125,15,18};
while(!(SPI0SR_SPTEF));
SPI0DR =data[k];
k++;
if(k==4) {
k=0;}

for(j=0;j<=0xfff0;j++) {
  if(SPI0SR_SPTEF)
PORTB=0XFF;
  }
}
  
/*void SPI_GET_byte()
{
  char k=0;

  for (k=0;k<=0xffff;k++)
  {
  if(SPI0SR_SPIF)
    {
    data2=SPI0DR;
    }}}  */
**************************************************************************
***************************************************************************
从机:
#include <hidef.h>   
#include "derivative.h"     

   void SPI_GET_byte() ;
  

void SPI_INIT();
void PLL_INIT();
char data=0,data2=0;extern j=0;
void main(void)
{
  
  PTM=0XFF;/* put your own code here */
  DDRB=0XFF;
  PORTB=0X55;
  PLL_INIT();
  SPI_INIT();
  
  EnableInterrupts;
  
   for(;;)
   {
   SPI_GET_byte() ;
  
  }
  
  
  
  } /* loop forever */
  /* please make sure that you never leave main */
   void PLL_INIT()
{  
  CLKSEL_PLLSEL=0;
  POSTDIV=0;
  SYNR=0x44;
  REFDV=0x81;
  while(!CRGFLG_LOCK);
  CLKSEL_PLLSEL=1;
}
void SPI_INIT()
{
MODRR_MODRR4=1;
(void)SPI0SR;
(void)SPI0DR;
SPI0CR1=0X46;
SPI0CR2=0X10;
SPI0BR=0X12;
}
/*void SPI_Write_Byte()
{
  char j=0;

while(!(SPI0SR_SPTEF));
data=35;
SPI0DR =data;
for(j=0;j<=0xfff0;j++)
if(SPI0SR_SPTEF)
PORTB=0XFF;
  }
     */

void SPI_GET_byte()
{
  char k=0,data2[5];

  for (k=0;k<=0xfff0;k++)
    {
   
    if(SPI0SR_SPIF)
      {
      data2[j]=SPI0DR;
      j++;
      if(j==4) {
      j=0;}}
    }
  }
********************************************************************************
***********************************************************************************
另外,如果要想实现每个机子都能接受发送的话,如何编写啊????将我的程序中注释部分/*.......*/的加进去后,程序就都不能执行了饿?!!!!!!!!!!怎么回事啊?
哪位大侠帮帮忙啊!!跪谢啦!!!!!!!!

作者: 快乐还是忧伤    时间: 2012-4-22 07:54
好吧,自己先顶下,各位加油啊!!!!!!!要不给个例程也行哈

作者: linping9656    时间: 2012-8-23 23:04
我想用K60的SPI 现在还不会用 纠结了




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2