热搜关键词: 信号与系统无刷电机ADSTCP/IP

rar

AD7177驱动

  • 1星
  • 日期: 2021-10-19
  • 大小: 11.51KB
  • 所需积分:5分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • free评论
标签: 嵌入式

嵌入式

单片机

单片机

传感器

传感器

工控

工控

通信

通信

c驱动,移植就能用

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

*    @file      AD717X.h

*    @brief    AD717X  header  file.

*    @devices  AD7172-2,  AD7172-4,  AD7173-8,  AD7175-2,  AD7175-8,  AD7176-2,

*                AD7177-2

*    @author    acozma  (andrei.cozma@analog.com)

*                dnechita  (dan.nechita@analog.com)

*******************************************************************************

*  Copyright  2015(c)  Analog  Devices,  Inc.

*

*  All  rights  reserved.

*

*  Redistribution  and  use  in  source  and  binary  forms,  with  or  without  modification,

*  are  permitted  provided  that  the  following  conditions  are  met:

*    -  Redistributions  of  source  code  must  retain  the  above  copyright

*      notice,  this  list  of  conditions  and  the  following  disclaimer.

*    -  Redistributions  in  binary  form  must  reproduce  the  above  copyright

*      notice,  this  list  of  conditions  and  the  following  disclaimer  in

*      the  documentation  and/or  other  materials  provided  with  the

*      distribution.

*    -  Neither  the  name  of  Analog  Devices,  Inc.  nor  the  names  of  its

*      contributors  may  be  used  to  endorse  or  promote  products  derived

*      from  this  software  without  specific  prior  written  permission.

*    -  The  use  of  this  software  may  or  may  not  infringe  the  patent  rights

*      of  one  or  more  patent  holders.    This  license  does  not  release  you

*      from  the  requirement  that  you  obtain  separate  licenses  from  these

*      patent  holders  to  use  this  software.

*    -  Use  of  the  software  either  in  source  or  binary  form,  must  be  run

*      on  or  directly  connected  to  an  Analog  Devices  Inc.  component.

*

*  THIS  SOFTWARE  IS  PROVIDED  BY  ANALOG  DEVICES  \"AS  IS\"  AND  ANY  EXPRESS  OR  IMPLIED

*  WARRANTIES,  INCLUDING,  BUT  NOT  LIMITED  TO,  NON-INFRINGEMENT,  MERCHANTABILITY

*  AND  FITNESS  FOR  A  PARTICULAR  PURPOSE  ARE  DISCLAIMED.

*  IN  NO  EVENT  SHALL  ANALOG  DEVICES  BE  LIABLE  FOR  ANY  DIRECT,  INDIRECT,  INCIDENTAL,

*  SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL  DAMAGES  (INCLUDING,  BUT  NOT  LIMITED  TO,

*  INTELLECTUAL  PROPERTY  RIGHTS,  PROCUREMENT  OF  SUBSTITUTE  GOODS  OR  SERVICES;

*  LOSS  OF  USE,  DATA,  OR  PROFITS;  OR  BUSINESS  INTERRUPTION)  HOWEVER  CAUSED  AND

*  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT  LIABILITY,  OR  TORT

*  (INCLUDING  NEGLIGENCE  OR  OTHERWISE)  ARISING  IN  ANY  WAY  OUT  OF  THE  USE  OF  THIS

*  SOFTWARE,  EVEN  IF  ADVISED  OF  THE  POSSIBILITY  OF  SUCH  DAMAGE.

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

#ifndef  __AD717X_H__

#define  __AD717X_H__

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

/*****************************  Include  Files  *********************************/

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

#include  <stdint.h>

typedef  enum  ad717x_crc_mode  ad717x_crc_mode;

enum  ad717x_crc_mode

{

AD717X_DISABLE,

AD717X_USE_CRC,

AD717X_USE_XOR,

};

/*!  AD717X  register  info  */

typedef  struct  _ad717x_st_reg

{

int32_t  addr;

int32_t  value;

int32_t  size;

}ad717x_st_reg;

/*

  *  The  structure  describes  the  device  and  is  used  with  the  ad717x  driver.

  *  @slave_select_id:  The  ID  of  the  Slave  Select  to  be  passed  to  the  SPI  calls.

  *  @regs:  A  reference  to  the  register  list  of  the  device  that  the  user  must

  *          provide  when  calling  the  Setup()  function.

  *  @num_regs:  The  length  of  the  register  list. 

  *  @userCRC:  Error  check  type  to  use  on  SPI  transfers.

  */

struct  ad717x_device  {

uint8_t  slave_select_id;

ad717x_st_reg  *regs;

uint8_t  num_regs;

ad717x_crc_mode  useCRC;

};

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

/*****************  AD717X  Register  Definitions  *******************************/

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

/*  AD717X  Register  Map  */

#define  AD717X_COMM_REG          0x00

#define  AD717X_STATUS_REG        0x00

#define  AD717X_ADCMODE_REG      0x01

#define  AD717X_IFMODE_REG        0x02

#define  AD717X_REGCHECK_REG    0x03

#define  AD717X_DATA_REG          0x04

#define  AD717X_GPIOCON_REG      0x06

#define  AD717X_ID_REG            0x07

#define  AD717X_CHMAP0_REG        0x10

#define  AD717X_CHMAP1_REG        0x11

#define  AD717X_CHMAP2_REG        0x12

#define  AD717X_CHMAP3_REG        0x13

#define  AD717X_CHMAP4_REG        0x14

#define  AD717X_CHMAP5_REG        0x15

#define  AD717X_CHMAP6_REG        0x16

#define  AD717X_CHMAP7_REG        0x17

#define  AD717X_CHMAP8_REG        0x18

#define  AD717X_CHMAP9_REG        0x19

#define  AD717X_CHMAP10_REG      0x1A

#define  AD717X_CHMAP11_REG      0x1B

#define  AD717X_CHMAP12_REG      0x1C

#define  AD717X_CHMAP13_REG      0x1D

#define  AD717X_CHMAP14_REG      0x1E

#define  AD717X_CHMAP15_REG      0x1F

#define  AD717X_SETUPCON0_REG    0x20

#define  AD717X_SETUPCON1_REG    0x21

#define  AD717X_SETUPCON2_REG    0x22

#define  AD717X_SETUPCON3_REG    0x23

#define  AD717X_SETUPCON4_REG    0x24

#define  AD717X_SETUPCON5_REG    0x25

#define  AD717X_SETUPCON6_REG    0x26

#define  AD717X_SETUPCON7_REG    0x27

#define  AD717X_FILTCON0_REG    0x28

#define  AD717X_FILTCON1_REG    0x29

#define  AD717X_FILTCON2_REG    0x2A

#define  AD717X_FILTCON3_REG    0x2B

#define  AD717X_FILTCON4_REG    0x2C

#define  AD717X_FILTCON5_REG    0x2D

#define  AD717X_FILTCON6_REG    0x2E

#define  AD717X_FILTCON7_REG    0x2F

#define  AD717X_OFFSET0_REG      0x30

#define  AD717X_OFFSET1_REG      0x31

#define  AD717X_OFFSET2_REG      0x32

#define  AD717X_OFFSET3_REG      0x33

#define  AD717X_OFFSET4_REG      0x34

#define  AD717X_OFFSET5_REG      0x35

#define  AD717X_OFFSET6_REG      0x36

#define  AD717X_OFFSET7_REG      0x37

#define  AD717X_GAIN0_REG        0x38

#define  AD717X_GAIN1_REG        0x39

#define  AD717X_GAIN2_REG        0x3A

#define  AD717X_GAIN3_REG        0x3B

#define  AD717X_GAIN4_REG        0x3C

#define  AD717X_GAIN5_REG        0x3D

#define  AD717X_GAIN6_REG        0x3E

#define  AD717X_GAIN7_REG        0x3F

/*  Communication  Register  bits  */

#define  AD717X_COMM_REG_WEN      (0  <<  7)

#define  AD717X_COMM_REG_WR        (0  <<  6)

