add ADS1256_config
This commit is contained in:
parent
0e40b75bfc
commit
62a60f0308
|
@ -0,0 +1,259 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from ADS1256_definitions import *
|
||||
################ Raspberry Pi Physical Interface Properties #################
|
||||
# SPI bus configuration and GPIO pins used for the ADS1255/ADS1256.
|
||||
# These defaults are used by the constructor of the ADS1256 class.
|
||||
#
|
||||
# To create multiple class instances for more than one AD converter, a unique
|
||||
# configuration must be specified as argument for each instance.
|
||||
#
|
||||
# The following pins are compatible
|
||||
# with the Waveshare High Precision AD/DA board on the Raspberry Pi 2B and 3B
|
||||
#
|
||||
# SPI_CHANNEL corresponds to the chip select hardware bin controlled by the
|
||||
# SPI hardware. For the Waveshare board this pin is not even connected, so this
|
||||
# code does not use hardware-controlled CS and this is a don't care value.
|
||||
# FIXME: Implement hardware chip select as an option.
|
||||
SPI_CHANNEL = 1
|
||||
# SPI_MODE specifies clock polarity and phase; MODE=1 <=> CPOL=0, CPHA=1
|
||||
SPI_MODE = 1
|
||||
# SPI clock rate in Hz. The ADS1256 supports a minimum of 1/10th of the output
|
||||
# sample data rate in Hz to 1/4th of the oscillator CLKIN_FREQUENCY which
|
||||
# results in a value of 1920000 Hz for the Waveshare board. However, since
|
||||
# the Raspberry pi only supports power-of-two fractions of the 250MHz system
|
||||
# clock, the closest value would be 1953125 Hz, which is slightly out of spec
|
||||
# for the ADS1256. Choosing 250MHz/256 = 976563 Hz is a safe choice.
|
||||
SPI_FREQUENCY = 976563
|
||||
# Risking the slightly out-of-spec speed:
|
||||
#SPI_FREQUENCY = 1953125
|
||||
|
||||
# The RPI GPIOs used: All of these are optional and must be set to None if not
|
||||
# used. In This case, the inputs must be hardwired to the correct logic level
|
||||
# and a sufficient DRDY_TIMEOUT must be specified further below.
|
||||
# Obviously, when not using hardware polling of the DRDY signal, acquisition
|
||||
# will be much slower with long delays. See datasheet..
|
||||
#CS_PIN = None
|
||||
CS_PIN = 15
|
||||
DRDY_PIN = 11
|
||||
RESET_PIN = 12
|
||||
PDWN_PIN = 13
|
||||
###############################################################################
|
||||
|
||||
################## ADS1256 Constant Configuration Settings ###################
|
||||
# Seconds to wait in case DRDY pin is not connected or the chip
|
||||
# does not respond. See table 21 of ADS1256 datasheet: When using a
|
||||
# sample rate of 2.5 SPS and issuing a self calibration command,
|
||||
# the timeout can be up to 1228 milliseconds:
|
||||
DRDY_TIMEOUT = 2
|
||||
# Optional delay in seconds to avoid busy wait and reduce CPU load when
|
||||
# polling the DRDY pin. Default is 0.000001 or 1 µs (timing not accurate)
|
||||
DRDY_DELAY = 0.000001
|
||||
# Master clock rate in Hz. Default is 7680000:
|
||||
CLKIN_FREQUENCY = 7680000
|
||||
################################################################################
|
||||
|
||||
|
||||
# All following settings are accessible through ADS1256 class properties
|
||||
|
||||
############## ADS1256 Default Runtime Adjustable Properties #################
|
||||
# Analog reference voltage between VREFH and VREFN pins
|
||||
v_ref = 2.5
|
||||
# Gain seting of the integrated programmable amplifier. This value must be
|
||||
# one of (GAIN_1, GAIN_2, GAIN_4, GAIN_8, GAIN_16, GAIN_32, GAIN_64).
|
||||
# Gain = 1, V_ref = 2.5V ==> full-scale input voltage = 5.00V, corresponding
|
||||
# to a 24-bit two's complement output value of 2**23 - 1 = 8388607
|
||||
gain_flags = GAIN_1
|
||||
################################################################################
|
||||
|
||||
#################### ADS1256 Default Register Settings #######################
|
||||
# REG_STATUS:
|
||||
# When enabling the AUTOCAL flag: Any following operation that changes
|
||||
# PGA GAIN, DRATE or BUFFER flags triggers a self calibration:
|
||||
# THIS REQUIRES an additional timeout via WaitDRDY() after each such operation.
|
||||
# Note: BUFFER_ENABLE means the ADC input voltage range is limited
|
||||
# to (AVDD-2V),see datasheet
|
||||
status = BUFFER_ENABLE
|
||||
# REG_MUX:
|
||||
# Default: positive input = AIN0, negative input = AINCOM
|
||||
mux = POS_AIN0 | NEG_AINCOM
|
||||
# REG_ADCON:
|
||||
# Disable clk out signal (not needed, source of disturbance),
|
||||
# sensor detect current sources disabled, gain setting as defined above:
|
||||
adcon = CLKOUT_OFF | SDCS_OFF | gain_flags
|
||||
# REG_DRATE:
|
||||
# 10 SPS places a filter zero at 50 Hz and 60 Hz for line noise rejection
|
||||
drate = DRATE_10
|
||||
# REG_IO: No GPIOs needed
|
||||
gpio = 0x00
|
||||
################################################################################
|
||||
|
||||
|
||||
"""########### Extended Description: ADS1256 Registers ###############
|
||||
Logically OR all desired option values together to form a 1 byte command
|
||||
and write it to the respective register
|
||||
|
||||
Available Registers with address definitions:
|
||||
REG_STATUS = 0x00
|
||||
REG_MUX = 0x01
|
||||
REG_ADCON = 0x02
|
||||
REG_DRATE = 0x03
|
||||
REG_IO = 0x04
|
||||
REG_OFC0 = 0x05
|
||||
REG_OFC1 = 0x06
|
||||
REG_OFC2 = 0x07
|
||||
REG_FSC0 = 0x08
|
||||
REG_FSC1 = 0x09
|
||||
REG_FSC2 = 0x0A
|
||||
|
||||
|
||||
==> REG_STATUS, Status Register Configuration:
|
||||
|
||||
Bits 7-4: ID3, ID2, ID1, ID0 Factory Programmed Identification Bits
|
||||
(Read Only)
|
||||
|
||||
Bit 3 ORDER: Data Output Bit Order
|
||||
|
||||
0 = Most Significant Bit First (default)
|
||||
1 = Least Significant Bit First
|
||||
|
||||
Input data is always shifted in most significant byte and bit first.
|
||||
Output data is always shifted out most significant byte first. The
|
||||
ORDER bit only controls the bit order of the output data within the
|
||||
byte.
|
||||
|
||||
Bit 2 ACAL: Auto-Calibration
|
||||
|
||||
0 = Auto-Calibration Disabled (default)
|
||||
1 = Auto-Calibration Enabled
|
||||
|
||||
When Auto-Calibration is enabled, self-calibration begins at the
|
||||
completion of the WREG command that changes the PGA (bits 0-2 of ADCON
|
||||
register), DR (bits 7-0 in the DRATE register) or BUFEN (bit 1 in the
|
||||
STATUS register) values.
|
||||
|
||||
THIS REQUIRES that an additional timeout (DREADY polling)
|
||||
is implemented after each such operation!
|
||||
|
||||
|
||||
Bit 1 BUFEN: Analog Input Buffer Enable
|
||||
|
||||
0 = Buffer Disabled (default)
|
||||
1 = Buffer Enabled
|
||||
|
||||
Bit 0 DRDY: Data Ready (Read Only)
|
||||
|
||||
This bit duplicates the state of the DRDY pin, which is inverted logic.
|
||||
|
||||
Option value definitions:
|
||||
BUFFER_ENABLE = 0x02
|
||||
AUTOCAL_ENABLE = 0x04
|
||||
ORDER_LSB = 0x08
|
||||
|
||||
|
||||
==> REG_MUX, Input multiplexer register, channel selection:
|
||||
|
||||
High nibble selects positive input, low nibble negative input.
|
||||
|
||||
Pin selection codes: logic OR together to form the register value.
|
||||
Example: ads1256.mux = POS_AIN0 | NEG_AINCOM
|
||||
|
||||
# Pin selection codes for the positive input:
|
||||
POS_AIN0 = 0x00
|
||||
POS_AIN1 = 0x10
|
||||
POS_AIN2 = 0x20
|
||||
POS_AIN3 = 0x30
|
||||
POS_AIN4 = 0x40
|
||||
POS_AIN5 = 0x50
|
||||
POS_AIN6 = 0x60
|
||||
POS_AIN7 = 0x70
|
||||
POS_AINCOM = 0x80
|
||||
# Pin selection codes for the negative input:
|
||||
NEG_AIN0 = 0x00
|
||||
NEG_AIN1 = 0x01
|
||||
NEG_AIN2 = 0x02
|
||||
NEG_AIN3 = 0x03
|
||||
NEG_AIN4 = 0x04
|
||||
NEG_AIN5 = 0x05
|
||||
NEG_AIN6 = 0x06
|
||||
NEG_AIN7 = 0x07
|
||||
NEG_AINCOM = 0x08
|
||||
|
||||
|
||||
==> REG_ADCON, A/D Control Register
|
||||
|
||||
Bit 7 Reserved, always 0 (Read Only)
|
||||
|
||||
Bits 6-5 CLK1, CLK0: D0/CLKOUT Clock Out Rate Setting
|
||||
|
||||
00 = Clock Out OFF
|
||||
01 = Clock Out Frequency = fCLKIN (default)
|
||||
10 = Clock Out Frequency = fCLKIN/2
|
||||
11 = Clock Out Frequency = fCLKIN/4
|
||||
|
||||
When not using CLKOUT, it is recommended that it be turned off. These
|
||||
bits can only be reset using the RESET pin.
|
||||
|
||||
Bits 4-3 SDCS1, SCDS0: Sensor Detect Current Sources
|
||||
|
||||
00 = Sensor Detect OFF (default)
|
||||
01 = Sensor Detect Current = 0.5uA
|
||||
10 = Sensor Detect Current = 2uA
|
||||
11 = Sensor Detect Current = 10uA
|
||||
|
||||
The Sensor Detect Current Sources can be activated to verify the
|
||||
integrity of an external sensor supplying a signal to the ADS1255/6.
|
||||
A shorted sensor produces a very small signal while an open-circuit
|
||||
sensor produces a very large signal.
|
||||
|
||||
Bits 2-0 PGA2, PGA1, PGA0: Programmable Gain Amplifier Setting
|
||||
|
||||
Option value definitions:
|
||||
# Clock output pin setting
|
||||
CLKOUT_OFF = 0x00
|
||||
CLKOUT_EQUAL = 0x20
|
||||
CLKOUT_HALF = 0x40
|
||||
CLKOUT_FOURTH = 0x60
|
||||
|
||||
# Sensor Detect Current Source
|
||||
SDCS_OFF = 0x00
|
||||
SDCS_500pA = 0x08
|
||||
SDCS_2uA = 0x10
|
||||
SDCS_10uA = 0x18
|
||||
|
||||
# Gain level flag bits definitions:
|
||||
GAIN_1 = 0x00
|
||||
GAIN_2 = 0x01
|
||||
GAIN_4 = 0x02
|
||||
GAIN_8 = 0x03
|
||||
GAIN_16 = 0x04
|
||||
GAIN_32 = 0x05
|
||||
GAIN_64 = 0x06
|
||||
|
||||
|
||||
==> DRATE Register: A/D Data Rate Address 0x03
|
||||
|
||||
Bits 7-0 DR[7: 0]: Data Rate Setting(1)
|
||||
The 16 valid Data Rate settings. Only these are valid.
|
||||
|
||||
Sample rate definitions for CLKIN_FREQUENCY = 7.68 MHz (fCLKIN).
|
||||
Actual sample rates scale linearly with differing clock rates.
|
||||
|
||||
DRATE_30000 = 0b11110000 # 30,000SPS (default)
|
||||
DRATE_15000 = 0b11100000 # 15,000SPS
|
||||
DRATE_7500 = 0b11010000 # 7,500SPS
|
||||
DRATE_3750 = 0b11000000 # 3,750SPS
|
||||
DRATE_2000 = 0b10110000 # 2,000SPS
|
||||
DRATE_1000 = 0b10100001 # 1,000SPS
|
||||
DRATE_500 = 0b10010010 # 500SPS
|
||||
DRATE_100 = 0b10000010 # 100SPS
|
||||
DRATE_60 = 0b01110010 # 60SPS
|
||||
DRATE_50 = 0b01100011 # 50SPS
|
||||
DRATE_30 = 0b01010011 # 30SPS
|
||||
DRATE_25 = 0b01000011 # 25SPS
|
||||
DRATE_15 = 0b00110011 # 15SPS
|
||||
DRATE_10 = 0b00100011 # 10SPS
|
||||
DRATE_5 = 0b00010011 # 5SPS
|
||||
DRATE_2_5 = 0b00000011 # 2.5SPS
|
||||
"""
|
||||
|
||||
|
Loading…
Reference in New Issue