资源简介
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
评论
共有 条评论