Part Number: LMX2572
Hello T
TICS Pro (v1.6.8.9, build datre 15.Nov-18) does not set the VCO core according to the datasheet. It also has different values for VCO_DACISET_STRT and VCO_CAPCTRL_STRT when I calculate according to the datasheet. What to trust? My issue is that with the TICS pro generated register values, the device works - with the datasheet values, the device does not work.
Tics pro python update code states:
def btn_VCOFASTCAL_Update_UI():
Fvco=Fvco_FREQ.dValue
if (Fvco<3200):
VCOSEL=1
VCOmin=3200
VCOmax=3650
AmpCalMin=138
AmpCalMax=137
CapCtrlMin=131
CapCtrlMax=19
elif (Fvco<3650):
VCOSEL=2
VCOmin=3650
VCOmax=4200
AmpCalMin=162
AmpCalMax=142
CapCtrlMin=143
CapCtrlMax=25
elif (Fvco<4200):
VCOSEL=3
VCOmin=4200
VCOmax=4650
AmpCalMin=126
AmpCalMax=114
CapCtrlMin=135
CapCtrlMax=34
elif (Fvco<4650):
VCOSEL=4
VCOmin=4650
VCOmax=5200
AmpCalMin=195
AmpCalMax=172
CapCtrlMin=136
CapCtrlMax=25
elif (Fvco<5200):
VCOSEL=5
VCOmin=5200
VCOmax=5750
AmpCalMin=190
AmpCalMax=163
CapCtrlMin=133
CapCtrlMax=20
elif (Fvco<6400):
VCOSEL=6
VCOmin=5750
VCOmax=6400
AmpCalMin=256
AmpCalMax=204
CapCtrlMin=151
CapCtrlMax=27
else:
VCOSEL=6
VCOmin=5750
VCOmax=6400
AmpCalMin=204
AmpCalMax=204
CapCtrlMin=27
CapCtrlMax=27
CapCode=CapCtrlMin - int( (CapCtrlMin-CapCtrlMax)*(VCOmax-Fvco)/(VCOmax-VCOmin) )
AmpCal = AmpCalMin+int( (AmpCalMax-AmpCalMin)*(Fvco-VCOmin)/(VCOmax-VCOmin) )
if (CapCode<0):
CapCode=0
if (CapCode>183):
CapCode=183
if (AmpCal<0):
AmpCal=0
if (AmpCal>511):
AmpCal=511
VCO_SEL.iValue=VCOSEL
VCO_CAPCTRL_STRT.iValue=CapCode
VCO_DACISET_STRT.iValue=AmpCal
which is obviously not what is in table 136 of the DS.
while my code reads:
@staticmethod
def vco_core_lookup(fvco_in):
"""
Table 136 and 135 from datasheet
"""
fields = ('vco_core', 'fmin', 'fmax', 'cmin','cmax','amin', 'amax', 'kvcomin', 'kvcomax')
data = [
(1, 3200, 3650, 131, 19, 138, 137, 32, 47),
(2, 3650, 4200, 143, 25, 162, 142, 35, 54),
(3, 4200, 4650, 135, 34, 126, 114, 47, 64),
(4, 4650, 5200, 136, 25, 195, 172, 50, 73),
(5, 5200, 5750, 133, 20, 190, 163, 61, 82),
(6, 5750, 6400, 151, 27, 256, 204, 57, 79)
]
dicts = [dict(zip(fields, d)) for d in data]
c = []
for i in range(0, len(data)):
if fvco_in >= data[i][1] and fvco_in <= data[i][2]:
c = dicts[i]
if len(c) < 1:
print("LMX2572 Error: invalid VCO selection")
return False
kvco = c['kvcomin']+(c['kvcomax']-c['kvcomin'])*(fvco_in-c['fmin'])/(c['fmax']-c['fmin'])
capctl_start = round(c['cmin']-(fvco_in-c['fmin'])*(c['cmin']-c['cmax'])/(c['fmax']-c['fmin']))
daciset_start = round(c['amin']-(fvco_in-c['fmin'])*(c['amin']-c['amax'])/(c['fmax']-c['fmin']))
return {'vcotable': c, 'VCO_SEL': c['vco_core'], 'VCO_CAPCTRL_STRT': capctl_start, 'VCO_DACISET_STRT': daciset_start, 'kvco': kvco}
can you advise? I do not understand why TICS pro registers work and DS values not - all other registers are identical.

