我在用SPI来读写ST95040(EEPROM),搞了一天了,还是不对,SPI有数据输出,而95040一点反应也没有.不知道哪里出错,请搞过的兄弟们帮我看一看.哪里有错<br />误.<br /><br /><br />//三线制,MOSI MISO SCLK <br />void SpiInit(void)<br />{<br /> SPIC1 = 0x5c; // Master mode, SPI enable. <br /> SPIC2 = 0x00; // <br /> SPIBR = 0x00; // 2MHZ <br /> PTADD_PTADD7 = 1;// Out<br />}<br /><br /><br />unsigned char Read_SR(void)<br />{<br /> unsigned char Tmp;<br /><br /> SPID = 0x05; //M95040 Read Stat Register<br /> while (!SPIS_SPTEF);<br /><br /> Tmp = SPID;<br /> while (!SPIS_SPRF);<br /><br /> return Tmp;<br />}<br /><br /><br />unsigned char EepromByteRead(unsigned int EepromAddr)<br />{<br /> unsigned char Tmp;<br /> <br /> SPID = 0x03; //M95040 Read Command<br /> while (!SPIS_SPTEF);<br /><br /> SPID = EepromAddr; // M95040 Read Address<br /> while (!SPIS_SPTEF);<br /> <br /> Tmp = SPID;<br /> while (!SPIS_SPRF);<br /><br /> return Tmp;<br />}<br /><br />oid EepromByteWrite(unsigned char EepromAddr, unsigned char data) <br />{<br /> SPID = 0x01; //M95040 Wrtie Stat Register<br /> while (!SPIS_SPTEF);<br /><br /> SPID = 0x06; //M95040 Write Enable<br /> while (!SPIS_SPTEF);<br /> <br /> SPID = 0x02; //M95040 Send Write Command<br /> while (!SPIS_SPTEF); <br /><br /> SPID = EepromAddr; //Send Writen Address<br /> while (!SPIS_SPTEF);<br /> <br /> SPID = data; //Writen 8 bit MSB<br /> while (!SPIS_SPTEF);<br />}<br /><br /> |
|