📄 phy.i
字号:
************************** EXTERNAL INTERRUPTS **************************
*******************************************************************************************************
*******************************************************************************************************/
//-------------------------------------------------------------------------------------------------------
// Rising edge trigger for external interrupt 0 (FIFOP)
// FIFOP on external interrupt 0
// SFD interrupt on timer 1 capture pin
//-------------------------------------------------------------------------------------------------------
/******************************************************************************************************
*******************************************************************************************************
************************** LED **************************
*******************************************************************************************************
*******************************************************************************************************/
//------------------------------------------------------------------------------------------------------
// LED
//------------------------------------------------------------------------------------------------------
/******************************************************************************************************
*******************************************************************************************************
************************** KEY **************************
*******************************************************************************************************
*******************************************************************************************************/
//------------------------------------------------------------------------------------------------------
// KEY
//------------------------------------------------------------------------------------------------------
/******************************************************************************************************
************************** 函数声明 **************************
*******************************************************************************************************/
//------------------------------------------------------------------------------------------------------
void PORT_Init(void);
void SPI_Init(void);
void USART0_Init(void);
void USART0_Send_Char(unsigned char data);
void USART0_Send_Str(unsigned char *ptr);
unsigned char USART0_Receive_Char(void);
void USART0_Flush(void);
void USART0_Clear_rx_buffer0(void);
void Sleep(void);
//------------------------------------------------------------------------------------------------------
/******************************************************************************
******************* Commonly used types *******************
******************************************************************************/
typedef unsigned char BOOL;
// Data
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long int DWORD;
// Unsigned numbers
typedef unsigned char UINT8;
typedef unsigned int UINT16;
typedef unsigned long int UINT32;
// Signed numbers
typedef signed char INT8;
typedef signed int INT16;
typedef signed long int INT32;
// 下面两个要设置成一样大
//#define I_Am_What COORDINATOR
//#define I_Am_What ROUTER
/***********************************************************************************************
* 写命令选通寄存器函数
* cmd : 要写入的命令选通寄存器
* bool : 是否由本函数来使能和禁止CSn
* 返回状态字节
************************************************************************************************/
unsigned char WriteStrobeReg_spi(unsigned char cmd)
{
unsigned char Value;
( PORTB &= ~(1 << (0 )) ) ; //使能 CSn
Value = spi(0x00|cmd);
( PORTB |= (1 << (0 )) ) ; // 禁止 CSn
//delay_ms(1);
return Value;
}
unsigned char WriteStrobeReg(unsigned char cmd)
{
unsigned char Value;
Value = spi(0x00|cmd);
//delay_ms(1);
return Value;
}
/***********************************************************************************************
* 写配置寄存器函数
* cmd : 要写入的配置寄存器
* data : 要写入的数据
* bool : 是否由本函数来使能和禁止CSn
* 返回状态字节
************************************************************************************************/
unsigned char WriteConfigReg_spi(unsigned char cmd, unsigned int data)
{
unsigned char TempH,TempL,Value;
TempH = (data >> 8);
TempL = (data & 0x00FF);
( PORTB &= ~(1 << (0 )) ) ; //使能 CSn
Value = spi(0x00|cmd);
spi(TempH);
spi(TempL);
( PORTB |= (1 << (0 )) ) ; // 禁止 CSn
//delay_ms(1);
return Value;
}
/***********************************************************************************************
* 读配置寄存器函数
* cmd : 要读的配置寄存器
* 返回配置寄存器的值
************************************************************************************************/
unsigned int ReadConfigReg_spi(unsigned char cmd)
{
unsigned char Status,ValueH,ValueL;
unsigned int Value;
( PORTB &= ~(1 << (0 )) ) ; //使能 CSn
Status = spi(0x40|cmd);
ValueH = spi(0x00);
ValueL = spi(0x00);
( PORTB |= (1 << (0 )) ) ; // 禁止 CSn
Value = ValueH ;
Value = Value<<8 ;
Value |= ValueL ;
return Value;
}
/***********************************************************************************************
* 写TXFIFO函数
* data : 要写入的数据的指针
* n : 要写入的数据的长度
************************************************************************************************/
void Write_TXFIFO(unsigned char *data,unsigned char n)
{
unsigned char i;
( PORTB &= ~(1 << (0 )) ) ;
WriteStrobeReg(0x3E );
for (i = 0; i < (n); i++)
{
spi(*data++);
}
( PORTB |= (1 << (0 )) ) ;
}
/***********************************************************************************************
* 写RAM函数
* cmd : 要写入的配置寄存器
* data[] : 要写入的数据
* n : 要写入数据的长度
* bool : 是否由本函数来使能和禁止CSn
************************************************************************************************/
void WriteRAM_spi(unsigned int cmd,unsigned char data[],unsigned char n)
{
unsigned char cmdTempH,cmdTempL,i;
cmdTempH = (0x007F & cmd);
cmdTempL = ((cmd>>1) & 0x00C0);
( PORTB &= ~(1 << (0 )) ) ; // 使能 CSn
spi(0x80|cmdTempH);
spi(0x00|cmdTempL);
for(i=0; i<n; i++)
{
spi(data[i]);
}
( PORTB |= (1 << (0 )) ) ; // 禁止 CSn
delay_ms(1);
}
/***********************************************************************************************
* 读RAM函数
* cmd : 要读的RAM区域
* 返回读出的数据
************************************************************************************************/
unsigned char ReadRAM(unsigned int cmd)
{
unsigned char cmdTempH,cmdTempL;
unsigned char Value;
cmdTempH = (0x007F & cmd);
cmdTempL = ((cmd>>1) & 0x00C0);
spi(0x80|cmdTempH);
Value = spi(0x20|cmdTempL);
delay_ms(1);
return Value;
}
/***********************************************************************************************
* 物理层初始化函数
************************************************************************************************/
void PHY_Init(void)
{
PORT_Init();
SPI_Init();
if( 0x03 == 0x01 )
USART0_Init();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -