📄 rf211s.c
字号:
//#include "STC89LC52.H"
//#include "header.h"
#include <STRING.H>
#include <Intrins.h>
#include "global.h"
//------------------------------------------------------------------
//返回32位数据
//------------------------------------------------------------------
ulong read_data_spi(uchar addr)
{
uchar i ,j;
uchar temp_data ;
ulong v_return ;
temp_data = addr;
v_return = 0 ;
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SLE = 0 ;
_nop_() ;
_nop_() ;
_nop_();
_nop_();
// temp_data = temp_data << 4 ;
for(i=0;i<4;i++)
{
if(temp_data&(0x01<<(3-i)))
{
SPI_SDATA = 1 ;
}
else
{
SPI_SDATA = 0 ;
}
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
// temp_data = temp_data << 1 ;
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_();
}
//-----读标识----------------
SPI_SDATA = 0 ;
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SDATA = 1 ; //设置值
_nop_();
_nop_();
_nop_();
for(j=0;j<4;j++)
{
temp_data = 0 ;
for(i=0;i<8;i++)
{
SPI_SCK = 1 ;
_nop_() ;
_nop_();
_nop_();
Flag_spi_data = SPI_SDATA ;
// temp_data |= (uchar)SPI_SDATA ;
temp_data |= ((uchar)Flag_spi_data << (7-i)) ;
_nop_();
_nop_();
_nop_() ;
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_() ;
_nop_() ;
}
v_return =v_return << 8 ;
v_return += (ulong)temp_data ;
_nop_();
_nop_();
}
/*
for(i=0;i<16;i++)
{
SPI_SCK = 1 ;
_nop_() ;
CY = SPI_SDATA ;
temp_data = temp_data >> 1 ;
_nop_() ;
SPI_SCK = 0 ;
_nop_() ;
_nop_() ;
}
v_return+=(temp_data<<16) ;
*/
SPI_SLE = 1 ;
_nop_() ;
return(v_return) ;
}
void write_data_spi(char addr,uchar num,uchar *pd)
{
uchar i , k , m = 0;
uchar temp_data = addr;
ulong temp = 0 ;
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SLE = 0 ;
_nop_() ;
_nop_() ;
_nop_();
_nop_();
for(i=0;i<4;i++)
{
if(temp_data&(0x01<<(3-i)))
{
SPI_SDATA = 1 ;
}
else
{
SPI_SDATA = 0 ;
}
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_();
}
//-----写标识----------------
SPI_SDATA = 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_();
i = 0;
//-------写数据-----------------------
temp = (ulong)*pd++ ;
temp = (temp << 8 )+(ulong)*pd++ ;
temp = (temp << 8 )+(ulong)*pd++ ;
temp = (temp << 8 )+(ulong)*pd ;
for(i=0;i<num;i++)
{
if(temp&(((ulong)0x01)<<(num-i-1)))
{
SPI_SDATA = 1 ;
}
else
{
SPI_SDATA = 0 ;
}
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SPI_SCK = 0 ;
_nop_();
_nop_();
_nop_();
}
SPI_SLE = 1 ;
_nop_();
_nop_();
return ;
}
void Set_TxOrRx(bit temp)
{
ulong temp_data ;
if(temp==RX_SETTING)
{
temp_data = DATA_RX_CTRL1 ;
write_data_spi(ADDR_CTRL1 ,32, &temp_data);
}
else
{
temp_data = DATA_TX_CTRL1 ;
write_data_spi(ADDR_CTRL1 ,32, &temp_data);
}
temp_data = DATA_CTRL2 ;
write_data_spi(ADDR_CTRL2 ,32, &temp_data);
temp_data = DATA_DTR ;
write_data_spi(ADDR_DTR ,32, &temp_data);
}
void SetChannel(uchar temp)
{
uchar j ;
ulong temp_f0 ;
uchar data temp_data[12] ;
uchar code *pd = &FREQUENCY_TABLE[temp*12];
for(j=0;j<12;j++)
{
temp_data[j]=(uchar)*pd++ ;//FREQUENCY_TABLE[i++] ;
}
write_data_spi(ADDR_F0,32,&temp_data[0]);
write_data_spi(ADDR_F1,32,&temp_data[4]);
write_data_spi(ADDR_F2,32,&temp_data[8]);
// temp_f0 = read_data_spi(ADDR_F0) ;
// temp_f0 = read_data_spi(ADDR_F1) ;
// temp_f0 = read_data_spi(ADDR_F2) ;
// temp_f0 = read_data_spi(ADDR_F3) ;
return ;
// write_data_spi(0,12,temp_data[0]) ;
}
/*
void reset_rf(void)
{
ulong temp ;
uint i ;
temp = 0x00000000 ;
write_data_spi(ADDR_RESET ,1, &temp);
for(i=0;i<2000;i++)
{
_nop_();
}
temp = 0xFFFFFFFF ;
write_data_spi(ADDR_RESET ,1, &temp);
for(i=0;i<2000;i++)
{
_nop_();
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -