• 大小: 42KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: 其他
  • 标签: 电表  能耗  三相  

资源简介

锐能微电能计量芯片,damo例程。三相计量芯片RN7302。

资源截图

代码片段和文件信息

#include “RN7302_Demo.h“


__no_init   sDl645StruDataComm_TypeDef          Dl645RN7302DataComm;
__no_init   sDl645FrontTmp_TypeDef              Dl645FrontTmp;
__no_init   sDl645Front_TypeDef                 Dl645Front;
__no_init   sDl645Eg_TypeDef                    Dl645Eg;
__no_init   sDl645FirmParaFile_TypeDef          Dl645FirmPara;
            
//底层函数
u8 fnSpi2_ReadByte(void)
{
    u8 itemp=0;
    for(i=0;i<8;i++)
    {
     temp<<=1;
     PinWrite_ADSCLK(1);
     PinWrite_ADSCLK(1);
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
     PinWrite_ADSCLK(0);
     PinWrite_ADSCLK(0);
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
     if (PinRead_ADSDI()){temp=temp+0x1;}
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
    }
    return temp;
}
//////////////////////////////////////////////////////////////////////////


void fnSpi2_WriteByte(u8 Dat)
{
    u8 i;

    for(i=0;i<8;i++)
    {
     PinWrite_ADSCLK(1);
     PinWrite_ADSCLK(1);
     fnDelay2us();
     fnDelay2us();
     if(Dat & 0x80)
     {
     PinWrite_ADSDO(1);
     PinWrite_ADSDO(1);
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
     }
     else
     {
     PinWrite_ADSDO(0);
     PinWrite_ADSDO(0);
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
     }
     PinWrite_ADSCLK(0);
     PinWrite_ADSCLK(0);
     fnDelay2us();
     fnDelay2us();
     fnDelay2us();
     Dat <<= 1;
    }
    PinWrite_ADSDO(1);
    PinWrite_ADSDO(1);
    fnDelay2us();
    fnDelay2us();
    fnDelay2us();
}

//存储器写入函数
ErrorStatus fnMemory_Write(u32 Dst  u8 *Src  u32 DatLen)
{
    ErrorStatus err;

    if( (FM24C_START_ADDR <= Dst) && 
     ( (Dst + DatLen) < (FM24C_START_ADDR + FM24C_SIZE) ) )
    {
     #if  !DL645SOFT_DEBUG
     err = fnFM24CXX_Write(Dst- FM24C_START_ADDR  Src   DatLen  3);
     if(err==ERROR) Dl645Bkgrd.PubData.EventErr[5]=BKGRD_EVENTERR_INTERMEMORY;
     else Dl645Bkgrd.PubData.EventErr[5]=BKGRD_EVENTERR_OK;
     #endif
    }

    else if( (AT45DB_START_ADDR <= Dst) && 
     ( (Dst + DatLen) < (AT45DB_START_ADDR + AT45DB_SIZE) ) )
    {
     #if  !DL645SOFT_DEBUG
     err = fnAT45DBXX_Write( Dst - AT45DB_START_ADDR  Src  DatLen  3);
     if(err==ERROR) Dl645Bkgrd.PubData.EventErr[5]=BKGRD_EVENTERR_INTERMEMORY;
     else Dl645Bkgrd.PubData.EventErr[5]=BKGRD_EVENTERR_OK;
     #endif
    }

    else
    {
     err = ERROR;
     Dl645Bkgrd.PubData.EventErr[5]=BKGRD_EVENTERR_INTERMEMORY;
    }

    return(err);
}
//存储器读取函数
ErrorStatus fnMemory_Read(u8 *Dst  u32 Src  u32 DatLen)
{
    ErrorStatus err;
    if( (FM24C_START_ADDR <= Src) && 
     ( (Src + DatLen) < (FM24C_START_ADDR + FM24C_SIZE) ) )
    {
     #if  !DL645SOFT_DEBUG
     err = fnFM24CXX_Read(Dst  Src - FM24C_START_ADDR  DatLen  3);
     if(err==ERROR) Dl645Bkgrd.PubData.EventErr[5]=BKGRD_EVENTERR

评论

共有 条评论