• 大小: 5KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-25
  • 语言: 其他
  • 标签: LTC6803  

资源简介

LTC6803-SPI部分程序,希望对大家有所帮助

资源截图

代码片段和文件信息

/*****************************************************************************
 *   LTC6803.c:  SPI Files for LTC6803-3 IC
 *   Copyright(C) 2012 Dongling Tech
 *   All rights reserved.
**--------------File Info-----------------------------------------------------
** File name:           LTC6803.c
** Last modified Date:  2012-03-15
** Last Version:        V1.0
** Descriptions:        LTC3803 initialread voltage temp and other infomations.  
**---------------------------------------------------------------------------*/
#include “LPC11xx.h“   //调用LPC11C14外设头文件
#include “Main_User.h“              //主程序中用户头文件引用
#include “LTC6803CMD.h“   //调用LTC6803寄存器定义头文件
#include “LTC6803User.h“      //调用LTC6803用户定义头文件
void  LTC6803Init(void)   //对LTC6803的初始化设置
{
uint8_t i;
uint8_t ErrCRC_TempCheck[6]={0};
uint16_t MCxI_Temp;  

CFGR[0]=Ltc6803_CFGR0; //关看门狗
CFGR[1]=DHGSwitch8_1;       //放电开关
CFGR[2]=DHGSwitch9_12&0x0F; //使能中断对于所有的电池(低四位)
CFGR[2]|=MCxI_Cfg1_4&0xF0;    //使能中断对于所有的电池(高四位)
CFGR[3]=MCxI_Cfg5_12;
CFGR[4]=Under_Voltage;
CFGR[5]=Over_Voltage;

//根据配置计算有效电池节数
MCxI_Temp=CFGR[3];      //MCxI高8位
MCxI_Temp<<=4;
MCxI_Temp|=(CFGR[2]&0xF0)>>4;  //MCxI低4位
MCxI_CellNumb=0;
for(i=0;i<12;i++)
{
 if((MCxI_Temp&0x0001)==0) 
 {
  MCxI_CellNumb++;      //有效电池节数计数
MCxI_Temp>>=1;        //MCxI缓存单元右移位
 }
}
//配置寄存器的初始化
LTC6803CS_LOW;      //LTC6803片选信号置低
SpiWrite(WRCFG);    //Write configuration
Delay_us(2);                     //延时2us子程序     
SpiWrite(WRCFG_CRC);    //Write CRC 
Delay_us(2);                     //延时2us子程序   
for(i=0;i<6;i++)
{
SpiWrite(CFGR[i]);   
}
  CRC_Temp=CRC8(CFGR6);            //计算CFGR单元的CRC码
SpiWrite(CRC_Temp);               //写CRC校验字节
Delay_us(2);                     //延时2us子程序     
LTC6803CS_HIGH;              //LTC6803片选信号置高
Delay_us(500);                    //延时0.1ms子程序         
//读取LTC6803寄存器配置数据是否正确
LTC6803CS_LOW;           //LTC6803片选信号置低
SpiWrite(RDCFG);
Delay_us(2);                     //延时5us子程序     
SpiWrite(RDCFG_CRC);              //Write CRC  
Delay_us(2);                     //延时5us子程序   
for(Err=0;Err<6;Err++)      //读取写入的寄存器值
{
Check[Err]=SpiRead();
if((Err>0)&&(Check[Err]!=CFGR[Err]))  //读的不对就重新读
{
Err=0;
break;
}
}
LTC6803CS_HIGH;              //LTC6803片选信号置高
if(CFGR[1]||(CFGR[2]&0x0F)!=0)
LPC_GPIO2->DATA &= ~(1ul<<8);   //p2.8置低放电开关指示灯亮   
if(Err!=0)
LTC6803_Ini_OK=1;      //LTC6803初始化成功
else
LTC6803_Ini_OK=0;      //LTC6803初始化失败
}

//================================================================
//函数功能:片内SPI接口操作
//filename:SpiWrite()
//input:char 读操作,输入参数0
//output:none
//================================================================
void SpiWrite(uint8_t  byte)
{
uint8_t i;
LTC6803_WRBUF=byte; //Put function‘s parameter into a bdata variable
LTC6803CLK_LOW; //

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      14416  2012-06-12 09:25  LTC6803.c

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

                14416                    1


评论

共有 条评论