dev #1
20
main.py
20
main.py
@ -1,11 +1,6 @@
|
|||||||
import spidev
|
import spidev
|
||||||
import sys
|
|
||||||
import select
|
|
||||||
import time
|
|
||||||
|
|
||||||
from init_regs_value import init_regs_value
|
|
||||||
from regs_addr import regs_addr
|
|
||||||
from util import *
|
from util import *
|
||||||
|
from receive import receive_packet
|
||||||
debug = True
|
debug = True
|
||||||
|
|
||||||
def menu():
|
def menu():
|
||||||
@ -13,18 +8,19 @@ def menu():
|
|||||||
print("1: Read Reg by name")
|
print("1: Read Reg by name")
|
||||||
print("2: Write reg hex value by name")
|
print("2: Write reg hex value by name")
|
||||||
print("3: Dump registers")
|
print("3: Dump registers")
|
||||||
|
print("4: Poll for packets")
|
||||||
print("0: Quit")
|
print("0: Quit")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
spi = spidev.SpiDev()
|
spi = spidev.SpiDev()
|
||||||
spi.open(0, 0) # Bus 0, CE0 (Pin 24)
|
spi.open(0, 0) # Bus 0, CE0 (Pin 24)
|
||||||
spi.max_speed_hz = 2000000 # Safe start speed
|
spi.max_speed_hz = 500000 # Safe start speed
|
||||||
spi.mode = 0b00 # SPI mode 0
|
spi.mode = 0b00 # SPI mode 0
|
||||||
stop = False
|
stop = False
|
||||||
|
|
||||||
print("Sending SRES (reset)...")
|
print("Sending SRES (reset)...")
|
||||||
spi.xfer2([SRES])
|
spi.xfer2([SRES])
|
||||||
time.sleep(0.1)
|
sleep(0.1)
|
||||||
|
|
||||||
print("Sending SNOP (no-op)...")
|
print("Sending SNOP (no-op)...")
|
||||||
status = spi.xfer2([SNOP])[0]
|
status = spi.xfer2([SNOP])[0]
|
||||||
@ -35,7 +31,7 @@ if __name__ == "__main__":
|
|||||||
print(f"CC2500 VERSION register: 0x{version:02X}")
|
print(f"CC2500 VERSION register: 0x{version:02X}")
|
||||||
|
|
||||||
init_regs(spi)
|
init_regs(spi)
|
||||||
time.sleep(0.1)
|
sleep(0.1)
|
||||||
|
|
||||||
test_read_write_reg(spi)
|
test_read_write_reg(spi)
|
||||||
|
|
||||||
@ -57,11 +53,15 @@ if __name__ == "__main__":
|
|||||||
addr = get_addr(reg_name)
|
addr = get_addr(reg_name)
|
||||||
value = int(input("New Register value (hex): "),16)
|
value = int(input("New Register value (hex): "),16)
|
||||||
write_reg(spi, addr, value)
|
write_reg(spi, addr, value)
|
||||||
time.sleep(0.1)
|
sleep(0.1)
|
||||||
value_check = read_register(spi,addr)
|
value_check = read_register(spi,addr)
|
||||||
print("Updated Value: " + hex(value) +" == " + str(value))
|
print("Updated Value: " + hex(value) +" == " + str(value))
|
||||||
elif cmd == 3:
|
elif cmd == 3:
|
||||||
dump_regs(spi)
|
dump_regs(spi)
|
||||||
|
elif cmd == 4:
|
||||||
|
while True:
|
||||||
|
receive_packet(spi)
|
||||||
|
sleep(0.2)
|
||||||
else:
|
else:
|
||||||
print("Invalid command")
|
print("Invalid command")
|
||||||
finally:
|
finally:
|
||||||
|
33
receive.py
33
receive.py
@ -1,40 +1,43 @@
|
|||||||
def burst_read(addr, length):
|
from util import *
|
||||||
|
import time
|
||||||
|
|
||||||
|
def burst_read(spi, addr, length):
|
||||||
"""Read multiple bytes"""
|
"""Read multiple bytes"""
|
||||||
READ_SINGLE = ACCESS["READ_SINGLE"]["dec"]
|
READ_SINGLE = get_addr["READ_SINGLE"]
|
||||||
READ_BURST = ACCESS["READ_BURST"]["dec"]
|
READ_BURST = get_addr["READ_BURST"]
|
||||||
return spi.xfer2([addr | READ_SINGLE | READ_BURST] + [0x00] * length)
|
return spi.xfer2([addr | READ_SINGLE | READ_BURST] + [0x00] * length)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def read_fifo():
|
def read_fifo(spi):
|
||||||
# Burst read RX FIFO
|
# Burst read RX FIFO
|
||||||
READ_BURST = ACCESS["READ_BURST"]["dec"]
|
READ_BURST = get_addr("READ_BURST")
|
||||||
RXFIFO = MEMORY["RXFIFI"]["dec"]
|
RXFIFO = get_addr("RXFIFO")
|
||||||
fifo = spi.xfer2([RXFIFO | READ_BURST] + [0x00]*64) # Max 64 bytes
|
fifo = spi.xfer2([RXFIFO | READ_BURST] + [0x00]*64) # Max 64 bytes
|
||||||
return fifo[1:]
|
return fifo[1:]
|
||||||
|
|
||||||
|
|
||||||
def receive_packet():
|
def receive_packet(spi):
|
||||||
# Flush RX FIFO
|
# Flush RX FIFO
|
||||||
SFRX = STROBES["SFRX"]["dec"]
|
SFRX = get_addr("SFRX")
|
||||||
strobe(SFRX) # SFRX
|
strobe(spi, SFRX) # SFRX
|
||||||
|
|
||||||
SRX = STROBES["SRX"]["dec"]
|
SRX = get_addr( "SRX")
|
||||||
# Go into RX mode
|
# Go into RX mode
|
||||||
strobe(SRX) # SRX
|
strobe(spi, SRX) # SRX
|
||||||
|
|
||||||
# Wait for data (use GDO0 in real app)
|
# Wait for data (use GDO0 in real app)
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
# Check RXBYTES
|
# Check RXBYTES
|
||||||
RXBYTES = STATUS["RXBYTES"]["dec"]
|
RXBYTES = get_addr( "RXBYTES")
|
||||||
rx_bytes = read_register(RXBYTES) & 0x7F
|
rx_bytes = read_register(spi, RXBYTES) & 0x7F
|
||||||
if rx_bytes == 0:
|
if rx_bytes == 0:
|
||||||
print("No data received.")
|
print("No data received.")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Read data
|
# Read data
|
||||||
RXFIFO = MEMORY["RXFIFO"]["dec"]
|
# RXFIFO = get_addr("RXFIFO")
|
||||||
data = read_fifo() # 0x3F = RX FIFO
|
data = read_fifo(spi) # 0x3F = RX FIFO
|
||||||
print(f"Received: {data}")
|
print(f"Received: {data}")
|
||||||
return data
|
return data
|
||||||
|
4
util.py
4
util.py
@ -1,5 +1,6 @@
|
|||||||
from init_regs_value import init_regs_value
|
from init_regs_value import init_regs_value
|
||||||
from regs_addr import regs_addr
|
from regs_addr import regs_addr
|
||||||
|
import time
|
||||||
CONFIG_REGS = regs_addr["CONFIG_REGS"]
|
CONFIG_REGS = regs_addr["CONFIG_REGS"]
|
||||||
STROBES = regs_addr["STROBES"]
|
STROBES = regs_addr["STROBES"]
|
||||||
STATUS = regs_addr["STATUS"]
|
STATUS = regs_addr["STATUS"]
|
||||||
@ -64,3 +65,6 @@ def dump_regs(spi):
|
|||||||
name :str = reg_name
|
name :str = reg_name
|
||||||
value = read_register(spi, reg_addr)
|
value = read_register(spi, reg_addr)
|
||||||
print((name+":").ljust(15) +hex(value).ljust(4)+"\t"+str(value))
|
print((name+":").ljust(15) +hex(value).ljust(4)+"\t"+str(value))
|
||||||
|
|
||||||
|
def sleep(t):
|
||||||
|
return time.sleep(t)
|
Loading…
Reference in New Issue
Block a user