Skip to content
Snippets Groups Projects
Select Git revision
  • 07ebc1f4ed24d452f4675a4165a6ab6224b81a20
  • MCCS-163 default
  • main
  • sar-277-update-docs-with-examples-for-lrc
  • st-946-automate
  • sar_302-log-fix
  • sar-287_subarray_commands_to_lrc
  • sar_302-POC_await_sub_device_state
  • sat_302_fix_pipelines
  • sar-286_lrc_one_subarry_command
  • sar-286_lrc_improvements
  • sar-288-async-controller
  • sar-276-combine-tango-queue
  • sar-255_remove_nexus_reference
  • sar-275-add-LRC
  • sar-273-add-lrc-attributes
  • sar-272
  • sp-1106-marvin-1230525148-ska-tango-base
  • sp-1106-marvin-813091765-ska-tango-base
  • sar-255/Publish-package-to-CAR
  • mccs-661-device-under-test-fixture
  • mccs-659-pep257-docstring-linting
  • 0.11.3
  • 0.11.2
  • 0.11.1
  • 0.11.0
  • 0.10.1
  • 0.10.0
  • 0.9.1
  • 0.9.0
  • 0.8.1
  • 0.8.0
  • 0.7.2
  • 0.7.1
  • 0.7.0
  • 0.6.6
  • 0.6.5
  • 0.6.4
  • 0.6.3
  • 0.6.2
  • 0.6.1
  • 0.6.0
42 results

capability_device.rst

Blame
  • 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;