色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創作
電子發燒友網>電子資料下載>類型>參考設計>AD4112微控制器無操作系統驅動程序

AD4112微控制器無操作系統驅動程序

2021-03-23 | pdf | 173.48KB | 次下載 | 5積分

資料介紹

This version (02 Oct 2020 12:22) was approved by Andrei Drimbarean.The Previously approved version (22 Jul 2019 10:19) is available.Diff

AD717X No-OS Software Drivers

Introduction

This document describes the No-OS software used to control the AD717X family parts and the AD4111 device. It also includes an example of how to initialize a AD7176 part.

Overview

The AD717x family of products are fast settling, high resolution, highly accurate, multiplexed Σ-Δ analog-to-digital converters (ADC) for low bandwidth input signals, with resolution options of both 32bit and 24bit available. The products are available in both TSSOP of LFCSP depending on the product selected. AD717x family of devices include:

The inputs to the ADC can be configured as fully differential or pseudo differential inputs depending on the product chosen, this can be done via the integrated crosspoint multiplexer. An integrated precision, 2.5 V, low drift (2ppm/°C), band gap internal reference (with an output reference buffer) adds functionality and reduces the external component count. A maximum channel scan data rate is 50 kSPS (with a settling time of 20 μs), resulting in fully settled data of 17 noise free bits. User-selectable output data rates range from 5 SPS to 250 kSPS can be obtained from AD7175, AD7176 and AD7177 devices. A maximum channel scan data rate is 6.1 kSPS (with a settling time of 161 μs). User-selectable output data rates range from 1.25 SPS to 31.25 kSPS can be obtained from AD7172, AD7173 devices. The AD717x devices offers three key digital filters. The fast settling filter maximizes the channel scan rate. The Sinc3 filter maximizes the resolution for single-channel, low speed applications. For 50 Hz and 60 Hz environments, the AD717x specific filter minimizes the settling times or maximizes the rejection of the line frequency. These enhanced filters enable simultaneous 50 Hz and 60 Hz rejection with a 27 SPS output data rate (with a settling time of 36 ms). System offset and gain errors can be corrected on a per channel basis. This per channel configurability extends to the type of filter and output data rate used for each channel. All switching of the crosspoint multiplexer is controlled by the ADC and can be configured to automatically control an external multiplexer via the GPIO pins. The specified operating temperature range is ?40°C to +105°C.

The AD4111, AD4112, AD4114 and AD4115 are low power, low noise, 24-bit, sigma delta (Σ-Δ) analog-to-digital converters (ADC) that integrate analog front ends (AFE) for fully differential or single-ended rail-to-rail, buffered bipolar, ±10 V voltage inputs, and 0 mA to 20 mA current inputs. They also integrate key analog and digital signal conditioning blocks to configure eight individual setups for each analog input channel in use. The AD4111 and AD4112 feature a maximum channel scan rate of 6.2 kSPS (161 μs) for fully settled data.

The AD4111 also has the unique feature of open wire detection on the voltage inputs (patent pending) for system level diagnostics using a single 5 V or 3.3 V power supply. It is housed in a 40-lead, 6 mm × 6 mm LFCSP package.

Applications

  • Process control : PLC/DCS modules
  • Temperature and pressure measurement
  • Medical and scientific multichannel instrumentation
  • Chromatography

Supported Devices

Evaluation Boards

Driver Description

The driver contains two parts:

  • The driver for the AD717X family, which may be used, without modifications, with any microcontroller.
  • The Generic Platform Driver, which implements the actual communications with the device.

Generic platform driver description

The Generic Platform Driver is where the specific communication functions for the desired type of processor and communication protocol have to be implemented. This driver implements the communication with the device and hides the actual details of the communication protocol to the specific device or family driver.

The Generic Platform Driver has a standard interface, so the device driver can be used exactly as it is provided. This standard interface includes the I2C and SPI communications, functions for managing GPIOs and a miliseconds delay function.

The milisecond delay functions is:

Function Description
void mdelay(uint32_t msecs)
Generate miliseconds delay.

I2C interface

The I2C interface has the following functions:

Function Description
int32_t i2c_init(struct i2c_desc **desc, const struct i2c_init_param *param)
Initialize the I2C communication peripheral.
int32_t i2c_remove(struct i2c_desc *desc)
Free the resources allocated by i2c_init().
int32_t i2c_write(struct i2c_desc *desc, uint8_t *data,
	uint8_t bytes_number, uint8_t stop_bit)
Write data to a slave device.
int32_t i2c_read(struct i2c_desc *desc, uint8_t *data,
	uint8_t bytes_number, uint8_t stop_bit)
Read data from a slave device.

The following structs and enums are used for the I2C interface:

typedef enum i2c_type {
	GENERIC_I2C
} i2c_type;
?
typedef struct i2c_init_param {
	enum i2c_type	type;
	uint32_t	id;
	uint32_t	max_speed_hz;
	uint8_t		slave_address;
} i2c_init_param;
?
typedef struct i2c_desc {
	enum i2c_type	type;
	uint32_t	id;
	uint32_t	max_speed_hz;
	uint8_t		slave_address;
} i2c_desc;

