📄 dps2812_eeprom.c.bak
字号:
#include "DSP28_Device.h"
#include "EEPROM.h"
unsigned int Spi_VarRx[155];
unsigned int i,j,i1;
//unsigned int EEPROM_Read1(void);
inline Uint16 EEPROM_Read1(void);
unsigned int *ram_addr = (unsigned int *)0x100000;
unsigned int send_counter,down_counter,page_counter,eeprom_addr;
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/* 关中断 */
DINT;
IER = 0x0000;
IFR = 0x0000;
/* 初始化PIE控制寄存器 */
InitPieCtrl();
/* 初始化PIE参数表 */
InitPieVectTable();
/* 初始化外设寄存器 */
InitPeripherals();
eeprom_addr = 0x0000;
send_counter = 0;
page_counter = 0;
down_counter = 155; //假设有的数据
for(i = 0; i < 32000; i++)
{
*(ram_addr+i)=i+1;///~~~~~~~~~~~~~~~
}
for(i = 0; i < 155; i++)
{
Spi_VarRx[i] = 0;
}
i = 0;
j = 0;
/* 开中断 */
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
////////////////////////////////////////////////////////
//eeprom按页写:64字节/页
/*///////////////////////////////////////////////////////
EEPROM_Write_Enable();
EEPROM_Write_write(eeprom_addr);
for(send_counter=0;send_counter!=down_counter;)
{
if(page_counter != 64)
{
SpiaRegs.SPITXBUF =(*(ram_addr+send_counter) << 8) & 0xff00;
delay_time(50); //25000 1500 500 100
page_counter++;
send_counter++;
}
else
{
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
while((EEPROM_Read_Status()&0x01) == 0x01);
page_counter = 0;
eeprom_addr = eeprom_addr + 64;
EEPROM_Write_Enable();
EEPROM_Write_write(eeprom_addr); //更新写入页地址
}
}
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;//写完
*/
while((EEPROM_Read_Status()&0x01) == 0x01);
while(Spi_TxReady() == 0);
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
SpiaRegs.SPITXBUF = READ;
while(Spi_TxReady() == 0);
SpiaRegs.SPITXBUF = 0x0000;
//for(i = 0; i < 10000; i++);
while(Spi_TxReady() == 0);
SpiaRegs.SPITXBUF = 0x0000 << 8;
while(Spi_TxReady() == 0);
SpiaRegs.SPITXBUF = 0x5500;
for(j = 0; j < 100; j++);
while(Spi_RxReady() == 0);
/////////////////////////
for(i1 = 0; i1 < down_counter; i1++)
{
Spi_VarRx[i1] = EEPROM_Read1();
}
for(;;)
{
}
}
//===========================================================================
/*inline Uint16 SPIA_Transmit(void)
{
Uint16 recvData;
while( Spi_TxReady() == 0);
recvData = SPIARegs.SPIRXBUF;
while( Spi_TxReady() == 0);
SPIARegs.SPITXBUF = 0x5500;
for(j = 0; j < 100; j++);
while(Spi_RxReady() == 0);
delay_time(50);
return recvData;
}*/
/////////////////////////////////////////
//unsigned int
inline Uint16 EEPROM_Read1(void)
{
//unsigned int data;
Uint16 data;
data = SpiaRegs.SPIRXBUF;
while(Spi_TxReady() == 0);
SpiaRegs.SPITXBUF = 0x5500;
for(j = 0; j < 100; j++);
while(Spi_RxReady() == 0);
delay_time(50);/////////250
return data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -