把一段原本用在M8上的SPI程序移植到M16上,用来连接ADS8345,结果发现,SPI根本不工作……
现象是:SPI的所有管脚都没有任何的输出,只是一直维持着高电平或者低电平。有的时候开机的前一两秒SCK上有时钟信号,然后就什么都没有了……
奇怪,不知是哪里出了问题。按理说不应该有什么问题呀……
拜托大家想想办法啦~
下面是代码~
初始化: void vInitSPI(void) {
SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPIE);//开SPI vSelIO(2, 7, 1); vSelIO(2, 6, 0); vSelIO(2, 5, 1);
vWriteIO(2, 5); vWriteIO(2, 6); vWriteIO(2, 7); }
下面是SPI通信 uint8 nRes; SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPIE);//开SPI SPF=0; SPDR=nCom; while(SPF!=1) {}; nRes=SPDR; return nRes; |