Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 19 additions & 30 deletions RaspberryPI/AD-DA/python/ADS1256.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import config
import RPi.GPIO as GPIO


ScanMode = 0


# gain channel
ADS1256_GAIN_E = {'ADS1256_GAIN_1' : 0, # GAIN 1
'ADS1256_GAIN_2' : 1, # GAIN 2
Expand Down Expand Up @@ -129,27 +125,21 @@ def ADS1256_ConfigADC(self, gain, drate):
config.digital_write(self.cs_pin, GPIO.HIGH)#cs 1
config.delay_ms(1)


def ADS1256_SetMode(self,Mode):
self.ScanMode=Mode

def ADS1256_SetChannal(self, Channal):
if Channal > 7:
if Channal>7:
return 0
self.ADS1256_WriteReg(REG_E['REG_MUX'], (Channal<<4) | (1<<3))
self.ADS1256_WriteReg(REG_E['REG_MUX'],(Channal<<4)|(1<<3))

def ADS1256_SetDiffChannal(self, Channal):
if Channal == 0:
self.ADS1256_WriteReg(REG_E['REG_MUX'], (0 << 4) | 1) #DiffChannal AIN0-AIN1
elif Channal == 1:
self.ADS1256_WriteReg(REG_E['REG_MUX'], (2 << 4) | 3) #DiffChannal AIN2-AIN3
elif Channal == 2:
self.ADS1256_WriteReg(REG_E['REG_MUX'], (4 << 4) | 5) #DiffChannal AIN4-AIN5
elif Channal == 3:
self.ADS1256_WriteReg(REG_E['REG_MUX'], (6 << 4) | 7) #DiffChannal AIN6-AIN7

def ADS1256_SetMode(self, Mode):
ScanMode = Mode
if Channal>3:
return 0
self.ADS1256_WriteReg(REG_E['REG_MUX'],((2*Channal)<<4)|(2*Channal+1)) #DiffChannal set

def ADS1256_init(self):
self.ADS1256_SetMode(0)
if (config.module_init() != 0):
return -1
self.ADS1256_reset()
Expand All @@ -166,7 +156,6 @@ def ADS1256_Read_ADC_Data(self):
self.ADS1256_WaitDRDY()
config.digital_write(self.cs_pin, GPIO.LOW)#cs 0
config.spi_writebyte([CMD['CMD_RDATA']])
# config.delay_ms(10)

buf = config.spi_readbytes(3)
config.digital_write(self.cs_pin, GPIO.HIGH)#cs 1
Expand All @@ -178,30 +167,30 @@ def ADS1256_Read_ADC_Data(self):
return read

def ADS1256_GetChannalValue(self, Channel):
if(ScanMode == 0):# 0 Single-ended input 8 channel1 Differential input 4 channe
if(Channel>=8):
if self.ScanMode == 0:# 0 Single-ended input 8 channel 1 Differential input 4 channel
if Channel>7:
return 0
self.ADS1256_SetChannal(Channel)
self.ADS1256_WriteCmd(CMD['CMD_SYNC'])
# config.delay_ms(10)
self.ADS1256_WriteCmd(CMD['CMD_WAKEUP'])
# config.delay_ms(200)
Value = self.ADS1256_Read_ADC_Data()
else:
if(Channel>=4):
if(Channel>3):
return 0
self.ADS1256_SetDiffChannal(Channel)
self.ADS1256_WriteCmd(CMD['CMD_SYNC'])
# config.delay_ms(10)
self.ADS1256_WriteCmd(CMD['CMD_WAKEUP'])
# config.delay_ms(10)
Value = self.ADS1256_Read_ADC_Data()
return Value

def ADS1256_GetAll(self):
ADC_Value = [0,0,0,0,0,0,0,0]
for i in range(0,8,1):
ADC_Value[i] = self.ADS1256_GetChannalValue(i)
if self.ScanMode==0:
ADC_Value = [0,0,0,0,0,0,0,0]
for i in range(0,8,1):
ADC_Value[i] = self.ADS1256_GetChannalValue(i)
else:
ADC_Value=[0,0,0,0]
for i in range(0,4,1):
ADC_Value[i]=self.ADS1256_GetChannalValue(i)
return ADC_Value
### END OF FILE ###

5 changes: 1 addition & 4 deletions RaspberryPI/AD-DA/python/DAC8532.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,12 @@

DAC_Value_MAX = 65535

DAC_VREF = 3.3
DAC_VREF = 5.0

class DAC8532:
def __init__(self):
self.cs_pin = config.CS_DAC_PIN
# config.module_init()


def DAC8532_Write_Data(self, Channel, Data):
config.digital_write(self.cs_pin, GPIO.LOW)#cs 0
config.spi_writebyte([Channel, Data >> 8, Data & 0xff])
Expand All @@ -26,4 +24,3 @@ def DAC8532_Out_Voltage(self, Channel, Voltage):
self.DAC8532_Write_Data(Channel, temp)

### END OF FILE ###

21 changes: 11 additions & 10 deletions RaspberryPI/AD-DA/python/main.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
#!/usr/bin/python
#!/usr/bin/python3
# -*- coding:utf-8 -*-

import time
import ADS1256
import DAC8532
import RPi.GPIO as GPIO

ADC = ADS1256.ADS1256()
DAC = DAC8532.DAC8532()
ADC.ADS1256_init()

try:
ADC = ADS1256.ADS1256()
DAC = DAC8532.DAC8532()
ADC.ADS1256_init()

DAC.DAC8532_Out_Voltage(0x30, 3)
DAC.DAC8532_Out_Voltage(0x34, 3)

while(1):

ADC_Value = ADC.ADS1256_GetAll()
print ("0 ADC = %lf"%(ADC_Value[0]*5.0/0x7fffff))
print ("1 ADC = %lf"%(ADC_Value[1]*5.0/0x7fffff))
Expand All @@ -29,9 +27,12 @@
print ("DAC :",temp)
print ("\33[10A")
DAC.DAC8532_Out_Voltage(DAC8532.channel_A, temp)
DAC.DAC8532_Out_Voltage(DAC8532.channel_B, 3.3 - temp)
DAC.DAC8532_Out_Voltage(DAC8532.channel_B, 5.0 - temp)

except:

except :
DAC.DAC8532_Out_Voltage(DAC8532.channel_A,0)
DAC.DAC8532_Out_Voltage(DAC8532.channel_B,0)
GPIO.cleanup()
print ("\r\nProgram end ")
exit()