#include "DR8112.h"
void DR8112_Write(uint8_t ADDR,uint8_t Data,uint8_t *Rxdata)
{
//设置最高位为0 次高位为0
uint8_t WData[2]={0X3F,0X00};
//将地址赋值给高8位
WData[0]&=ADDR<<1;
//将数据赋值给低8位
WData[1]=Data;
//写数据
Lpspi_Read(2,WData,Rxdata);
}
void DR8112_Read(uint8_t ADDR,uint8_t *Rxdata)
{
//设置最高位为0 次高位为1
uint8_t WData[2]={0X40,0X00};
//将地址赋值给高8位
WData[0]|=ADDR<<1;
Lpspi_Read(2,WData,Rxdata);
}
//获取Fault Status状态
void DR8112_Get_FaultSatus(uint8_t *Rxdata)
{
DR8112_Read(FAULT_Status,Rxdata);
}
//获取DIAG_Status状态
void DR8112_Get_DIAGStatus(uint8_t *Rxdata)
{
DR8112_Read(DIAG_Status,Rxdata);
}
// 对DR8112完成基本配置
void DR8112_Init(DR8112_InitTypeDef* Config)
{
uint8_t Wdata=0x00;
uint8_t Rdata[3];
// //读取IC3配置
// DR8112_Read(IC3_Control,Rdata);
// Rdata[1]=Rdata[1]&0X8F+0X40;
// // 写入IC3配置 并且解锁LOCK
// DR8112_Write(IC3_Control,Rdata[1],Rdata);
Wdata|=(Config->TOFF)<<6|(Config->SPI_IN)<<5|(Config->SR)<<2|(Config->MODE);
DR8112_Write(IC1_Control,Wdata,Rdata);
Wdata=0x00;
Wdata|=(Config->ITRIP_REP)<<7|(Config->TSD_MODE)<<6|
(Config->OTW_REP)<<5|(Config->DIS_CPUV)<<4|(Config->OCP_TRETRY)<<2|(Config->OCP_MODE);
DR8112_Write(IC2_Control,Wdata,Rdata);
DR8112_Read(IC3_Control,Rdata);
Wdata=0x00;
Wdata|=Rdata[1]|(Config->OUT1_DIS)<<3|(Config->OUT2_DIS)<<2;
DR8112_Write(IC3_Control,Wdata,Rdata);
Wdata=0x00;
Wdata|=(Config->OLP_DLY)<<5|(Config->EN_OLA)<<4|(Config->ITRIP_LVL)<<2|(Config->DIS_ITRIP);
DR8112_Write(IC4_Control,Wdata,Rdata);
}
//清Fault 并且回读
//返回值 B15-B8 STATUS
//返回值 B7-B0 REPORT
void DR8112_CLR_Fault(uint8_t *Rxdata)
{
uint8_t Wdata=0x00;
uint8_t Rdata[3];
//读取IC3配置
DR8112_Read(IC3_Control,Rdata);
Rdata[1]=Rdata[1]+0X80;
// 写入IC3 并且清Fault
DR8112_Write(IC3_Control,Rdata[1],Rxdata);
}
//通过Data直接控制最后两位
//需要通过 void DR8112_Init(DR8112_InitTypeDef* Config) 先配置SPI-IN设置为Soft_IN
//[1:0] =IN1:IN2
void DR8112_SPI_INx(uint8_t Data,uint8_t *Rxdata)
{
uint8_t Wdata=0x00;
uint8_t Rdata[3];
//读取IC3配置
DR8112_Read(IC3_Control,Rdata);
Rdata[1]=Rdata[1]&0XFC;
Rdata[1]+=Data;
Rdata[0]=0x30;
// 写入IC3 并且设置INx高或者低
DR8112_Write(IC3_Control,Rdata[1],Rxdata);
}
void DR8112_deafult_Config(uint8_t *Rxdata)
{
uint8_t Data[4]={0x51,0x0c,0x40,0x08};
DR8112_Write(IC1_Control,Data[0],Rxdata);
DR8112_Write(IC1_Control,Data[1],Rxdata);
DR8112_Write(IC1_Control,Data[2],Rxdata);
DR8112_Write(IC1_Control,Data[3],Rxdata);
}
类比半导体DR8112驱动程序
需积分: 0 126 浏览量
2024-03-21
09:41:01
上传
评论
收藏 2KB ZIP 举报
许同
- 粉丝: 563
- 资源: 21