#define  AD717X_COMM_REG_RD        (1  <<  6)

#define  AD717X_COMM_REG_RA(x)    ((x)  &  0x3F)

/*  Status  Register  bits  */

#define  AD717X_STATUS_REG_RDY        (1  <<  7)

#define  AD717X_STATUS_REG_ADC_ERR    (1  <<  6)

#define  AD717X_STATUS_REG_CRC_ERR    (1  <<  5)

#define  AD717X_STATUS_REG_REG_ERR    (1  <<  4)

#define  AD717X_STATUS_REG_CH(x)      ((x)  &  0x03)

/*  ADC  Mode  Register  bits  */

#define  AD717X_ADCMODE_REG_REF_EN        (1  <<  15)

#define  AD717X_ADCMODE_SING_CYC          (1  <<  13)

#define  AD717X_ADCMODE_REG_DELAY(x)    (((x)  &  0x7)  <<  8)

#define  AD717X_ADCMODE_REG_MODE(x)      (((x)  &  0x7)  <<  4)

#define  AD717X_ADCMODE_REG_CLKSEL(x))  (((x)  &  0x3)  <<  2)

/*  ADC  Mode  Register  additional  bits  for  AD7172-2  and  AD7172-4  */

#define  AD717X_ADCMODE_REG_HIDE_DELAY    (1  <<  14)

/*  Interface  Mode  Register  bits  */

#define  AD717X_IFMODE_REG_ALT_SYNC        (1  <<  12)

#define  AD717X_IFMODE_REG_IOSTRENGTH      (1  <<  11)

#define  AD717X_IFMODE_REG_HIDE_DELAY      (1  <<  10)

#define  AD717X_IFMODE_REG_DOUT_RESET      (1  <<  8)

#define  AD717X_IFMODE_REG_CONT_READ        (1  <<  7)

#define  AD717X_IFMODE_REG_DATA_STAT        (1  <<  6)

#define  AD717X_IFMODE_REG_REG_CHECK        (1  <<  5)

#define  AD717X_IFMODE_REG_XOR_EN            (0x01  <<  2)

#define  AD717X_IFMODE_REG_CRC_EN            (0x02  <<  2)

#define  AD717X_IFMODE_REG_XOR_STAT(x)    (((x)  &  AD717X_IFMODE_REG_XOR_EN)  ==  AD717X_IFMODE_REG_XOR_EN)

#define  AD717X_IFMODE_REG_CRC_STAT(x)    (((x)  &  AD717X_IFMODE_REG_CRC_EN)  ==  AD717X_IFMODE_REG_CRC_EN)

#define  AD717X_IFMODE_REG_DATA_WL16        (1  <<  0)

/*  GPIO  Configuration  Register  bits  */

#define  AD717X_GPIOCON_REG_MUX_IO        (1  <<  12)

#define  AD717X_GPIOCON_REG_SYNC_EN        (1  <<  11)

#define  AD717X_GPIOCON_REG_ERR_EN(x)    (((x)  &  0x3)  <<  9)

#define  AD717X_GPIOCON_REG_ERR_DAT        (1  <<  8)

#define  AD717X_GPIOCON_REG_IP_EN1        (1  <<  5)

#define  AD717X_GPIOCON_REG_IP_EN0        (1  <<  4)

#define  AD717X_GPIOCON_REG_OP_EN1        (1  <<  3)

#define  AD717X_GPIOCON_REG_OP_EN0        (1  <<  2)

#define  AD717X_GPIOCON_REG_DATA1          (1  <<  1)

#define  AD717X_GPIOCON_REG_DATA0          (1  <<  0)

/*  GPIO  Configuration  Register  additional  bits  for  AD7172-4,  AD7173-8  */

#define  AD717X_GPIOCON_REG_GP_DATA3      (1  <<  7)

#define  AD717X_GPIOCON_REG_GP_DATA2      (1  <<  6)

#define  AD717X_GPIOCON_REG_GP_DATA1      (1  <<  1)

#define  AD717X_GPIOCON_REG_GP_DATA0      (1  <<  0)

