Skip to content

Commit 5e7ab37

Browse files
Create ad5292.py
1 parent b133319 commit 5e7ab37

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

ad5292.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from machine import Pin, SPI
2+
import time
3+
4+
class AD5292:
5+
def __init__(self, spi_bus, cs_pin, spi_freq=50000):
6+
self.cs = Pin(cs_pin, Pin.OUT)
7+
self.cs.value(1) # Chip select is active low
8+
self.spi = SPI(spi_bus, baudrate=spi_freq, polarity=0, phase=1)
9+
self.spi.init(baudrate=spi_freq, polarity=0, phase=1)
10+
11+
def set_wiper_position(self, position):
12+
if position > 1023:
13+
return False # Invalid position value
14+
command = (0x01 << 10) | (position & 0x03FF)
15+
self._send_command(command)
16+
time.sleep_ms(6)
17+
return True # Successful operation
18+
19+
def _send_command(self, command):
20+
self.cs.value(0)
21+
self.spi.write(bytearray([(command >> 8) & 0xFF, command & 0xFF]))
22+
self.cs.value(1)
23+
24+
def read_control_register(self):
25+
command = (0x02 << 10) # Assuming this is the correct command for reading the control register
26+
self._send_command(command)
27+
# Read response from the device
28+
response = bytearray(2)
29+
self.cs.value(0)
30+
self.spi.readinto(response)
31+
self.cs.value(1)
32+
return response[1] # Assuming the control register value is in the LSB
33+
34+
def write_control_register(self, value):
35+
if value > 7:
36+
return False # Invalid control register value
37+
command = (0x03 << 10) | (value & 0x07) # Assuming this is the correct command for writing the control register
38+
self._send_command(command)
39+
return True
40+
41+
def close(self):
42+
self.spi.deinit()
43+
44+

0 commit comments

Comments
 (0)