import spidev
import RPi.GPIO as GPIO
import time
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
def StartUp():
GPIO.setmode(GPIO.BCM)
PRESET = 25
IO4 = 26
GPIO.setup(PRESET,GPIO.OUT)
GPIO.setup(IO4,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
print "Reset 25 - Low 1s"
GPIO.output(PRESET,GPIO.LOW)
time.sleep(3)
print "Reset 25 - High 0.2s"
GPIO.output(PRESET,GPIO.HIGH)
time.sleep(0.2)
spi = spidev.SpiDev()
spi.open(0,1)
spi.mode = 0b00
print "spi.cshigh is " + str(spi.cshigh)
print "spi mode is " + str(spi.mode)
spi.max_speed_hz = 2000000
print "spi maxspeed is "+str(spi.max_speed_hz)+"hz"
return spi
def TestSPI(spi,ncycles):
i = 0
while i < ncycles:
WriteFPGA(spi,0xEB,0x01)
time.sleep(0.5)
WriteFPGA(spi,0xEB,0x00)
time.sleep(0.5)
i = i+1
def LoopSPI(spi):
while 1:
WriteFPGA(spi,0xEB,0x01)
WriteFPGA(spi,0xEB,0x00)
def LoopAcq(spi):
while 1:
WriteFPGA(spi,0xEB,0x00)
WriteFPGA(spi,0xEF,0x01)
WriteFPGA(spi,0xEA,0x01)
time.sleep(0.1)
def ClearMem(spi):
WriteFPGA(spi,0xEF,0x01)
def ConfigSPI(spi):
WriteFPGA(spi,0xE0,0x14)
WriteFPGA(spi,0xE1,0x00)
WriteFPGA(spi,0xE2,0x35)
WriteFPGA(spi,0xE3,0x00)
WriteFPGA(spi,0xE4,0x05)
WriteFPGA(spi,0xE5,0x32)
WriteFPGA(spi,0xE6,0xC8)
WriteFPGA(spi,0xE7,0x01)
WriteFPGA(spi,0xE8,0x86)
WriteFPGA(spi,0xE9,0xA0)
WriteFPGA(spi,0xEB,0x00)
WriteFPGA(spi,0xEC,0x11)
WriteFPGA(spi,0xED,0x02)
WriteFPGA(spi,0xEE,0xA0)
print "Config FPGA done!"
def WriteFPGA(spi,adress,value):
spi.xfer([0xAA] )
spi.xfer([adress] )
spi.xfer([value] )
Fech = 1/((0+1)*(1.0/64))
print "-> "+str( Fech ) + " Msps"
Nacq = 0x32C8/100 * Fech
print "-> "+str(Nacq) + ' samples'
-> 64.0 Msps
-> 8320.0 samples
spi = StartUp()
ConfigSPI(spi)
Reset 25 - Low 1s
Reset 25 - High 0.2s
spi.cshigh is False
spi mode is 0
spi maxspeed is 2000000hz
Config FPGA done!
LoopSPI(spi)
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
<ipython-input-41-23bdeb98f791> in <module>()
----> 1 LoopSPI(spi)
<ipython-input-38-b319c34f73c3> in LoopSPI(spi)
43 while 1:
44 WriteFPGA(spi,0xEB,0x01) # 0: single mode 1 continious mode
---> 45 WriteFPGA(spi,0xEB,0x00) # 0: single mode 1 continious mode
46
47 def LoopAcq(spi):
<ipython-input-38-b319c34f73c3> in WriteFPGA(spi, adress, value)
74
75 def WriteFPGA(spi,adress,value):
---> 76 spi.xfer([0xAA] )
77 spi.xfer([adress] )
78 spi.xfer([value] )
KeyboardInterrupt:
LoopAcq(spi)
TestSPI(spi,3)
WriteFPGA(spi,0xEB,0x00)
WriteFPGA(spi,0xEF,0x01)
WriteFPGA(spi,0xEA,0x01)
time.sleep(0.2)
spi.max_speed_hz = 80*100000
spi.mode = 0b00
A = []
nAcq = 2500*2
for i in range(nAcq+1):
A.append ( spi.xfer([0x00] )[0] )
a = np.asarray(A)
np.savetxt( "y-"+str(spi.mode)+"-"+str(nAcq)+"-"+str(spi.max_speed_hz)+".csv", a, delimiter=";")
spi.close()