智能车制作

标题: 问个spi的问题.. [打印本页]

作者: karwenlin    时间: 2009-4-22 19:43
标题: 问个spi的问题..
向SPIDR写入0xff之后(调试可看到SPIDR中的数值变为255),SPTEF依然是1,说数据寄存器还是空的.
这是怎么回事?

void SPI_Init(void) //spi初始化
{
//  DDRT = 0xff;
  MODRR   = 0x00;  
  SPI0CR2 = 0x10;
  SPI0CR1 = 0x5e;   
  SPI0BR  = 0x42; //BR=busclk/((SPPR + 1)· 2^(SPR + 1))=16000/(5*8)=400k                 
}

//SPI写一个字节
void SPI_Write_Byte(unsigned char val)
{
while(SPI0SR_SPTEF) //发送器空时该标志为1;
   {
    SPI0DR=val;
   }
}
作者: songfangfang    时间: 2009-4-29 22:22
我现在也在做SPI,但是数据寄存器的值一直读不到,不知道是什么原因~~~~
作者: gaoam040    时间: 2009-5-5 16:20
2# songfangfang
SPI 的状态寄存器初始化中你也没有设置。还有当SPI_SPTEF=0的时候,你就跳过去了,没有等待,那时也可能是传输速度太慢,导致寄存器中还有数,你就写不了了。试着等待一下,等他为空的时候再往里写。
作者: seuzhuxi    时间: 2013-4-16 15:49
并未清零SPTEF位,因为该标志位是通过读SPISR状态寄存器来清零的




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