本文整理汇总了Python中Adafruit_BBIO.SPI.SPI.xfer2方法的典型用法代码示例。如果您正苦于以下问题:Python SPI.xfer2方法的具体用法?Python SPI.xfer2怎么用?Python SPI.xfer2使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Adafruit_BBIO.SPI.SPI
的用法示例。
在下文中一共展示了SPI.xfer2方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: print_single_status_line
# 需要导入模块: from Adafruit_BBIO.SPI import SPI [as 别名]
# 或者: from Adafruit_BBIO.SPI.SPI import xfer2 [as 别名]
#.........这里部分代码省略.........
time.sleep(45 / 10000.0) # 4.5 ms
else:
time.sleep(130 / 1000000.0) # 130us
def ce(self, level, pulse=0):
""" Controls CE pin """
# CE Pin is optional (but highly recommended)
if self.ce_pin is not None:
GPIO.output(self.ce_pin, level)
if pulse > 0:
time.sleep(pulse)
GPIO.output(self.ce_pin, 1 - level)
def irqWait(self, timeout=30000):
""" Wait for IRQ pin LOW, timeout in miliseconds """
if self.irq_pin is None:
return True
# TODO: A race condition may occur here. => wait for level?
if GPIO.input(self.irq_pin) == 0: # Pin is already down. Packet is waiting?
return True
try:
return GPIO.wait_for_edge(self.irq_pin, GPIO.FALLING, timeout) == 1
except TypeError: # Timeout parameter not supported
return GPIO.wait_for_edge(self.irq_pin, GPIO.FALLING) == 1
except AttributeError:
raise RuntimeError("GPIO lib does not support wait_for_edge()")
def read_register(self, reg, length=1):
""" Read one or more registers """
buf = [NRF24.R_REGISTER | (NRF24.REGISTER_MASK & reg)]
buf += [NRF24.NOP] * max(1, length)
resp = self.spidev.xfer2(buf)
if length == 1:
return resp[1]
return resp[1:]
def write_register(self, reg, value):
""" Write register value """
buf = [NRF24.W_REGISTER | (NRF24.REGISTER_MASK & reg)]
buf += self._to_8b_list(value)
self.spidev.xfer2(buf)
def write_payload(self, buf):
""" Writes data to the payload register, automatically padding it
to match the required length. Returns the number of bytes
actually written. """
buf = self._to_8b_list(buf)
if self.dynamic_payloads_enabled:
if len(buf) > self.MAX_PAYLOAD_SIZE:
raise RuntimeError("Dynamic payload is larger than the " +
"maximum size.")
blank_len = 0
else:
if len(buf) > self.payload_size:
raise RuntimeError("Payload is larger than the fixed payload" +
"size (%d vs. %d bytes)" % (len(buf), self.payload_size))
blank_len = self.payload_size - len(buf)
txbuffer = [NRF24.W_TX_PAYLOAD] + buf + ([0x00] * blank_len)
self.spidev.xfer2(txbuffer)
return len(txbuffer) - 1
def read_payload(self, buf, buf_len=-1):
示例2: SPI
# 需要导入模块: from Adafruit_BBIO.SPI import SPI [as 别名]
# 或者: from Adafruit_BBIO.SPI.SPI import xfer2 [as 别名]
#!/usr/bin/python
from Adafruit_BBIO.SPI import SPI
spi = SPI(0,0)
spi.lsbfirst=False
spi.msh=1000000
spi.cshigh=False
spi.xfer2([0x36])
spi.cshigh=True
for reg in range(0x0,0x3d+1,1):
spi.cshigh=False
send = [ reg+0xc0 , 0x0 ]
recv = spi.xfer2(send)
spi.cshigh=True
print reg,recv
patable=9*[0]
patable[0]=0x3e+0xc0
spi.cshigh=False
dd = spi.xfer2(patable)
spi.cshigh=True
print 0x3e,dd
rxfifo=65*[0]
rxfifo[0]=0x3f+0xc0
示例3: __init__
# 需要导入模块: from Adafruit_BBIO.SPI import SPI [as 别名]
# 或者: from Adafruit_BBIO.SPI.SPI import xfer2 [as 别名]
#.........这里部分代码省略.........
self.wide_band = False # 2Mbs data rate in use?
self.p_variant = False # False for RF24L01 and true for RF24L01P
self.payload_size = 5 #*< Fixed size of payloads
self.ack_payload_available = False #*< Whether there is an ack payload waiting
self.dynamic_payloads_enabled = False #*< Whether dynamic payloads are enabled.
self.ack_payload_length = 5 #*< Dynamic size of pending ack payload.
self.pipe0_reading_address = None #*< Last address set on pipe 0 for reading.
self.spidev = None
def ce(self, level):
if level == NRF24.HIGH:
GPIO.output(self.ce_pin, GPIO.HIGH)
else:
GPIO.output(self.ce_pin, GPIO.LOW)
return
def irqWait(self, timeout = 30000):
# CHANGE: detect module name because wait_for_edge is not available in
# other libraries
if GPIO.__name__ != "Adafruit_BBIO.GPIO":
return False
# TODO: A race condition may occur here.
if GPIO.input(self.irq_pin) == 0: # Pin is already down. Packet is waiting?
return True
return GPIO.wait_for_edge(self.irq_pin, GPIO.FALLING, timeout) == 1
def read_register(self, reg, blen=1):
buf = [NRF24.R_REGISTER | ( NRF24.REGISTER_MASK & reg )]
for col in range(blen):
buf.append(NRF24.NOP)
resp = self.spidev.xfer2(buf)
if blen == 1:
return resp[1]
return resp[1:blen + 1]
def write_register(self, reg, value, length=-1):
buf = [NRF24.W_REGISTER | ( NRF24.REGISTER_MASK & reg )]
if isinstance(value, (int, long)):
if length < 0:
length = 1
length = min(4, length)
for i in range(length):
buf.insert(1, int(value & 0xff))
value >>= 8
elif isinstance(value, list):
if length < 0:
length = len(value)
for i in range(min(len(value), length)):
buf.append(int(value[len(value) - i - 1] & 0xff))
else:
raise Exception("Value must be int or list")
return self.spidev.xfer2(buf)[0]
def write_payload(self, buf):
data_len = min(self.payload_size, len(buf))
blank_len = 0
if not self.dynamic_payloads_enabled:
示例4: print_single_status_line
# 需要导入模块: from Adafruit_BBIO.SPI import SPI [as 别名]
# 或者: from Adafruit_BBIO.SPI.SPI import xfer2 [as 别名]
#.........这里部分代码省略.........
self.clear_irq_flags()
# Restore the pipe0 address, if exists
if self.pipe0_reading_address:
self.write_register(self.RX_ADDR_P0, self.pipe0_reading_address)
# Go!
self.ce(1)
def ce(self, level, pulse=0):
# CE Pin is optional
if self.ce_pin is not None:
GPIO.output(self.ce_pin, level)
if pulse > 0:
time.sleep(pulse)
GPIO.output(self.ce_pin, 1 - level)
def irqWait(self, timeout=30000):
# TODO: A race condition may occur here. => wait for level?
if GPIO.input(self.irq_pin) == 0: # Pin is already down. Packet is waiting?
return True
try:
return GPIO.wait_for_edge(self.irq_pin, GPIO.FALLING, timeout) == 1
except TypeError: # Timeout parameter not supported
return GPIO.wait_for_edge(self.irq_pin, GPIO.FALLING) == 1
except AttributeError:
raise RuntimeError("GPIO lib does not support wait_for_edge()")
def read_register(self, reg, length=1):
buf = [NRF24.R_REGISTER | (NRF24.REGISTER_MASK & reg)]
buf += [NRF24.NOP] * max(1, length)
resp = self.spidev.xfer2(buf)
if length == 1:
return resp[1]
return resp[1:]
def write_register(self, reg, value):
""" Write register value """
buf = [NRF24.W_REGISTER | (NRF24.REGISTER_MASK & reg)]
buf += self._to_8b_list(value)
self.spidev.xfer2(buf)
def write_payload(self, buf):
""" Writes data to the payload register, automatically padding it
to match the required length. Returns the number of bytes
actually written. """
buf = self._to_8b_list(buf)
if self.dynamic_payloads_enabled:
if len(buf) > self.MAX_PAYLOAD_SIZE:
raise RuntimeError("Dynamic payload is larger than the " +
"maximum size.")
blank_len = 0
else:
if len(buf) > self.payload_size:
raise RuntimeError("Payload is larger than the fixed payload" +
"size (%d vs. %d bytes)" % (len(buf), self.payload_size))
blank_len = self.payload_size - len(buf)
txbuffer = [NRF24.W_TX_PAYLOAD] + buf + ([0x00] * blank_len)
self.spidev.xfer2(txbuffer)
return len(txbuffer) - 1
示例5: open
# 需要导入模块: from Adafruit_BBIO.SPI import SPI [as 别名]
# 或者: from Adafruit_BBIO.SPI.SPI import xfer2 [as 别名]
spi.open(0,0)
#spi.msh = 100000
spi.bpw = 8
#spi.mode = b00
try:
#while True:
# set CS bit high, choose first channel to read from
#channel = 0;
#adc = spi.xfer([1,8,0])
#data = ((adc[1]&3) << 8) + adc[2]
channelSelect = 0xC0
channelSelect |= 0x18
channelSelect <<= 3
fsr = spi.xfer2([channelSelect, 0x00, 0x00])
#result = spi.readbytes(2)
#result2 = spi.readbytes(1)
resultFinal = 0x0000
resultFinal = 0x0300 & (resultFinal | (fsr[1] << 8 ))
resultFinal |= ( ( 0x00FF & fsr[2]) )
#print (8 + channel ) << 4
#print resultFinal
###################################
####################################
resultFinal = 1 #temp
file = open('methane_test.txt', 'r')
data = []
#data.append(str(resultFinal) + '\n')
示例6: SPI
# 需要导入模块: from Adafruit_BBIO.SPI import SPI [as 别名]
# 或者: from Adafruit_BBIO.SPI.SPI import xfer2 [as 别名]
from Adafruit_BBIO.SPI import SPI
spi = SPI(1,0)
spi.mode=2
spi.msh=2000000
spi.open(1,0)
print spi.xfer2([32, 11, 110, 22, 220])
spi.close()