📄 flash_sub.c
字号:
#include "flash_sub.h"
uchar longdata[4];
uchar SEC[528];
void Flash_InIt(void)
{
DDRG |=_BV(PG4)|_BV(PG3);
PORTG = 0X18;
DDRB |=_BV(DDB2)|_BV(DDB1)|_BV(DDB0);
SPCR |= _BV(SPE) |_BV(MSTR) |_BV(SPR1);
}
void WriteSpi(uchar cData)
{
uchar i;
// CSFLASH_ON ;
SPDR = cData;
while(!(SPSR & _BV(SPIF)))
;
// i = SPSR;
// SPDR = 0;
// while(!(SPSR & _BV(SPIF)))
;
// i = SPSR;
// CSFLASH_OFF;
i = SPSR;
// return i;
}
uchar ReadSpi(void)
{
uchar i=0;
// CSFLASH_ON;
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
// CSFLASH_OFF;
i = SPDR;
return i;
}
uchar GetFlashState(void)
{
uchar i=0;
CSFLASH_ON ;
SPDR = 0XD7;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
i = SPDR;
CSFLASH_OFF;
return i;
}
WriteBuff1(uchar *p)
{
uint i=0,j=528,k;
CSFLASH_ON;
SPDR = 0X84;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
for(k=0;k<2;k++)
{
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
}
for(k=0;k<j;k++)
{
SPDR = *(p+k);
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
}
CSFLASH_OFF;
i = SPSR;
}
ReadBuff1(uchar *p)
{
uint i=0,j=528,k;
CSFLASH_ON;
SPDR = 0XD4;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
for(k=0;k<2;k++)
{
SPDR = 0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
}
for(k=0;k<j;k++)
{
SPDR =0;
while(!(SPSR & _BV(SPIF)))
;
i = SPSR;
*(p+k) = SPDR;
}
CSFLASH_OFF;
i = SPSR;
}
//
//将指定缓冲区内容写入FLASH相应页
void StorePage(uint pageno,uchar *tab,uint cnt)
{
uint i;
(uint)longdata[0] = pageno << 2;
CSFLASH_ON;
WriteSpi(0x85);
WriteSpi(longdata[0]);
WriteSpi(longdata[1]);
WriteSpi(0);
for(i=0;i<512;i++)
{
WriteSpi(*tab);
tab++;
}
for(i=512;i<cnt;i++)
{ WriteSpi(0);
}
CSFLASH_OFF;
}
//
//读取FLASH页面到临时缓冲区
void LoadPage(uint pageno,uchar *tab,uint cnt)
{
uint i=0;
(uint)longdata[0] = pageno << 2;
CSFLASH_ON;
WriteSpi(0xD2);
WriteSpi(longdata[0]);
WriteSpi(longdata[1]);
WriteSpi(0);
WriteSpi(0);
WriteSpi(0);
WriteSpi(0);
WriteSpi(0);
for(i=0;i<cnt;i++)
{
*tab = ReadSpi();
tab++;
}
CSFLASH_OFF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -