資源簡介
銳能微電能計量芯片,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
- 上一篇:微信小程序云開發-數據庫添加分頁列表刪除
- 下一篇:Proteus 時鐘顯示仿真
評論
共有 條評論