SPI interface

The SPI interface has the following functions:

Function Description
int32_t spi_init(struct spi_desc **desc, const struct spi_init_param *param)
Initialize the SPI communication peripheral.
int32_t spi_remove(struct spi_desc *desc)
Free the resources allocated by spi_init().
int32_t spi_write_and_read(struct spi_desc *desc, uint8_t *data,
	uint8_t bytes_number)
Write and read data to/from SPI.

The following structs and enums are used for the SPI interface:

typedef enum spi_type {
	GENERIC_SPI
} spi_type;
?
typedef enum spi_mode {
	SPI_MODE_0 = (0 | 0),
	SPI_MODE_1 = (0 | SPI_CPHA),
	SPI_MODE_2 = (SPI_CPOL | 0),
	SPI_MODE_3 = (SPI_CPOL | SPI_CPHA)
} spi_mode;
?
typedef struct spi_init_param {
	enum spi_type	type;
	uint32_t	id;
	uint32_t	max_speed_hz;
	enum spi_mode	mode;
	uint8_t		chip_select;
} spi_init_param;
?
typedef struct spi_desc {
	enum spi_type	type;
	uint32_t	id;
	uint32_t	max_speed_hz;
	enum spi_mode	mode;
	uint8_t		chip_select;
} spi_desc;

GPIO interface

The GPIO interface has the following functions:

Function Description
int32_t gpio_get(struct gpio_desc **desc, uint8_t gpio_number)
Obtain the GPIO decriptor.
int32_t gpio_remove(struct gpio_desc *desc)
Free the resources allocated by gpio_get().
int32_t gpio_direction_input(struct gpio_desc *desc)
Enable the input direction of the specified GPIO.
int32_t gpio_direction_output(struct gpio_desc *desc, uint8_t value)
Enable the output direction of the specified GPIO.
int32_t gpio_get_direction(struct gpio_desc *desc, uint8_t *direction)
Get the direction of the specified GPIO.
int32_t gpio_set_value(struct gpio_desc *desc, uint8_t value)
Set the value of the specified GPIO.
int32_t gpio_get_value(struct gpio_desc *desc, uint8_t *value)
Get the value of the specified GPIO.

The following structs and enums are used for the GPIO interface:

typedef enum gpio_type {
	GENERIC_GPIO
} gpio_type;
?
typedef struct gpio_desc {
	enum gpio_type	type;
	uint32_t	id;
	uint8_t		number;
} gpio_desc;

04 Sep 2018 12:10 · Andrei Drimbarean

AD717X Family Driver Description

The AD717X driver contains the following:

  • AD717X.h - Header file of the driver. Contains the register map definitions, the driver function declarations, custom data types to be used by the driver and driver specific constants.
  • AD717X.c - Implementation file of the driver. Contains the implementations of the driver functions.

The driver works with any of the following headers by including them in your main project just as you include the ad717x.h header:

  • AD7172_2_regs.h
  • AD7172_4_regs.h
  • AD7173_8_regs.h
  • AD7175_2_regs.h
  • AD7175_8_regs.h
  • AD7176_2_regs.h
  • AD7177_2_regs.h
  • AD411x_regs.h

Each header declares an array of all register of the device that the header describes.

The following functions are implemented in this version of AD717X driver:

Function Description
ad717x_st_reg *AD717X_GetReg(ad717x_device *device, uint8_t reg_address)
Retrieves a pointer to the register that matches the given address.
int32_t AD717X_ReadRegister(ad717x_device *device, uint8_t addr)
Reads the value of the specified register.
int32_t AD717X_WriteRegister(ad717x_device *device, uint8_t addr)
Writes the value of the specified register.
int32_t AD717X_Reset(ad717x_dev *device)
Resets the device.
int32_t AD717X_WaitForReady(ad717x_dev *device, uint32_t timeout)
Waits until a new conversion result is available.
int32_t AD717X_ReadData(ad717x_dev *device, int32_t* pData)
Reads the conversion result from the device.
int32_t AD717X_ComputeDataregSize(ad717x_dev *device)
Computes data register read size to account for bit number and status read.
uint8_t AD717X_ComputeCRC8(uint8_t* pBuf, uint8_t bufSize)
Computes the CRC checksum for a data buffer.
uint8_t AD717X_ComputeXOR8(uint8_t * pBuf, uint8_t bufSize)
Computes the XOR checksum for a data buffer.
int32_t AD717X_UpdateCRCSetting(ad717x_dev *device)
Updates the CRC settings.
int32_t AD717X_Init(ad717x_dev **device, ad717x_init_param init_param)
Initializes the AD717x.
int32_t AD717X_remove(ad717x_dev *dev)
Free the resources allocated by AD717X_Init().

Downloads

Using the API

