/ 读 E2PROM 并验正读出数据是否正确 //------------------------------------------- void E2_Cread ( bin08 E2ad, bin08* RAMad,bin08 n ) { bin08 i; bin08 j=0; bin08 sum; do { read_E2 ( E2ad, &buffer[0], (n+1) ); sum = 0; for(i=0;i<n;i++) { sum += buffer+0x55; } I2Cerr=0; if ( sum == buffer[n] ) { I2Cerr=1; } j++; }while ( (j<3)&& I2Cerr ); memcopy(&buffer[0],RAMad,n); } // 写 E2PROM 并在写完 5mS 后再读出,确定写入是否正确 //------------------------------------------- void E2_Cwrite ( bin08 E2ad, bin08* RAMad, bin08 n ) { bin08 i; bin08 j=0; memcopy( RAMad,&buffer[0],n ); do { buffer[n] = 0; for(i=n;i!=0;i--) { buffer[n] += buffer+0x55; } write_E2( E2ad, &buffer[0],(n+1) ); read_E2 ( E2ad, &buffer[n+1],(n+1) ); I2Cerr=0; for(i=n;i!=0;i--) { if (buffer != buffer[n+1+i]) { I2Cerr=1; } } j++; }while ( (j<3)&& I2Cerr); } 此段程序已经通过调试没有问题,
|