|
про SpiTX(0x55); // заполняю память 0х55
Вот кое-какие куски, там готовность правда по выводу определяется.
//**************** èç áóôåðà 1 â ÏÇÓ ****************
void AT45DB081::Buf1ToMain(unsigned int page)
{
while(!FlashReady); // æäåì êîíåö îïåðàöèè
SS = 0;
spi = 0x83; // êîä îïåðàöèè
spi = (page>>7)&0x1f; // ñòàðø. ÷àñòü àäðåñà ñòðàíèöû
spi = (page<<1)&0xfe; // ìëàäø. ÷àñòü àäðåñà ñòðàíèöû
spi = 0; // don’t care bits
SS = 1; // íà÷àëè ïåðåñûëêó
}
//**************** èç ÏÇÓ â áóôåð 1 *****************
void AT45DB081::MainToBuf1(unsigned int page)
{
while(!FlashReady); // æäåì êîíåö îïåðàöèè
SS = 0;
spi = 0x53; // êîä îïåðàöèè
spi = (page>>7)&0x1f; // ñòàðø. ÷àñòü àäðåñà ñòðàíèöû
spi = (page<<1)&0xfe; // ìëàäø. ÷àñòü àäðåñà ñòðàíèöû
spi = 0; // don’t care bits
SS = 1; // íà÷àëè ïåðåñûëêó
}
//***************************************************
char AT45DB081::LoadDir() // çàãðóçêà Dir èç ÏÇÓ
{
char *ptr;
char i;
MainToBuf1(0); // ÷èòàåì 0 ñòðàíèöó
while(!FlashReady); // æäåì êîíåö îïåðàöèè
SS = 0; // âûáðàòü óñòðîéñòâî
ptr = (char*)&Dir; // óêàçàòåëü íà îãëàâëåíèå
spi = 0xd4; // êîä îïåðàöèè ÷òåíèå áóôåðà 1
for(i=0;i<4;i++) spi = 0; // ÷òåíèå ñ 0 àäðåñà
for(i=0;i<sizeof(Dir);i++)
{ spi = 0; *ptr++ = spi; } // ÷èòàåì îãëàâëåíèå
SS = 1; // êîíåö ÷òåíèÿ
if(CRC16((char*)&Dir,sizeof(Dir)-2)==Dir.crc) return 1; // ïðî÷èòàíà ïðàâèëüíî
return 0; // îãëàâëåíèÿ íåò
}
E-mail: info@telesys.ru