Select Git revision
reporting.py
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
SPIbitbang1.py 2.19 KiB
from I2Cdevices import *;
import numpy as np
class SPIbitbang1(I2Cdevices):
def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0):
SPI=Find(self.D['I2C_devices'],'dev_name',dev)
Reg=Find(SPI['dev_registers'],'reg_name',reg)
ADC_address=Reg['reg_addr']
SetBit=I2Ccallback
ADC_bytes = 0x00
ADC_rw = 0x00 # 0 for write, 1 for read
data2 = ( ADC_rw << 23 ) + ( ADC_bytes << 21 ) + ( ADC_address << 8 ) + value[0]
bit_array = "{0:{fill}24b}".format(data2, fill='0')
# print(bit_array)
SetBit('CS',0) #enable
for bit in bit_array:
SetBit('SDO',int(bit))
SetBit('CLK',1)
SetBit('CLK',0)
SetBit('CS',1)
return True;
def I2CGet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0):
SPI=Find(self.D['I2C_devices'],'dev_name',dev)
Reg=Find(SPI['dev_registers'],'reg_name',reg)
ADC_reg_address=Reg['reg_addr']
# print(ADC_reg_address,CS,SDIOdir,SDI,SDO,CLK)
SetBit=I2Ccallback
ADC_bytes = 0x00
ADC_rw = 0x01 # 0 for write, 1 for read
data = ( ADC_rw << 15) + ( ADC_bytes << 13 ) + ADC_reg_address
SetBit('CS',0) #enable
bit_array = "{0:{fill}16b}".format(data, fill='0')
for bit in bit_array:
SetBit('SDO',int(bit))
SetBit('CLK',1)
SetBit('CLK',0)
SetBit('CS',1) #disable
# print("read byte")
SetBit('SDIOdir',1) #inpute
SetBit('CS',0) #enable
a=[0]
read_bit = ''
for cnt in range(8*(ADC_bytes+1)):
ret_value=SetBit('SDI',0,True)
read_bit += str(ret_value)
SetBit('CLK',1)
SetBit('CLK',0) #read after falling edge
SetBit('CS',1) #disable
SetBit('SDIOdir',0) #output
# SetBit(SDO,1)
# SetBit(CLK,1)
# print(read_bit)
# stri = "Read back data is: {0:2x} ".format(int(read_bit, 2))
# print(stri)
value[0]=int(read_bit, 2)
return True;