from pyb import SPI spi = SPI(1) print(spi) spi = SPI(1, SPI.MASTER) spi = SPI(1, SPI.MASTER, baudrate=500000) spi = SPI(1, SPI.MASTER, 500000, polarity=1, phase=0, bits=8, firstbit=SPI.MSB, ti=False, crc=None) print(spi) spi.init(SPI.SLAVE, phase=1) print(spi) spi.init(SPI.MASTER) spi.send(1, timeout=100) print(spi.recv(1, timeout=100)) print(spi.send_recv(1, timeout=100))
print(spi) spi = SPI(1, SPI.CONTROLLER) spi = SPI(1, SPI.CONTROLLER, baudrate=500000) spi = SPI(1, SPI.CONTROLLER, 500000, polarity=1, phase=0, bits=8, firstbit=SPI.MSB, ti=False, crc=None) print(str(spi)[:32], str(spi)[53:]) # don't print baudrate/prescaler spi.init(SPI.PERIPHERAL, phase=1) print(spi) try: # need to flush input before we get an error (error is what we want to test) for i in range(10): spi.recv(1, timeout=100) except OSError: print("OSError") spi.init(SPI.CONTROLLER) spi.send(1, timeout=100) print(spi.recv(1, timeout=100)) print(spi.send_recv(1, timeout=100)) spi.deinit()
nb = '' if bursts > 1 and t_p_burst > 500: # Set to discrimanate between nnormal and "slow" transfers nb = 'SLOW !' print("%6s %7.3f Mbaud Tot_time:%7.3f s %6.1f us between calls" % (nb, baud / 1e6, time / 1e6, t_p_burst)) baud_rates = [328125, 656250, 1312500, 2625000, 5250000, 10500000, 21000000] spi = SPI(2, SPI.MASTER, baud_rates[0]) '''Since MISO is not connected, disable SPI for MISO by setting Pin as normal Pin input''' miso_dummy = Pin('Y7', Pin.IN) # May help prevent OS error 5 ? """ Test SPI with data similar to graphical TFT traffic; Slow for some baudrates (10.5 Mbits/s) """ print("\nGraphical type data (2048 bursts of 4 bytes):") for baud in baud_rates: spi.init(SPI.MASTER, baud) # Change baud rate start = micros() for a in range(128): for x in range(16): spi.send(bytearray([0, x, 0, a])) print_elapsed_time(baud, start, 2048, 4) """ Test SPI with generic data in ONE long buffer; Always(?) fast! """ print("\nGeneric data (8192 bytes pre-prepared as ONE long buffer):") for baud in baud_rates: spi.init(SPI.MASTER, baud) # Change baud rate data = bytearray([0, rng() & 0xFF, 0, rng() & 0xFF] * 2048) start = micros() spi.send(data) print_elapsed_time(baud, start, 1, 8192)
from pyb import SPI spi = SPI(1) print(spi) spi = SPI(1, SPI.MASTER) spi = SPI(1, SPI.MASTER, baudrate=500000) spi = SPI(1, SPI.MASTER, 500000, polarity=1, phase=1, bits=8, firstbit=SPI.MSB, ti=False, crc=None) print(spi) spi.init(SPI.SLAVE) print(spi) spi.init(SPI.MASTER) spi.send(1, timeout=100) print(spi.recv(1, timeout=100)) print(spi.send_recv(1, timeout=100))
polarity=0, phase=0, firstbit=SPI.MSB, pins=spi_pins) print(spi) spi = SPI(baudrate=5000000) print(spi) spi = SPI(0, SPI.MASTER, baudrate=200000, bits=16, polarity=0, phase=0) print(spi) spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=0, phase=1) print(spi) spi = SPI(0, SPI.MASTER, baudrate=5000000, bits=32, polarity=1, phase=0) print(spi) spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=1, phase=1) print(spi) spi.init(baudrate=20000000, polarity=0, phase=0) print(spi) spi = SPI() print(spi) SPI(mode=SPI.MASTER) SPI(mode=SPI.MASTER, pins=spi_pins) SPI(id=0, mode=SPI.MASTER, polarity=0, phase=0, pins=('GP14', 'GP16', 'GP15')) SPI(0, SPI.MASTER, polarity=0, phase=0, pins=('GP31', 'GP16', 'GP15')) spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=0, phase=0, pins=spi_pins) print(spi.write('123456') == 6) buffer_r = bytearray(10) print(spi.readinto(buffer_r) == 10) print(spi.readinto(buffer_r, write=0x55) == 10) read = spi.read(10) print(len(read) == 10)
else: raise Exception('Board not supported!') spi = SPI(0, SPI.MASTER, baudrate=2000000, polarity=0, phase=0, firstbit=SPI.MSB, pins=spi_pins) print(spi) spi = SPI(baudrate=5000000) print(spi) spi = SPI(0, SPI.MASTER, baudrate=200000, bits=16, polarity=0, phase=0) print(spi) spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=0, phase=1) print(spi) spi = SPI(0, SPI.MASTER, baudrate=5000000, bits=32, polarity=1, phase=0) print(spi) spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=1, phase=1) print(spi) spi.init(baudrate=20000000, polarity=0, phase=0) print(spi) spi=SPI() print(spi) SPI(mode=SPI.MASTER) SPI(mode=SPI.MASTER, pins=spi_pins) SPI(id=0, mode=SPI.MASTER, polarity=0, phase=0, pins=('GP14', 'GP16', 'GP15')) SPI(0, SPI.MASTER, polarity=0, phase=0, pins=('GP31', 'GP16', 'GP15')) spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=0, phase=0, pins=spi_pins) print(spi.write('123456') == 6) buffer_r = bytearray(10) print(spi.readinto(buffer_r) == 10) print(spi.readinto(buffer_r, write=0x55) == 10) read = spi.read(10) print(len(read) == 10)
# SAMPLING NSAMPLES = const(400) def arr_gen(n): for _ in range(n): yield 0 isamples = array('h', arr_gen(NSAMPLES)) vsamples = array('h', arr_gen(NSAMPLES)) gc.collect() # HARDWARE vadc = ADC(Pin.board.X19) iadc = ADC(Pin.board.X20) spi = SPI(1) spi.init(SPI.MASTER, polarity = 0, phase = 0) # ************* Programmable Gain Amplifier ************* class MCP6S91(): CHANNEL_ADDR = 0x41 GAIN_ADDR = 0x40 GAINVALS = (1, 2, 4, 5, 8, 10, 16, 32) PINS = ('X5', 'X4') def __init__(self, devno): try: self.csn = Pin(MCP6S91.PINS[devno], mode = Pin.OUT_PP) except IndexError: raise ValueError('MCP6S91 device no. must be 0 or 1.') self.csn.value(1) self.csn.value(0)