初始化的函数: void SPI1INI() { SSPCR0=0x0007; //CPOL,CPHA=0,8bit mode,SPI format,scr=0; SSPCPSR=0x02; SSPCR1=0x0002; } for(j=0;j<16;j++) { for(i=0;i<DataLength/16;i++) { while(SSPSR&0x02==0x00); //tx fifo is full then wait SSPDR=0x5555; } while(SSPSR&0x10==0x00); //wait ssp control not busy } 有两个疑问: 1、手册说SSPSR的bit4 0-空闲,但是我用while(SSPSR&0x10!=0x00);程序就会死在这一条;请问下手册有误还是我使用方法不对? 2、SSP发送的数据送到外部的移位寄存器,当用SSPDR=0x5555;移位寄存器中的数据就是对的0,1间隔的,但是用SSPDR=0x55;寄存器中的数据就是错的了,MS是全0.请问下怎么这么奇怪呢? 感觉SSP用起来不如SPI好用,被折磨的很头疼,谢谢大家帮帮忙。。。
|