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

📄 phy.c

📁 小弟的毕业设计(ATmega128L+CC2420组建星形网络)的单片机程序
💻 C
字号:
#include <mega128.h>
#include <spi.h>
#include <delay.h>
#include "phy.h" 
#include "CC2420.h"
#include "mcu.h"
#include "compiler.h"
#include "config.h"


/***********************************************************************************************
* 写命令选通寄存器函数
* cmd : 要写入的命令选通寄存器
* bool : 是否由本函数来使能和禁止CSn
* 返回状态字节
************************************************************************************************/
unsigned char WriteStrobeReg_spi(unsigned char cmd)
{
    unsigned char Value;
    SPI_ENABLE();   //使能 CSn                    
    Value = spi(0x00|cmd);
    SPI_DISABLE();  // 禁止 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);

    SPI_ENABLE();   //使能 CSn                    
    Value = spi(0x00|cmd);
    spi(TempH);
    spi(TempL);   
    SPI_DISABLE();  // 禁止 CSn 

    //delay_ms(1);
    return Value;
} 



/***********************************************************************************************
* 读配置寄存器函数
* cmd : 要读的配置寄存器
* 返回配置寄存器的值
************************************************************************************************/
unsigned int ReadConfigReg_spi(unsigned char cmd)
{
    unsigned char Status,ValueH,ValueL;
    unsigned int  Value;
    
    SPI_ENABLE();   //使能 CSn      
    Status = spi(0x40|cmd); 
    ValueH = spi(0x00); 
    ValueL = spi(0x00);
    SPI_DISABLE();  // 禁止 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;
    
    SPI_ENABLE();
    WriteStrobeReg(CC2420_TXFIFO);
    for (i = 0; i < (n); i++) 
    {
        spi(*data++);
    }
    SPI_DISABLE();
}



/***********************************************************************************************
* 写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);

    SPI_ENABLE();   // 使能 CSn                    
    spi(0x80|cmdTempH);
    spi(0x00|cmdTempL);
    for(i=0; i<n; i++)
    {   
        spi(data[i]);
    }  
    SPI_DISABLE();  // 禁止 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( I_Am_What == COORDINATOR )
        USART0_Init();
}
    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -