資源簡介
基于一個單節電池電量計CW2015的單片機程序,不用學習自動測量電量。

代碼片段和文件信息
#include?“Cellwise?CW201x?Driver?for?MCU.h“
bit?CHARGE?=?0;?//是否接充電器標志位,1為接充電器,0為拔出充電器
bit?no_charger_full_jump?=0;
unsigned?int?allow_no_charger_full?=0;
unsigned?int?allow_charger_always_zero?=0;
unsigned?char?if_quickstart?=0;
unsigned?char?reset_loop?=0;
/*定義一個全局變量,外部文件要使用時請先include?Cellwise?CW201x?Driver?for?MCU.h文件,再用extern聲明cw_bat*/
STRUCT_CW_BATTERY???cw_bat;
////////////////////////////////////////////////////////////////////////////////////
////global?function:?‘cw_bat_work()‘??and??‘cw_bat_init()‘??????????????????????////
////‘cw_bat_work()‘need?be?called?by?main.c?in?every?second?????????????????????////
////‘cw_bat_init()‘need?be?called?by?main.c?in?system-init?after?power?on?reset?////
////////////////////////////////////////////////////////////////////////////////////
//void?delay_us(unsigned?char?us);
bit?cw_read(unsigned?char?PointRegunsigned?char?*pData);
bit?cw_write(unsigned?char?PointRegunsigned?char?*pData);
/**********************************************************************************/
/***************CW_Delay10ms()?與?CW_Delay10us()?函數是我根據51單******************/
/***************片機特性寫的延遲函數,請根據自己的平臺自行替換*********************/
/**********************************************************************************/
void?CW_Delay10ms(unsigned?int?c)?
{
????unsigned?char?a?b;
//--c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了--//
????for?(;c>0;c--)
{
for?(b=38;b>0;b--)
{
for?(a=130;a>0;a--);
}??????????
}???????
}
void?CW_Delay10us(unsigned?char?us)
{
unsigned?char?a?b;
unsigned?char?i;
for(i?=?0;?i? for(b=1;?b>0;?b--)
{
for(a=2;?a>0;?a--);
}
}
}
/*這個函數的作用是更新ic內的電池profile信息,一般只有在ic?VDD掉電后再上電時才執行?
return?1?:?i2c讀寫錯,?return?2?:?芯片處于sleep模式?return?3?:?寫入的profile信息讀出后與代碼中的不一致*/
unsigned?char?cw_update_config_info(void)
{
bit?ret?=?0;
unsigned?char?i;
unsigned?char?reset_val;
unsigned?char?reg_val;
/*?make?sure?no?in?sleep?mode?*/
ret?=?cw_read(REG_MODE?®_val);
if(ret)
{
return?1;
}
if((reg_val?&?MODE_SLEEP_MASK)?==?MODE_SLEEP)
{
return?2;
}
/*?update?new?battery?info?*/
for(i?=?0;?i? {
reg_val?=?cw_bat_config_info[i];
ret?=?cw_write(REG_BATINFO+i?®_val);
if(ret)
{
return?1;
}
}
/*?readback?&?check?*/
for(i?=?0;?i? {
ret?=?cw_read(REG_BATINFO+i?®_val);
if(ret)
{
return?1;
}
if(reg_val?!=?cw_bat_config_info[i])
{
return?3;
}
}
/*?set?cw2015/cw2013?to?use?new?battery?info?*/
ret?=?cw_read(REG_CONFIG?®_val);
if(ret)
{
return?1;
}
reg_val?|=?CONFIG_UPDATE_FLG;???/*?set?UPDATE_FLAG?*/
reg_val?&=?0x07;????????????????/*?clear?ATHD?*/
reg_val?|=?ATHD;????????????????/*?set?ATHD?*/
ret?=?cw_write(REG_CONFIG?®_val);
if(ret)
{
return?1;
}
/*?reset?*/
reset_val?=?MODE_NORMAL;
reg_val?=?MODE_RESTART;
ret?=?cw_write(REG_MODE?®_val);
if(ret)
{
return?1;
}
CW_Delay10us(10);??//delay?100us??????
ret?=?cw_write(REG_MODE?&reset_val);
if
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????12828??2016-09-07?19:19??CW2015_MCU_DRIVER_V2.0\Cellwise?CW201x?Driver?for?MCU?V2.0.c
?????文件???????1913??2016-09-07?19:19??CW2015_MCU_DRIVER_V2.0\Cellwise?CW201x?Driver?for?MCU.h
?????文件???????1769??2016-09-07?19:19??CW2015_MCU_DRIVER_V2.0\Cw2015_test.c
?????文件???????4878??2016-09-07?17:09??CW2015_MCU_DRIVER_V2.0\DriverIIC_Sample.c
?????文件????????310??2016-09-07?19:17??CW2015_MCU_DRIVER_V2.0\ReadMe.txt
?????目錄??????????0??2016-09-07?19:21??CW2015_MCU_DRIVER_V2.0
-----------?---------??----------?-----??----
????????????????21698????????????????????6
評論
共有 條評論