⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac.i

📁 ATmega128L+CC2420的单片机源程序
💻 I
📖 第 1 页 / 共 3 页
字号:
 **************************                     函数声明                      **************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
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 + -