1
0
Fork 0

edit adc channels with json

This commit is contained in:
Florian Agbuya 2024-08-20 15:55:56 +08:00
parent 1b673a1adb
commit 2f16033704
2 changed files with 29 additions and 6 deletions

View File

@ -19,6 +19,7 @@
import spidev import spidev
import json
from pyfastservo.common import ( from pyfastservo.common import (
ADC_AFE_CTRL_ADDR, ADC_AFE_CTRL_ADDR,
ADC_BITSLIP_ADDR, ADC_BITSLIP_ADDR,
@ -113,11 +114,12 @@ def find_edge():
def read_adc_channel(high_addr, low_addr): def read_adc_channel(high_addr, low_addr):
return (read_from_memory(high_addr, 1)[0] << 8) | read_from_memory(low_addr, 1)[0] return (read_from_memory(high_addr, 1)[0] << 8) | read_from_memory(low_addr, 1)[0]
def print_adc_channels(): def get_adc_channels():
adc_ch0 = read_adc_channel(ADC_CH0_HIGH_ADDR, ADC_CH0_LOW_ADDR) adc_ch0 = read_adc_channel(ADC_CH0_HIGH_ADDR, ADC_CH0_LOW_ADDR)
adc_ch1 = read_adc_channel(ADC_CH1_HIGH_ADDR, ADC_CH1_LOW_ADDR) adc_ch1 = read_adc_channel(ADC_CH1_HIGH_ADDR, ADC_CH1_LOW_ADDR)
print(f"Final ADC_CH0: 0x{adc_ch0:04x}") print(f"Final ADC_CH0: 0x{adc_ch0:04x}")
print(f"Final ADC_CH1: 0x{adc_ch1:04x}") print(f"Final ADC_CH1: 0x{adc_ch1:04x}")
return adc_ch0, adc_ch1
def enable_adc_afe(ch1_x10=False, ch2_x10=False): def enable_adc_afe(ch1_x10=False, ch2_x10=False):
ctrl_value = (ch2_x10 << 1) | ch1_x10 ctrl_value = (ch2_x10 << 1) | ch1_x10
@ -147,7 +149,12 @@ def configure_ltc2195():
# Performing Word Align # Performing Word Align
perform_bitslip() perform_bitslip()
find_edge() find_edge()
print_adc_channels() adc_ch0, adc_ch1 = get_adc_channels()
with open('adc_values.json', 'w') as f:
json.dump({'adc_ch0': f"{adc_ch0:04x}", 'adc_ch1': f"{adc_ch1:04x}"}, f)
print("ADC values saved to adc_values.json")
main_adc_test_mode(spi, False) main_adc_test_mode(spi, False)
verify_adc_registers(spi, {0x02: 0x11}) # Verify test mode is off verify_adc_registers(spi, {0x02: 0x11}) # Verify test mode is off

View File

@ -1,3 +1,4 @@
import json
import time import time
from pyfastservo import adc, dac from pyfastservo import adc, dac
from pyfastservo.common import ( from pyfastservo.common import (
@ -8,11 +9,26 @@ from pyfastservo.common import (
read_from_memory, read_from_memory,
write_to_memory write_to_memory
) )
###
try:
with open('adc_values.json', 'r') as f:
adc_values = json.load(f)
INITIALIZED_ADC_CH0 = int(adc_values['adc_ch0'], 16) # Convert hex string to int
INITIALIZED_ADC_CH1 = int(adc_values['adc_ch1'], 16) # Convert hex string to int
except FileNotFoundError:
print("Warning: ADC initialization values not found. Using default addresses.")
INITIALIZED_ADC_CH0 = None
INITIALIZED_ADC_CH1 = None
def read_adc(): def read_adc():
adc_value = adc.read_adc_channel(ADC_CH0_HIGH_ADDR, ADC_CH0_LOW_ADDR) if INITIALIZED_ADC_CH0 is not None:
return adc_value return INITIALIZED_ADC_CH0
else:
return adc.read_adc_channel(ADC_CH0_HIGH_ADDR, ADC_CH0_LOW_ADDR)
# def read_adc():
# adc_value = adc.read_adc_channel(ADC_CH0_HIGH_ADDR, ADC_CH0_LOW_ADDR)
# return adc_value
def write_dac(value): def write_dac(value):
dac.set_dac_output(value) dac.set_dac_output(value)
@ -42,7 +58,7 @@ def perform_loopback_test(test_value):
print(f"Expected: {test_value}, ADC: {adc_value}, DAC: {dac_value}") print(f"Expected: {test_value}, ADC: {adc_value}, DAC: {dac_value}")
def main(): def main():
test_value = 0x2000 # Mid-range value (8192 in decimal) test_value = 0x3F3F # Mid-range value (8192 in decimal)
perform_loopback_test(test_value) perform_loopback_test(test_value)
if __name__ == "__main__": if __name__ == "__main__":