/*  GPIO  Configuration  Register  additional  bits  for  AD7173-8  */

#define  AD717X_GPIOCON_REG_PDSW            (1  <<  14)

#define  AD717X_GPIOCON_REG_OP_EN2_3      (1  <<  13)

/*  Channel  Map  Register  0-3  bits  */

#define  AD717X_CHMAP_REG_CH_EN            (1  <<  15)

#define  AD717X_CHMAP_REG_SETUP_SEL(x)    (((x)  &  0x3)  <<  12)

#define  AD717X_CHMAP_REG_AINPOS(x)        (((x)  &  0x1F)  <<  5)

#define  AD717X_CHMAP_REG_AINNEG(x)        (((x)  &  0x1F)  <<  0)

/*  Setup  Configuration  Register  0-3  bits  */

#define  AD717X_SETUP_CONF_REG_BI_UNIPOLAR    (1  <<  12)

#define  AD717X_SETUP_CONF_REG_REF_SEL(x)    (((x)  &  0x3)  <<  4)

/*  Setup  Configuration  Register  additional  bits  for  AD7173-8  */

#define  AD717X_SETUP_CONF_REG_REF_BUF(x)    (((x)  &  0x3)  <<  10)

#define  AD717X_SETUP_CONF_REG_AIN_BUF(x)    (((x)  &  0x3)  <<  8)

#define  AD717X_SETUP_CONF_REG_BURNOUT_EN    (1  <<  7)

#define  AD717X_SETUP_CONF_REG_BUFCHOPMAX    (1  <<  6)

/*  Setup  Configuration  Register  additional  bits  for  AD7172-2,  AD7172-4,  AD7175-2  */

#define  AD717X_SETUP_CONF_REG_REFBUF_P      (1  <<  11)

#define  AD717X_SETUP_CONF_REG_REFBUF_N      (1  <<  10)

#define  AD717X_SETUP_CONF_REG_AINBUF_P      (1  <<  9)

#define  AD717X_SETUP_CONF_REG_AINBUF_N      (1  <<  8)

/*  Filter  Configuration  Register  0-3  bits  */

#define  AD717X_FILT_CONF_REG_SINC3_MAP      (1  <<  15)

#define  AD717X_FILT_CONF_REG_ENHFILTEN      (1  <<  11)

#define  AD717X_FILT_CONF_REG_ENHFILT(x)    (((x)  &  0x7)  <<  8)

#define  AD717X_FILT_CONF_REG_ORDER(x)        (((x)  &  0x3)  <<  5)

#define  AD717X_FILT_CONF_REG_ODR(x)          (((x)  &  0x1F)  <<  0)

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

/*******************  AD717X  Constants  ****************************************/

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

#define  AD717X_CRC8_POLYNOMIAL_REPRESENTATION  0x07  /*  x8  +  x2  +  x  +  1  */

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

/************************  Functions  Declarations  *****************************/

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

/*!  Retrieves  a  pointer  to  the  register  that  matches  the  given  address  */

ad717x_st_reg  *AD717X_GetReg(struct  ad717x_device  *device,  uint8_t  reg_address);

/*!  Reads  the  value  of  the  specified  register.  */

int32_t  AD717X_ReadRegister(struct  ad717x_device  *device,  uint8_t  addr);

/*!  Writes  the  value  of  the  specified  register.  */

int32_t  AD717X_WriteRegister(struct  ad717x_device  *device,  uint8_t);

/*!  Resets  the  device.  */

int32_t  AD717X_Reset(struct  ad717x_device  *device);

/*!  Waits  until  a  new  conversion  result  is  available.  */

int32_t  AD717X_WaitForReady(struct  ad717x_device  *device,  uint32_t  timeout);

/*!  Reads  the  conversion  result  from  the  device.  */

int32_t  AD717X_ReadData(struct  ad717x_device  *device,  int32_t*  pData);

/*!  Computes  the  CRC  checksum  for  a  data  buffer.  */

uint8_t  AD717X_ComputeCRC8(uint8_t*  pBuf,  uint8_t  bufSize);

