|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
【求助】串行EEPROM 25AA640與VC33的C語(yǔ)言讀寫(xiě)程序 |
| 作者:xjwolf1234 欄目:技術(shù)交流 |
十萬(wàn)火急。!我現(xiàn)在正在調(diào)試25AA640,已經(jīng)整了兩個(gè)星期了還沒(méi)調(diào)通,不知道問(wèn)題出在哪里了?請(qǐng)各位大蝦幫忙檢查一下下面的程序!!小弟不勝感激。。。 我的接線如下: SI--->FSX0; SO--->FSR0; SCK-->XF0; CS--->XF1; 附程序: #define SET_DSP_IO0 SERIAL_PORT_CONTROL1 |= 0x0400 #define CLR_DSP_IO0 SERIAL_PORT_CONTROL1 &= (0xffff-0x0400) #define SO SERIAL_PORT_CONTROL2 &= 0x0800 #define SET_SCK IOF|= 0x04 #define CLR_SCK IOF&= (0xff-0x04) #define SET_CS IOF|= 0x40 #define CLR_CS IOF&= (0xff-0x40) void main(void) { int a; a=0; SERIAL_PORT_CONTROL1 = 0x0222; SERIAL_PORT_CONTROL2 = 0x0022; IOF=0x22; CLR_SCK; CLR_CS; WriteEEPROM(8,0x06); SET_CS; CLR_SCK; CLR_CS; WriteEEPROM(8,0x02); CLR_SCK; WriteEEPROM(16,0x0100); CLR_SCK; WriteEEPROM(8,0x55); CLR_SCK; SET_CS; CLR_SCK; CLR_CS; WriteEEPROM(8,0x03); SET_SCK; CLR_SCK; WriteEEPROM(16,0x0100); a=ReadEEPROM(8)& 0xff; SET_CS; CLR_SCK; } void WR_EN(void) { CLR_CS; WriteEEPROM(8,0x06); SET_CS; } int RD_SR(void) { int j; CLR_CS; WriteEEPROM(8,0x05); j=ReadEEPROM(8); SET_CS; return j; } void WR_SR(void) { CLR_CS; WriteEEPROM(8,0x06); SET_CS; CLR_CS; WriteEEPROM(8,0x01); WriteEEPROM(8,0x00); SET_CS; StopEEPROM(); } void WriteEEPROM(int iBits,int iValue) { do { CLR_SCK; Delay_100NS(); ADDR_EEPROM = iValue >> (iBits - 1); iBits--; if((ADDR_EEPROM&0x01)==0) CLR_DSP_IO0; else SET_DSP_IO0; SET_SCK; Delay_100NS(); }while(iBits != 0); } int ReadEEPROM(int iBits) { int iData; iData=0x00; ADDR_EEPROM=0x00; do{ SET_SCK; Delay_100NS(); CLR_SCK; Delay_100NS(); CLR_SCK; Delay_100NS(); ADDR_EEPROM=SERIAL_PORT_CONTROL2>>11; iData|=(ADDR_EEPROM & 0x01)<<(iBits-1); iBits--; CLR_SCK; Delay_100NS(); }while(iBits !=0 ); return iData; } void StopEEPROM(void) /* 等待8位數(shù)據(jù)寫(xiě)完 */ { int iData; do { CLR_CS; iData=RD_SR(); SET_CS; }while((iData & 0x01)!=0); /*fake check the last bit */ } void Delay_100NS() { unsigned int i,j; for(i=0;i<10;i++) {j=i;} } |
| 2樓: | >>參與討論 |
| 作者: gxl2005 于 2006/3/2 17:51:00 發(fā)布:
個(gè)人覺(jué)得應(yīng)該是程序有問(wèn)題 最好還是自己?jiǎn)尾秸{(diào)試程序,發(fā)現(xiàn)問(wèn)題, |
|
| 3樓: | >>參與討論 |
| 作者: xjwolf1234 于 2006/3/9 13:00:00 發(fā)布:
我知道程序有問(wèn)題,可我找不出來(lái)阿! 大哥,我已經(jīng)找了2個(gè)多星期了還是沒(méi)有找出問(wèn)題來(lái)!能不能幫我檢查檢查啊。。。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |