SD3078的STM32 I2C HAL库驱动函数

包括“stm32f1xx_hal.h”

包括“stm32f1xx_hal_i2c.h”

包括“ds3231.h”

定义SD3078_Address 0x64

/ ********************************************** /

定义Chg_enable 0x82

定义Chg_disable 0

/ **********电池注册********** /

定义Chg_MG 0x18 //³äμç¹ÜÀí¼Ä'æÆ÷μØÖ·

定义Bat_H8 0x1A //μçÁ¿×î¸ßμ¼'æÆ÷μØÖ·

定义Bat_L8 0x1B //μçÁ¿μÍ°Ëλ¼Ä'æÆ÷μØÖ·

/ ************* ID注册************ /

define ID_Address 0x72 //IDºÅÆðʼμØÖ·

extern uint8_t Date [6];
extern I2C_HandleTypeDef hi2c1;

extern void SD3078_WriteDate(uint8_t * date_w);
extern void SD3078_ReadDate(void);

------------------------------------

include “sd3078.h”

void SD3078_WriteDate(uint8_t *date_w)
{
uint8_t i[8];
uint8_t j;

    i[0]=0x10; //дSD3078ʹÄÜ
    i[1]=0x80;
    HAL_I2C_Master_Transmit(&hi2c1, 0x64, i, 2, 100);
    i[0]=0x0f;
    i[1]=0xff;
    HAL_I2C_Master_Transmit(&hi2c1, 0x64, i, 2, 100);

    i[0]=0;//ÆðʼµØÖ·
    i[1]=Hex2BCD(date_w[5]);//Ãë
    i[2]=Hex2BCD(date_w[4]);//·Ö
    j=Hex2BCD(date_w[3]);//ʱ
    j^=0x80;//ͳһΪ24СʱÖÆ
    i[3]=j;
    i[4]=0x01;//ÐÇÆÚ£¬ºúÂÒŪһ¸öÀñ°ÝÒ»
    i[5]=Hex2BCD(date_w[2]);//ÈÕ
    i[6]=Hex2BCD(date_w[1]);//ÔÂ
    i[7]=Hex2BCD(date_w[0]);//Äê

    HAL_I2C_Master_Transmit(&hi2c1, 0x64, i, 8, 100);

    i[0]=0x0f; //дSD3078½ûÖ¹
    i[1]=0x7b;
    HAL_I2C_Master_Transmit(&hi2c1, 0x64, i, 2, 100);       
    i[0]=0x10;
    i[1]=0;
    HAL_I2C_Master_Transmit(&hi2c1, 0x64, i, 2, 100);               

}

void SD3078_ReadDate(void)
{
uint8_t i[7];

    HAL_I2C_Master_Receive(&hi2c1, 0x64, i, 7, 100);
    Date[0]=BCD2Hex(i[6]); //Ãë
    Date[1]=BCD2Hex(i[5]); //·Ö
    i[2]&=0x1f;
    Date[2]=BCD2Hex(i[4]); //ʱ
    Date[3]=BCD2Hex(i[2]); //ÈÕ
    Date[4]=BCD2Hex(i[1]); //ÔÂ
    Date[5]=BCD2Hex(i[0]); //Äê

}

void SD3078_ChgManage(void) //¼ì²éµç³ØµçÁ¿²¢¾ö¶¨ÊÇ·ñ³äµç£¬¿ª»úʱִÐÐ
{
uint16_t VBAT_VAL;
uint8_t i[0x20];

HAL_I2C_Master_Receive(&hi2c1, 0x64, i, 0x1c, 100);
VBAT_VAL=(i[0x1a]>>7)*256;
VBAT_VAL+=i[0x1b];

if(VBAT_VAL<=400)//СÓÚÕâ¸öÖµ£¬¾Í³äµç
{
    i[0]=0x18;
    i[1]=Chg_enable;
    HAL_I2C_Master_Transmit(&hi2c1, 0x64, i, 2, 100);
}

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值