The driver can only work together with a structure that holds the state of a device, where state means all information about the device including a copy of all register values written to the device at a certain point. This structure will henceforth be referred as an instance of a driver.
All driver functions take a handler of a driver instance as the first argument. This allows the driver to be used with multiple devices simultaneously, without the need to replicate the .c and .h files.

Before using any API call an instance of the driver must first be created and then initialized using the AD717X_Init() which has the following parameters:

  • device: the reference of the new driver instance. A new instance can be obtained by simply declaring a pointer to one then using it to call AD717X_Init():
     ad717x_device *my_ad7176_2; 
  • init_param: the initialization structure. One must be declared and initial values must be added before calling AD717X_Init().
     ad717x_init_param ad7176_2_init_param; 

    ad717x_init_param has the following definition:

     typedef struct {
    	/* SPI */
    	spi_init_param		spi_init;
    	/* Device Settings */
    	ad717x_st_reg		*regs;
    	uint8_t			num_regs;
    } ad717x_init_param; 

    Where:

    • spi_init: is the initialization structure for the SPI API described in the Generic Platform Driver
    • regs: must point to a register array of the device. It will too be stored into the driver and used by the driver. The ad7176_2_regs array defined and initialized in ad7176_2_regs.h can be passed here as parameter provided that the following directives are added inside the file where the driver is being used:
       #include "ad7176_2_regs.h" 
       #define AD7176_2_INIT 

      Alternatively, a new register array can be defined by user which must be properly initialized before calling AD717X_Setup() function.

      ad717x_st_reg my_ad7176_2_regs[] = 
      {
          { AD717X_STATUS_REG, 0x00, 1 },
          { AD717X_ADCMODE_REG, 0x0000, 2 },
          ...
      }
    • num_regs: must provide the number of elements in regs.

A AD717X_Init() call will also reset the part then use all register values stored in the array pointed by the regs parameter to configure the part (the registers that are “Read-only” will not be written during this call).

The following code snipped provides an example of driver usage:

#include "ad7176_2_regs.h"
#define AD7176_2_INIT
?
/* Create a new driver instance */
ad717x_device *my_ad7176_2;
ad717x_init_param ad7176_2_init;
?
ad7176_2_init.spi_init.chip_select = 0x01;
ad7176_2_init.spi_init.id = 0;
ad7176_2_init.spi_init.max_speed_hz = 1000000;
ad7176_2_init.spi_init.mode = SPI_MODE_3;
ad7176_2_init.spi_init.type = GENERIC_SPI;
ad7176_2_init.regs = ad7176_2_regs;
ad7176_2_init.num_regs = sizeof(ad7176_2_regs) / sizeof(ad7176_2_regs[0]);
?
/* Other variables */
long timeout = 1000;
long ret;
long sample;
.
.
.
/* Initialize the driver instance and let's use the ad7176_2_regs array defined in ad7176_2_regs.h */
ret = AD717X_Init(&my_ad7176_2, ad7176_2_init);
if (ret < 0)
    /* Something went wrong, check the value of ret! */
?
/* Read data from the ADC */
ret = AD717X_WaitForReady(my_ad7176_2, timeout);
if (ret < 0)
    /* Something went wrong, check the value of ret! */
?
ret = AD717X_ReadData(my_ad7176_2, &sample);
if (ret < 0)
        /* Something went wrong, check the value of ret! */

More information

01 Jun 2012 12:17
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1491次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  4次下載  |  免費
  15. 8基于AT89C2051/4051單片機編程器的實驗
  16. 0.11 MB  |  4次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537793次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費
主站蜘蛛池模板: 国产精品久久久亚洲偷窥女厕| WWW亚洲精品久久久乳| 欧美乱妇15p图| 久久视频在线视频观看精品15| 国产乱妇乱子在线播视频播放网站 | 青草影院天堂男人久久| 蜜柚影院在线观看免费高清中文 | 午夜免费体验30分| 天天插天天射天天干| 日韩精品免费在线观看| 秋葵app秋葵官网18在线观看| 青青草原国产在线观看| 欧美自拍亚洲综合图区| 欧美一区二区视频97色伦| 青柠在线观看视频在线| 日本一本道高清码v| 色琪琪无码成人AV视频| 我和黑帮老大第365天第2季在线 | 午理论理影片被窝| 午夜aaaa| 亚洲精品久久久久69影院| 亚洲手机在线人成视频| 伊人久久精品99热超碰| 综合亚洲桃色第一影院| 99久久e免费热视频百度| 草神被爆漫画羞羞漫画| 国产成人片视频一区二区青青| 国产精品国产三级国产AV麻豆| 国产亚洲精品久久久久久国| 精品香蕉99久久久久网站| 啦啦啦 中文 日本 韩国 免费| 男女全黄h全肉细节文| 日本精品久久久久中文字幕2 | 国产精品99精品无码视亚| 國産麻豆AVMDMD0179| 久久精品日本免费线| 奶头好翘是不是想要了| 三级中国免费的| 亚洲男同tv| 8x8x我要打机飞在线观看| 宝贝你骚死哥了好爽|