?? fm25640_m16.c
字號:
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// FM25640 Fram Routines
//
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////
void init_SPI_4(void)
{
prcr = 7; // Protect OFF
s4ic = 0; //disable int.
//s4c = 0x79; // (1) f8 internal-clock
prc2=1;
s4c = 0x68; // (1) f1 internal-clock
/*
01100000; // SI/O S3C,S4C
||||||||__smi0____ SM1SM0 internal clock select
|||||||___smi1____ 00:F1, 01:F1/8 10:f1/32 11:Do not select
||||||____smi2____ SOUTi Output Disable.. 0:SOUT enabled 1:High Emp.
|||||_____smi3____ S I/Oi Port Select Bit..1 : SOUTi output, CLKi function, 0:normal I/O
||||______smi4____ CLK Polarity Select Bit..0 : Transmit data is output at falling edge of transfer clock and receive data is input at rising edge
|||_______smi5____ Transfer Direction Select Bit..0 : LSB first, 1 : MSB first
||________smi6____ Synchronous Clock Select Bit..0 : External clock 1 : Internal clock
|_________smi7____ SOUTi Initial Value Set Bit..Effective when SMi3 = 0 0 : low output, 1 : high output
*/
s4brg = 0x9; // (2) Set BRG f1/11 mhz
/*--- Initialize peripheral clock select register default f1---*/
prcr = 0; // Protect ON
s4ic = 0; // LV = 0
ifsr &=b00111111; //int4,5 / SIO3, SIO4 int select
}
char TX_RX_SIO4(char c)
{
s4trr=c;
while(ir_s4ic==0);
__nop;__nop;__nop;__nop;__nop;__nop;__nop;__nop;__nop;__nop;
s4ic=0;
c=s4trr;
return c;
}
void fm25640_init(void)
{
prc2=1;cs_dir_ee=1;cs_ee=1;
init_SPI_4();
}
char fm25640_read_status(void)
{
char a;
//RDSR=5 read status
cs_ee=0;
TX_RX_SIO4(5);
a=TX_RX_SIO4(0);
cs_ee=1;
return a;
}
void fm25640_write_disable(void)
{
//WRDI=4 write disable
//Bit 7 6 5 4 3 2 1 0
//Name WPEN 0 0 0 BP1 BP0 WEL 0
cs_ee=0;
TX_RX_SIO4(4);
cs_ee=1;
}
void fm25640_write_enable(void)
{
//WRDI=6 write enable
//Bit 7 6 5 4 3 2 1 0
//Name WPEN 0 0 0 BP1 BP0 WEL 0
cs_ee=0;
TX_RX_SIO4(6);
cs_ee=1;
}
void fm25640_write_status(void)
{
//WRSR=1 write status
//Bit 7 6 5 4 3 2 1 0
//Name WPEN 0 0 0 BP1 BP0 WEL 0
fm25640_write_enable();
cs_ee=0;
TX_RX_SIO4(1);
TX_RX_SIO4(0); //write enable no protect
cs_ee=1;
}
void fm25640_write_mem(unsigned int adr,char dt)
{
//Write=2 write mem
fm25640_write_enable();
cs_ee=0;
TX_RX_SIO4(2);
TX_RX_SIO4((char)(adr>>8));
TX_RX_SIO4((char)(adr & 0xff));
TX_RX_SIO4(dt);
cs_ee=1;
}
char fm25640_read_mem(unsigned int adr)
{
char a;
//Read=3 read mem
cs_ee=0;
TX_RX_SIO4(3);
TX_RX_SIO4((char)(adr>>8));
TX_RX_SIO4((char)(adr & 0xff));
a=TX_RX_SIO4(0xff);
cs_ee=1;
return a;
}
unsigned char FM25640_test(unsigned char c)
{
unsigned char h;
// unsigned int i;
/*for (i=0;i<8192;i++)
{
fm25640_write_mem(i,(char)i&0xff);
h=fm25640_read_mem(i);
if(h!=(char)(i&0xff)) {i=9999;break;};
}*/
fm25640_write_mem(1023,c);
h=fm25640_read_mem(1023);
return h;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -