📄 mac.i
字号:
************************** 函数声明 **************************
*******************************************************************************************************/
//-------------------------------------------------------------------------------------------------------
void CC2420_Init();
unsigned char CC2420_SendPacket(CC2420_TX_INFO *pRTI,unsigned char AddrFormat);
void CC2420_SetChannel(unsigned char channel_temp);
void CC2420_SetPanId(unsigned int PanId);
void CC2420_SetShortAddress(unsigned int ShortAddress);
unsigned char* CC2420_ReadIEEEAddr(void);
void CC2420_SetIEEEAddr(void);
void CC2420_ReceiveOn(void);
void CC2420_ReceiveOff(void);
void MAC_Init(void);
void mac_pRxBuffer_Clear(void);
void mac_pTxBuffer_Clear(void);
//-------------------------------------------------------------------------------------------------------
/******************************************************************************************************
************************** 函数声明 **************************
*******************************************************************************************************/
//-------------------------------------------------------------------------------------------------------
unsigned char WriteStrobeReg_spi(unsigned char cmd);
unsigned char WriteStrobeReg(unsigned char cmd);
unsigned char WriteConfigReg_spi(unsigned char cmd, unsigned int data);
unsigned int ReadConfigReg_spi(unsigned char cmd);
void Write_TXFIFO(unsigned char *data,unsigned char n);
void WriteRAM_spi(unsigned int cmd,unsigned char data[],unsigned char n);
unsigned char ReadRAM(unsigned int cmd);
void PHY_Init(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;
/*******************************************************************************************************
*******************************************************************************************************
************************** Global macros **************************
*******************************************************************************************************
*******************************************************************************************************/
/*******************************************************************************************************
*******************************************************************************************************
************************** 定义 Mega128L 寄存器位 ************************
*******************************************************************************************************
*******************************************************************************************************/
//------------------------------------------------------------------------------------------------------
//SPI--->SPCR
//SPI--->SPSR
//------------------------------------------------------------------------------------------------------
/*******************************************************************************************************
*******************************************************************************************************
************************** ATmega128L I/O PORTS **************************
*******************************************************************************************************
*******************************************************************************************************/
//------------------------------------------------------------------------------------------------------
// Port B
// Port D
//#define UART1_RXD 2 // PD.2 - Input: UART1 RXD
//#define UART1_TXD 3 // PD.3 - Output: UART1 TXD
//#define UART1_CTS 7 // PD.7 - Input: UART HW handshaking: CTS
// Port E
// Enables/disables the SPI interface
//------------------------------------------------------------------------------------------------------
/******************************************************************************************************
*******************************************************************************************************
************************** CC2420 PIN ACCESS **************************
*******************************************************************************************************
*******************************************************************************************************/
//-------------------------------------------------------------------------------------------------------
// Pin status
// CC2420 voltage regulator enable pin
// The CC2420 reset pin
//-------------------------------------------------------------------------------------------------------
/*******************************************************************************************************
*******************************************************************************************************
************************** SERIAL PORTS **************************
*******************************************************************************************************
*******************************************************************************************************/
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
/*******************************************************************************************************
*******************************************************************************************************
************************** 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);
//------------------------------------------------------------------------------------------------------
// 下面两个要设置成一样大
//#define I_Am_What COORDINATOR
//#define I_Am_What ROUTER
// The RF settings structure is declared here, since we'll always need halRfInit()
volatile CC2420_SETTINGS rfSettings;
// Basic RF transmission and reception structures
CC2420_RX_INFO rfRxInfo;
CC2420_TX_INFO rfTxInfo;
unsigned char pTxBuffer[(127 - ((2 + 1 + 2 + 2 + 2) + (2)))];
unsigned char pRxBuffer[(127 - ((2 + 1 + 2 + 2 + 2) + (2)))];
unsigned char flag_ReceiveComplete;
/***********************************************************************************************
* 设置信道函数
* channel_temp 取值11~26
************************************************************************************************/
void CC2420_SetChannel(unsigned char channel_temp)
{
WriteConfigReg_spi(0x18 ,(0x4165 | 357+5*(unsigned int)(channel_temp-11)));
}
/***********************************************************************************************
* 设置PANid函数
* PanId_temp
************************************************************************************************/
void CC2420_SetPanId(unsigned int PanId_temp)
{
unsigned char PanIdtemp[2];
PanIdtemp[1] = (PanId_temp >> 8);
PanIdtemp[0] = (PanId_temp & 0x00FF);
WriteRAM_spi(0x168 ,PanIdtemp,2);
}
/***********************************************************************************************
* 设置ShortAddress函数
* ShortAddress
************************************************************************************************/
void CC2420_SetShortAddress(unsigned int ShortAddress)
{
unsigned char ShortAddresstemp[2];
ShortAddresstemp[1] = (ShortAddress >> 8);
ShortAddresstemp[0] = (ShortAddress & 0x00FF);
WriteRAM_spi(0x16A ,ShortAddresstemp,2);
}
/***********************************************************************************************
* 设置IEEEAddress函数
************************************************************************************************/
void CC2420_SetIEEEAddr(void)
{
unsigned char IEEE[8]={0x55,0x01,0x55,0x02,0x55,0x03,0x55,0x14 };
IEEE[7] = PINC;
WriteRAM_spi(0x160,IEEE,8);
}
/***********************************************************************************************
* 读取CC2420的64bit IEEE地址函数
* 返回一个指向IEEE地址的指针
************************************************************************************************/
unsigned char* CC2420_ReadIEEEAddr(void)
{
unsigned char i;
unsigned char IEEE[8];
( PORTB &= ~(1 << (0 )) ) ; // 使能 CSn
ReadRAM(0x160);
for(i=0;i<8;i++)
{
IEEE[i]=spi(0x00);
}
( PORTB |= (1 << (0 )) ) ;
return IEEE;
}
/***********************************************************************************************
* 打开接收函数
************************************************************************************************/
void CC2420_ReceiveOn(void)
{
unsigned char i;
rfSettings.receiveOn = 1;
i=WriteStrobeReg_spi(0x03 );
i=WriteStrobeReg_spi(0x08 );
i=WriteStrobeReg_spi(0x08 );
do {(*(unsigned char *) 0x6a) |= 0x03; do {EIFR = (1 << (0 )); } while(0); } while (0) ;
do {EIMSK |= (1 << (0 )); } while(0) ;
}
/***********************************************************************************************
* 关闭接收函数
************************************************************************************************/
void CC2420_ReceiveOff(void)
{
unsigned char i;
rfSettings.receiveOn = 0;
i=WriteStrobeReg_spi(0x06 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -