微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > LDC1000的底层驱动程序

LDC1000的底层驱动程序

时间:07-08 来源: 点击:

  TI推出的电感数据转换器LDC1000,LDC1000是一款一种非接触式、短程传感技术的传感器芯片,具有低成本、高分辨率遥感的导电性。

  由于LDC技术的优势明显,非常适合工厂流水线上的运动状态的传感检测,在工业机器人及智能工厂等工业领域将发挥良好作用。

  LDC 技术的主要优势:

  • 更高的分辨率:可通过 16 位共振阻抗及 24 位电感值,在位置传感应用中实现亚微米级分辨率;

  • 更高的可靠性:提供非接触传感技术避免受油污尘土等非导电污染物的影响,可延长设备使用寿命;

  • 更高的灵活性:允许传感器远离电子产品安放,处于 PCB 无法安放的位置;

  • 更低的系统成本:采用低成本传感器及传导目标,无需磁体;

  • 无限可能性:支持压缩的金属薄片或导电油墨目标,可为创造性创新系统设计带来无限可能;

  • 更低的系统功耗:标准工作时功耗不足 8.5mW,待机模式下功耗不足 1.25mW。

  LDC1000的底层驱动程序:

  #ifndef LDC1000_CMD_H_ #define LDC1000_CMD_H_

  /************************************** ************* VCC ****************** ************* CLK ****************** ************* DI ****************** ************* DO ****************** ************* CS ****************** ************* GND ****************** **************************************/

  #define LDC1000_DO 3 //IN #define LDC1000_CS 5 //out #define LDC1000_DI 6 //out #define LDC1000_CLK 7 //out

  #define LDC1000_CS_SET() DATA_OUT(LDC1000_CS,1) #define LDC1000_DI_SET() DATA_OUT(LDC1000_DI,1) #define LDC1000_CLK_SET() DATA_OUT(LDC1000_CLK,1)

  #define LDC1000_CS_CLR() DATA_OUT(LDC1000_CS,0) #define LDC1000_DI_CLR() DATA_OUT(LDC1000_DI,0) #define LDC1000_CLK_CLR() DATA_OUT(LDC1000_CLK,0)

  #define LDC1000_DO_IN gpio_get(PORTB,LDC1000_DO)

  #define Dly_LDC1000CLK() delay250ns(1)

  #define RPMAX 0x13 #define RPMIN 0x3A

  // LDC COMMANDS

  #define LDC1000_CMD_REVID 0x00 #define LDC1000_CMD_RPMAX 0x01 #define LDC1000_CMD_RPMIN 0x02 #define LDC1000_CMD_SENSORFREQ 0x03 #define LDC1000_CMD_LDCCONFIG 0x04 #define LDC1000_CMD_CLKCONFIG 0x05 #define LDC1000_CMD_THRESHILSB 0x06 #define LDC1000_CMD_THRESHIMSB 0x07 #define LDC1000_CMD_THRESLOLSB 0x08 #define LDC1000_CMD_THRESLOMSB 0x09 #define LDC1000_CMD_INTCONFIG 0x0A

  #define LDC1000_CMD_PWRCONFIG 0x0B #define LDC1000_CMD_STATUS 0x20 #define LDC1000_CMD_PROXLSB 0x21 #define LDC1000_CMD_PROXMSB 0x22 #define LDC1000_CMD_FREQCTRLSB 0x23 #define LDC1000_CMD_FREQCTRMID 0x24 #define LDC1000_CMD_FREQCTRMSB 0x25

  // LDC BITMASKS

  #define LDC1000_BIT_AMPLITUDE 0x18 #define LDC1000_BIT_RESPTIME 0x07 #define LDC1000_BIT_CLKSEL 0x02 #define LDC1000_BIT_CLKPD 0x01 #define LDC1000_BIT_INTMODE 0x07 #define LDC1000_BIT_PWRMODE 0x01 #define LDC1000_BIT_STATUSOSC 0x80 #define LDC1000_BIT_STATUSDRDYB 0x40 #define LDC1000_BIT_STATUSWAKEUP 0x20 #define LDC1000_BIT_STATUSCOMP 0x10

  void delay250ns(uint32 ms);

  void DATA_OUT(uint8 pin,uint8 level);

  void LDC1000_write(char ADDR, char data);

  void LDC1000_read(uint8 ADDR,char *DATA,char len); void LDC1000_init();

  #endif /* LDC1000_CMD_H_ */

  #include "LDC1000_cmd.h" char orgVal[20];

  /************************************************************************* * 函数名称:delayms

  * 功能说明:延时函数(不准确),内核频率为100M时较为准确 * 备 注:

  *************************************************************************/ void delay250ns(uint32 ms) {

  uint32 i, j;

  for(i = 0; i 《 ms; i++) {

  for(j = core_clk_mhz/8; j 》 0; j--)

  {

  asm("nop"); } } }

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

  * Function Name : DATA_OUT

* Description : SCCB数据线的状态 包括输入输出 电平 * Input : uint8 pin 输入

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top