ldc1314芯片工作原理、引脚参数及其应用例程详解
电感器-数字转换器LDC1314是电子技术工作人员常常会触碰的集成ic,LDC1314是4-安全通道12位的电感器-数字转换器(LDC),用以处理电感器检验难题。选用好几个无线信道和遥感技术的适用,LDC1314以最少的费用与最低的功能损耗来得到 电感器传感的性能指标和稳定性。该类商品运用简单,仅必须感应器頻率处在 1kHz 至 10MHz 的范畴内就可以开始工作。 因为适用的感应器工作频率范畴 1kHz 至 10MHz 较宽,因而还适用应用特别小的 PCB 电磁线圈,进而进一步减少传感解决方法的费用和规格。
ldc1314原理
电导体在与交替变化电磁感应(EM)场触碰时将造成电磁场转变 ,能够选用感应器中的电感器感应器实现检验。一个电感与一个电力电容器能够结构一个L-C震荡器,能够用于造成磁场。在一个LC振荡器中,当磁场接到影响时,能够观测到电感器产生细微的偏位,与固有频率存有一定关联。
运用这一基本原理,在LDC1314是一个电感器-数字转换器(LDC),根据精确测量LC谐振器的振动頻率。该元器件輸出数据值与震荡頻率成占比关联。此頻率精确测量值能够被转换成为一个等效电路电感器。
LDC1314状态参数
*达标的车辆运用
*合乎AEC-Q100的效果以下:
-机器设备溫度级别1:- 40°C至125°C自然环境操作温度范畴
-机器设备HBM的ESD等级划分2
-设备CDM ESD归类级别C
*便于应用的推荐配置规定
*精确测量高达4个感应器与一个集成电路芯片
*多种渠道适用自然环境和人口老龄化赔偿
*多路遥感技术给予最少系统软件成本费
*脚位兼容的物质和高像素选择项
-LDC1312-Q1/LDC1314-Q1: 2/4-ch 12-bit LDC
-LDC1612-Q1/LDC1614-Q1: 2/4-ch 28-bit LDC
*适用普遍的感应器工作频率范畴10MHz 1KHz
*35μ功耗低的睡眠模式 -200钠关闭方式 *3.3V的实际操作
*适用內部或外界参照数字时钟 *对直流电电磁场和磁石的免疫力
ldc1314脚位图
ldc1314脚位界定
表明:DAP不可以做地应用,能够悬在空中,为取得最好特性对DAP应联接到一样的电位差做为机器设备的GND引脚。
编写强烈推荐:LDC1314汉语指南
典型性ldc1314运用电源电路一:
典型性ldc1314运用电源电路二:
系统软件以MSP430F169单片机设计为操纵关键,选用充电电池锂电为开关电源,以L298N为推动集成ic,融合PWM技术性完成对4个直流电减速器速率操纵,进而完成小轿车的前行、转为等作用。在本体系中,单片机设计根据LDC1314集成ic完成对跑道表层铁丝和银币的鉴别与小轿车部位的判断,运用电动机尾端的霍尔元件与伺服电机完成对小轿车行驶路途的测算,并应用LCD12864液晶即时表明小轿车行驶路途与使用時间。
电机驱动器集成icL298N电路原理图以下
源程序
void main( void )
{
P2SEL &=~ BIT7; //无源蜂鸣器
P2DIR |= BIT7;
P2OUT &=~ BIT7;
InitSys();
InitLDC1314();
Ini_Lcd();
P6SEL=0;P6DIR|=BIT0 BIT1;P6OUT&=~(BIT0 BIT1); //电动机转动方位
_EINT();
int i;
InitPWM(0x03E8); //PWM复位,选用TB輸出2路PWM波
TBCCR1=TBCCR2=0;
for(i=0;i《1500;i ) // 电感传感器自校准
{
D1=LDC1314_Result(1);
D2=LDC1314_Result(2);
D3=LDC1314_Result(3);
}
initTA(); // 定时器A初始化,用于计时
go(); //直行
TIme=mc=sx=0; //开始执行 时间路程清零
while(1)
{
Component_Display(4,0,TIme);//时间
sl=(int)((float)sx*3.0);
Component_Display(4,4,sl); //路程
if(sl》800){while(1);_DINT();TBCCR1=TBCCR2=0;} //抵达终点站 完毕
value1 = LDC1314_Result(1); Component_Display(1,1,value1);//表明安全通道1
value2 = LDC1314_Result(2); Component_Display(2,1,value2);
value3 = LDC1314_Result(3); Component_Display(3,1,value3);//表明
// 钱币的检验
if ((value1》(2 D1))|| (value2》(2 D2))|| (value3》(2 D3)) || (abs(value2-D2)》20)|| (abs(value1-D1)》20)|| (abs(value3-D3)》20))
P2OUT |=BIT7;
else
P2OUT &=~BIT7;
//寻迹
if((abs(value3-D3)《20)&&(D3》value3)) { turn_r(); }
else if((abs(value1-D1)《20)&&(D1》value1)) { turn_l(); }
else go();
}
}
ldc1314方法
ldc1314方法一:
MSP430F149/169推动LDC1314程序流程,可用作金属材料的检验,已得出每个文件目录,建造工程项目加上资料就可以应用。表明程序流程比较广泛,未得出。
MAIN.C文档
#include 《msp430f169.h》
#include “config.h”
#include “12864.h”
extern uint LDC1314_Result(uchar Channal);
extern void InitLDC1314(void);
/***************************************************
系统软件复位,MCLK=8MHz,SMCLK=1MHz
*************************************************/
void InitSys()
{
unsigned int iq0;
_DINT(); // 关终断,本能够无须那样当心
WDTCTL = WDTPW WDTHOLD;
BCSCTL1 &=~XT2OFF;
do
{
IFG1 &= ~OFIFG; // 消除震荡器无效标示
for (iq0 = 0xFF; iq0 》 0; iq0--); // 延迟,等候XT2起振
}
while ((IFG1 & OFIFG) != 0); // 分辨XT2是不是起振
BCSCTL2 =SELM_2 SELS DIVS_3; //MCLK,SMCLK数字时钟为XT2,SMCLK8分音器1MHz
}
void main( void )
{
uint value = 0;
InitSys();
InitLDC1314();
Ini_Lcd();
Component_Display(4,0,134);//表明
while(1)
{
value = LDC1314_Result(0);//安全通道0
Component_Display(1,0,value);//表明
delay_ms(200);
}
_NOP();
}
LDC1314.C文档
#include “LDC1314.h”
/*I2C总线复位*/
void I2C_Init()
{
LDC_SCL_L(); //拉低时钟线
delay_us(5); //延迟
I2C_Stop();
}
//**************************************
//I2C起始信号
//**************************************
void I2C_Start()
{
LDC_SCL_OUT(); // SCL设定为輸出
LDC_SDA_OUT(); // SDA设定为輸出
LDC_SDA_H(); //拉升手机充电线
LDC_SCL_H(); //拉升数字时钟线
delay_us(5); //延迟
LDC_SDA_L(); //造成降低沿
delay_us(5); //延迟
LDC_SCL_L(); //拉低时钟线
}
//**************************************
//I2C终止数据信号
//**************************************
void I2C_Stop()
{
LDC_SCL_OUT(); // SCL设定为輸出
LDC_SDA_OUT(); // SDA设定为輸出
LDC_SDA_L(); //降低手机充电线
LDC_SDA_H(); //造成上升沿
delay_us(5); //延迟
}
//**************************************
//I2C推送回复数据信号
//通道主要参数:ack (0:ACK 1:NAK)
//**************************************
void I2C_SendACK(uchar ack)
{
if(ack)
LDC_SDA_H();
else
LDC_SDA_L();
// SDA = ack; //写回复数据信号
LDC_SCL_H(); //拉升数字时钟线
delay_us(5); //延迟
LDC_SCL_L(); //拉低时钟线
delay_us(5); //延迟
}
//**************************************
//I2C接受回复数据信号,0合理,1失效
//**************************************
uchar I2C_RecvACK()
{
uchar cy;
LDC_SCL_OUT(); // SCL设定为輸出
LDC_SCL_H(); //拉升数字时钟线
delay_us(5); //延迟
if(LDC_SDA_DAT())
{
cy=1;
}
else
{
cy=0;
}
// cy = SDA; //读回复数据信号
LDC_SCL_L(); //拉低时钟线
delay_us(5); //延迟
LDC_SDA_OUT(); // SDA设定为輸出
return cy;
}
/*向I2C总线推送一个字节数据信息*/
uchar I2C_SendByte(uchar dat)
{
uchar i,temp;
LDC_SCL_OUT(); // SCL设定为輸出
LDC_SDA_OUT(); // SDA设定为輸出
for (i=0; i《8; i ) //8位电子计数器
{
if((dat《《i))
{
LDC_SDA_H();
}
else
{
LDC_SDA_L();
}
LDC_SCL_H(); //拉升数字时钟线
delay_us(5); //延迟
LDC_SCL_L(); //拉低时钟线
delay_us(5); //延迟
}
temp=I2C_RecvACK();
return temp;
}
/*从I2C总线接受一个字节数据信息*/
uchar I2C_RecvByte()
{
uchar i;
uchar dat = 0,cy;
LDC_SCL_OUT(); // SCL设定为輸出
LDC_SDA_OUT(); // SDA设定为輸出
LDC_SDA_H(); //也就能內部下拉,提前准备获取数据,
LDC_SDA_IN(); // SDA设定为键入,提前准备向服务器键入数据信息
for (i=0; i《8; i ) //8位电子计数器
{
dat 《《= 1;
LDC_SCL_H(); //拉升数字时钟线
delay_us(5); //延迟
if(LDC_SDA_DAT())
{
cy=1;
}
else
{
cy=0;
}
dat |= cy; //读取数据
LDC_SCL_L(); //拉低时钟线
delay_us(5); //延迟
}
LDC_SDA_OUT();
return dat;
}
/*向I2C机器设备载入一个字节数据信息*/
/*
void ByteWrite1314(uchar REG_Address,uchar REG_data)
{
I2C_Start(); //起始信号
I2C_SendByte(SlaveAddress); //推送机器设备详细地址 写数据信号
I2C_SendByte(REG_Address); //內部寄存器地址,
I2C_SendByte(REG_data); //內部存储器数据信息,
I2C_Stop(); //推送暂停数据信号
}
*/
//**************************************
//从I2C机器设备载入一个字节数据信息
//**************************************
/*
uchar ByteRead1314(uchar REG_Address)
{
uchar REG_data;
I2C_Start(); //起始信号
I2C_SendByte(SlaveAddress); //推送机器设备详细地址 写数据信号
I2C_SendByte(REG_Address); //推送数据存储器详细地址,从0开始
I2C_Start(); //起始信号
I2C_SendByte(SlaveAddress 1); //推送机器设备详细地址 读信号
REG_data=I2C_RecvByte(); //读取存储器数据信息
I2C_SendACK(1); //接受回复数据信号
I2C_Stop(); //终止数据信号
return REG_data;
}
*/
//**************************************
//向I2C机器设备载入一个字数据信息
//**************************************
void WordWrite1314(uchar REG_Address,uint REG_data)
{
uchar REG_data_H,REG_data_L;
REG_data_L=(uchar)(REG_data&0xFF);
REG_data_H=(uchar)((REG_data&0xFF00)》》8);
I2C_Start(); //起始信号
I2C_SendByte(SlaveAddress); //推送机器设备详细地址 写数据信号
I2C_SendByte(REG_Address); //內部寄存器地址
I2C_SendByte(REG_data_H); //推送內部存储器数据信息,高8位
I2C_SendByte(REG_data_L); //推送內部存储器数据信息,低8位
I2C_Stop(); //推送暂停数据信号
}
/*从I2C机器设备载入一个字数据信息*/
uint WordRead1314(uchar REG_Address)
{
uint REG_data;
uchar REG_data_H,REG_data_L;
I2C_Start(); //起始信号
I2C_SendByte(SlaveAddress); //推送机器设备详细地址 写数据信号
I2C_SendByte(REG_Address); //推送数据存储器详细地址,从0开始
I2C_Start(); //起始信号,??缘故未知
I2C_SendByte(SlaveAddress 1); //推送机器设备详细地址 读信号
REG_data_H=I2C_RecvByte(); //读取存储器数据信息
I2C_SendACK(0); //接受回复数据信号
REG_data_L=I2C_RecvByte(); //读取存储器数据信息
I2C_SendACK(1); //接受回复非数据信号
I2C_Stop(); //推送暂停数据信号
REG_data=REG_data_H;
REG_data《《=8;
REG_data|=REG_data_L;
return REG_data;
}
/*复位LDC1314*/
void InitLDC1314(void)
{
I2C_Init();
while(WordRead1314(DEVICE_ID)!=0x3025);//等候,I2C一切正常
//WordWrite1314(RESET_DEV,0x8800);
/*重新启动LDC1314*/
WordWrite1314(CONFIG,0x2451);
/*初始值,睡眠模式开,便捷配备*/
WordWrite1314(CLOCK_DIVIDERS_CH0,0X500a);//fSENSOR不分音器,fCLK 2分频
/* 数字时钟源分音器挑选,分音器指数1,1
Using L and C, 得fSENSOR = 1/2π&TImes;sqrt(L &TImes;C)
留意fSENSOR须低于8.75 MHz,fSENSOR分音器指数才可以置1
留意fREF0须最少超过 4 × fSENSOR,以决策fREF0分频指数
fin0 = fSENSOR0/CH0_FIN_DIVIDER
fREF0 = fCLK / CH0_FREF_DIVIDER
*
WordWrite1314(SETTLECOUNT_CH0,0x0A60);
/* 创建(Settling)时间设置
测算得Q=Rp*sqrt(C/L)
存储器值低于10取10,超过10取其值,且应符合下述标准:
CHx_SETTLECOUNT ≥ QSENSORx × fREFx / (16 × fSENSORx) (10进制)
(1)fSENSORx:x安全通道感应器頻率
(2)fREFx:x安全通道参照頻率
(3)QSENSORx:品质因素,Q=Rp ×sqrt(C/L)
留意,不等式右侧计算有小数则向上取整
创建時间tSx = (CH0_SETTLECOUNT*16) / fREF0
安全通道转换時间tCsd = Channel Switch Delay = 692 ns 5 / fref (us)
*/
WordWrite1314(RCOUNT_CH0,0xFFFF);
/*变换时间设置
得变换時间tCx = TSAMPLE(取样時间) – tSx – tCsd (us)
由上式计算存储器的值(有小数则向下取整(舍弃)):
变换時间tCx = (CHx_RCOUNT × 16) / fREFx (10进制)
留意存储器的值化作16进制
*/
/*应用ERROR_CONFIG初始值,不正确终断关掉*/
WordWrite1314(DRIVE_CURRENT_CH0,0x9800);
/*感应器工作电压设定,应用请与此同时留意CONFIG存储器有关配备
查数据信息指南的Figure 15,得IDRIVE值(10进制),INIT_DRIVE值不应用,维持默认设置
应用CH0_IDRIVE[15:11]时,Rp Override须开启
应用CH0_INIT_IDRIVE[10:6]时,确保AUTO_AMP_DIS位不置位
*/
//WordWrite1314(MUX_CONFIG,0x801);
/* 多路变换挑选,键入顶峰单脉冲过滤器网络带宽挑选,应用请与此同时留意CONFIG存储器有关配备!
(a)置AUTOSCAN_EN位为b1也就能持续方式(sequential mode)
(b)置RR_SEQUENCE位为b00也就能2个安全通道的数据交换(channel 0,channel 1)
(c)置DEGLITCH位为b100设置键入顶峰单脉冲过滤器网络带宽,此值务必高过串联谐振fTank!
*/
//WordWrite1314(OFFSET_CH0,0x00);
/*頻率偏位(赔偿)设定
能够安装从每一个数据信息值中减掉偏位值,以赔偿頻率偏位或利润最大化采样率的样版数据信息
fOFFSET0 = CH0_OFFSET * (fREF0/2^16)
且偏位值应低于 fSENSORx_MIN / fREFx
*/
//WordWrite1314(RESET_DEV,0x00);
/*輸出增益值设定,[10:9],对全部安全通道合理
针对感应器数据信号变化量低于满度25%的系统软件,设定輸出增益值能够带来高些的屏幕分辨率(精密度)
*/
/*
情况存储器:STATUS,ERROR_CONFIG
*/
WordWrite1314(CONFIG,0x1501);
/*默认设置 持续变换(单)安全通道0,睡眠模式关,Rp Override开
功耗低方式关,感应器全自动力度校准(AUTO_AMP)关,Ref数字时钟源选外界数字时钟源
INTB终断开,高电流量推动关*/
}
/*载入LDC1314变换結果,键入主要参数为挑选安全通道数*/
uint LDC1314_Result(uchar Channal)
{
uint temp=0;
switch(Channal)
{
case 0x00:
temp=WordRead1314(DATA_CH0); //安全通道0
break;
case 0x01:
temp=WordRead1314(DATA_CH1); //安全通道1
break;
case 0x02:
temp=WordRead1314(DATA_CH2); //安全通道2
break;
case 0x03:
temp=WordRead1314(DATA_CH3); //安全通道3
break;
default :
break;
}
while((temp&0xF000)!=0);
/*有不正确Flag!,有輸出增益值时留意此句,很有可能错误!
0x000 = under range,0xfff = over range
*/
return temp;
}
LDC1314.H文档
#ifndef ._LDC1314_H
#define ._LDC1314_H
#include 《msp430f169.h》
#include “config.h”
static void I2C_Init();
static void I2C_Start();
static void I2C_Stop();
static void I2C_SendACK(uchar ack);
static uchar I2C_RecvACK();
static uchar I2C_SendByte(uchar dat);
static uchar I2C_RecvACK();
static void WordWrite1314(uchar REG_Address,uint REG_data);
static uint WordRead1314(uchar REG_Address);
void InitLDC1314(void);
uint LDC1314_Result(uchar Channal);
//****界定LDC1314硬件配置插口(不一样硬件配置改动这里就可以)***********
#define LDC1314DIR P1DIR
#define LDC1314OUT P1OUT
#define LDC1314IN P1IN
#define LDC_SCL BIT2
#define LDC_SDA BIT3
#define LDC_INTB BIT4//终断
#define LDC_SD BIT5//置高,则进到断电方式
//*********I2C硬件配置有关接口函数**************
#define LDC_SCL_OUT() LDC1314DIR |= LDC_SCL // SCL脚輸出
#define LDC_SCL_H() LDC1314OUT |= LDC_SCL // SCL拉升
#define LDC_SCL_L() LDC1314OUT &= ~LDC_SCL // SCL降低
#define LDC_SDA_OUT() LDC1314DIR |= LDC_SDA // SDA脚輸出
#define LDC_SDA_H() LDC1314OUT |= LDC_SDA // SDA拉升
#define LDC_SDA_L() LDC1314OUT &= ~LDC_SDA // SDA降低
#define LDC_SDA_IN() LDC1314DIR &= ~LDC_SDA // SDA脚键入
#define LDC_SDA_DAT() (LDC1314IN&LDC_SDA) // SDA键入数据信息
#define SlaveAddress 0x2A //IIC载入时的详细地址字节数数据信息, 1为载入,ADDR接上拉电阻,详细地址则为0x2B
#define DATA_CH0 0x00 //Channel 0 Conversion Result and Error Status
#define DATA_CH1 0x02
#define DATA_CH2 0x04
#define DATA_CH3 0x06
#define RCOUNT_CH0 0x08 //Reference Count setting for Channel 0
#define RCOUNT_CH1 0x09
#define RCOUNT_CH2 0x0A
#define RCOUNT_CH3 0x0B
#define OFFSET_CH0 0x0C //Offset value for Channel 0
#define OFFSET_CH1 0x0D
#define OFFSET_CH2 0x0E
#define OFFSET_CH3 0x0F
#define SETTLECOUNT_CH0 0x10 //Channel 0 Settling Reference Count
#define SETTLECOUNT_CH1 0x11
#define SETTLECOUNT_CH2 0x12
#define SETTLECOUNT_CH3 0x13
#define CLOCK_DIVIDERS_CH0 0x14
#define CLOCK_DIVIDERS_CH1 0x15
#define CLOCK_DIVIDERS_CH2 0x16
#define CLOCK_DIVIDERS_CH3 0x17
#define STATUS 0x18 //Device Status Report
#define ERROR_CONFIG 0x19 //Error Reporting Configuration
#define MUX_CONFIG 0x1A //Channel Multiplexing Configuration
#define CONFIG 0x1B //Conversion Configuration
#define RESET_DEV 0x1C //Reset Device
#define DRIVE_CURRENT_CH0 0x1E //Channel 0 sensor current drive configuration
#define DRIVE_CURRENT_CH1 0x1F
#define DRIVE_CURRENT_CH2 0x20
#define DRIVE_CURRENT_CH3 0x21
#define MANUFACTURER_ID 0x7E //生产商ID,初始值0x5449
#define DEVICE_ID 0x7F //机器设备ID,初始值0x3054
#endif
下一篇:关于esd保护二极管的比较