/*!  Computes  the  XOR  checksum  for  a  data  buffer.  */

uint8_t  AD717X_ComputeXOR8(uint8_t  *  pBuf,  uint8_t  bufSize);

/*!  Updates  the  CRC  settings.  */

int32_t  AD717X_UpdateCRCSetting(struct  ad717x_device  *device);

/*!  Initializes  the  AD717X.  */

int32_t  AD717X_Setup(struct  ad717x_device  *device,  uint8_t  slave_select,

ad717x_st_reg  *regs,  uint8_t  num_regs);

#endif  /*  __AD717X_H__  */

推荐帖子 最新更新时间:2021-12-08 05:31

uPyCraft ----- micropython 专用IDE
uPyCraft软件简介 此内容由EEWORLD论坛网友秦皇岛岛主原创,如需转载或用于商业用途需征得作者同意并注明出处 uPyCraft是一款专门为micropython设计的IDE,支持Windows XP,Windows 7,Windows 8, Windows 10系列操作系统,MAC OSX 10.11及以上版本操作系统。为了用户使用便捷,uPyCraft在所有系统上都采用绿色
秦皇岛岛主 MicroPython开源版块
【转】PiLarm: 便携式树莓派警报器
http://www.geekfan.net/4569/ 我一直在寻找一些能给自己孩子带来教益的瞬间。当我五岁的儿子来寻求我的帮助,别再让他的弟弟偷偷溜进他的房间的时候,我突然灵光一现,发现这是教他关于输入、输出和其他一些编程知识的绝佳时机。而且让他在解决自己实际问题中学习这些也会相对容易。我本来可以用很多不同的方法来建立一个简单的警报系统,但是我想要让这个系统是一体化的并且在功能上
chenzhufly Linux与安卓
本周精彩博文分享
功率因数校正电路的开关管驱动方案 PFC(Power Factor Correction)即功率因数校正,通过调理使电网电压和输入电流同相位并减小高次谐波,有利于降低用电设备对电网的影响并提高电网利用率,已经成为很多电网输入应用场合的基本要求。〉〉〉点击查看详情 UCC21520在LLC电路中的应用 LLC电路拓扑因其可以实现变压器原边开关管的ZVS(Zero
橙色凯 模拟与混合信号
电解电容基础知识
因为电容的充电需要一定的时间,所以可以利用电容来实现硬件的延时。 在电容在4.7uF以上,我们通常选用电解电容,特点是精度小,容量大。 小容量电容为瓷片电容,一般为贴片式的,也有插件式的。特点容量小,精度高。一般在电源电路中和点解电容配合使用。 一般情况下,电源负载对后面电路输送能量时,都接一个储能电容。 电解电容可以储能一般滤掉低频波,对高频波过滤一般。一般加个瓷片电容滤高频波。 有极
Jacktang 模拟与混合信号
LSM6DSO32,支持MIPI I3C接口的惯性模块来了解一下
LSM6DSO32 iNEMO惯性模块是一款系统级封装 (SiP),在单个紧凑型低功耗芯片中集成了3D数字加速度计和3D数字陀螺仪。LSM6DSO32具有同类最佳的运动感应能力,可检测方向和手势,从而为应用程序开发人员和消费者提供比仅仅将其设备定位为肖像和景观模式更先进的特性和功能。该器件的事件检测中断可实现高效可靠的运动跟踪和情景感知,实现对自由落体事件、6D方向、单击和双击检测、活动或非活动、
littleshrimp MEMS传感器
MSP430F5529按键中断扫描和pwm程序
近日在做一个用按键来控制pwm的程序,结果发现,一旦把中断按键扫描程序模块加进去,按键就失灵了。而单独编译中断按键扫描程序却是有效的。以下为我的程序。 #include <msp430.h> #include <driverlib.h> void PWM(); void TIMER_INIT(); void GPIO_INIT(); void key_scan(); int v1
MINGG_ 微控制器 MCU

评论

登录/注册

意见反馈

求资源

回顶部

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
×