智能车制作

标题: SPI的问题 请大手帮忙 [打印本页]

作者: gimmooncher    时间: 2010-3-10 19:26
标题: SPI的问题 请大手帮忙
我自己编了俩个型号为DP512飞思卡尔单片机之间的SPI通信,就是另一个为主机,发送一个十六进制数,另一个从机接收。
在主机上要下载的程序如下(头文件省略):
void SPI_INT(void)
{   SPI0CR1 = 0x5e;
  SPI0BR=0X11;  
    }
void SPI_send(unsigned char senddata)
{   
   SPI0DR=senddata;
    while(SPI0SR_SPTEF==0)
  }
void main(void)
{  SPI_INT();
   while(1)
   
{  
    SPI_send(0XF0);
}
}
要在从机上下载的程序如下:
void SPI_INT(void)
{
  SPI0CR1=0x4e;
  SPI0BR=0X11;  
   }
void spi_read(void)

{  while(SPI0SR_SPIF==1)
   {
      data=SPI0DR;
   }
}
void main(void)
{
  SPI_INT();
while(1)
{
     DDRB=0XFF;
     spi_read();
     PORTB=data; /连接八个共阳的LED
    }
}
结果是灯不亮,就是说没什么反应,不知道是我程序的问题,还是别的问题,主机上的SS管脚接了高电平,从接接地。请各位大手指点!
作者: verify    时间: 2010-3-10 20:29
DIP512没有用过,不过如果硬件没有问题肯定就是程序问题,不过程序照着数据手册来就可以了
作者: cnpcshangbo    时间: 2010-5-4 09:05
SPI的收发是同时进行的。不存在像主机程序那样只收不发的情况,那样是的不到数据的。所以在接收时一定要先发送人任意一个数。
作者: cnpcshangbo    时间: 2010-5-4 09:05
SPI的收发是同时进行的。不存在像主机程序那样只收不发的情况,那样是的不到数据的。所以在接收时一定要先发送人任意一个数。
作者: zhangjiarui    时间: 2010-11-25 10:13
学习
作者: zzfei90    时间: 2010-12-3 15:33
还是没懂…




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