Post Go back to editing

adrv9009在跳频应用中,中间频点出现“######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range”错误

我们需要从300MHz以200MHz的步长跳频至6GHz,在跳频的过程中出现

“######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range”

或者

“######## Error Code = 467, comment:[TALISE_setFhmMode : Out of range fhmInitFreq requested”

的错误。

请问出现这个问题的原因可能是什么?

  nowfreq = 300 ,change per time is[102]ms 
  nowfreq = 500 ,change per time is[102]ms 
  nowfreq = 700 ,change per time is[102]ms 
  nowfreq = 900 ,change per time is[102]ms 
  nowfreq = 1100 ,change per time is[102]ms 
  nowfreq = 1300 ,change per time is[102]ms 
  nowfreq = 1500 ,change per time is[102]ms 
  nowfreq = 1700 ,change per time is[102]ms 
  nowfreq = 1900 ,change per time is[102]ms 
  nowfreq = 2100 ,change per time is[102]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 2300 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 2500 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 2700 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 2900 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 3100 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 3300 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 3500 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 3700 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 3900 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 4100 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 4300 ,change per time is[8]ms   ######## Error Code = 471, comment:[TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range
]
  nowfreq = 4500 ,change per time is[8]ms 
  nowfreq = 4700 ,change per time is[102]ms 
  nowfreq = 4900 ,change per time is[102]ms 
  nowfreq = 5100 ,change per time is[102]ms 
  nowfreq = 5300 ,change per time is[102]ms 
  nowfreq = 5500 ,change per time is[102]ms 
  nowfreq = 5700 ,change per time is[102]ms 
  nowfreq = 5900 ,change per time is[102]ms 

  • 您必须使用以下结构来设置跳频模式的频率范围:

    设置范围后,调用如下 API 函数设置跳频频率。为确保在设置每个跳频频率之后,RF PLL 有足够的时间稳定到新的频率上(即PLL正常锁定),建议每次跳转后添加延迟(2~5s):

    你可以参考随附的 IronPython:

    ########################
    #ADI Demo Python Script
    ########################
    
    #Import Reference to the DLL
    import clr
    import System
    import time
    clr.AddReferenceToFileAndPath("C:\\Program Files (x86)\\Analog Devices\\ADRV9009 Transceiver Evaluation Software\\AdiCmdServerClient.dll")
    from AdiCmdServerClient import AdiCommandServerClient
    from AdiCmdServerClient import Talise
    from AdiCmdServerClient import FpgaTalise
    from AdiCmdServerClient import Enums
    from System import Array
    import AdiCmdServerClient
    #Create an Instance of the Class
    Link = AdiCommandServerClient.Instance
    
    #Connect to the Zynq Platform
    if(Link.hw.Connected == 1):
        Connect = 0
    else:
        Connect = 1
        Link.hw.Connect("192.168.1.10", 55555)
    
    print Link.Version()
    
    #####################################################################
    #Frequency hopping config, this can be set in radio off state only
    ####################################################################
    
    Link.Talise.RadioOff()
    Fhm_Config = Link.Talise.FhmConfig()
    Fhm_Config.FhmGpioPin = AdiCmdServerClient.GpioSel.TAL_GPIO_INVALID  #TAL_GPIO_04 #TAL_GPIO_INVALID
    Fhm_Config.FhmMinFreq_MHz = 300
    Fhm_Config.FhmMaxFreq_MHz = 6000
    Link.Talise.SetFhmConfig(Fhm_Config)
    Link.Talise.RadioOn()
    
    #####################################################################
    #Frequency hopping mode setup, this can be called in radio on state
    ####################################################################
    Fhm_Mode = Link.Talise.FhmMode()
    Fhm_Mode.FhmEnable = 1
    Fhm_Mode.EnableMcsSync = 1
    Fhm_Mode.FhmTriggerMode = Talise.FhmTriggerMode.FhmNonGpioMode  #FhmGpioMode, FhmNonGpioMode 
    Fhm_Mode.FhmExitMode = Talise.FhmExitMode.FhmFullExit #FhmQuickExit, FhmFullExit 
    Fhm_Mode.FhmInitFrequency_Hz  = 300000000
    Link.Talise.SetFhmMode(Fhm_Mode)
    
    ####################################################################
    #Read back the service frequency before starting frequency hopping
    ####################################################################
    
    init_freq = 0
    init_freq = Link.Talise.GetRfPllFrequency(Link.Talise.PllName.RfPll , 0)
    
    #####################################################################
    #Frequency hopping frequency set and can call any nymber of hopps
    ####################################################################
    
    '''
    #Link.Talise.SetFhmHop(300000000)
    time.sleep(5)
    print Link.Talise.GetFhmRfPllFrequency(0)
    Link.Talise.SetFhmHop(500000000)
    time.sleep(5)
    print Link.Talise.GetFhmRfPllFrequency(0)
    Link.Talise.SetFhmHop(700000000)
    time.sleep(5)
    print Link.Talise.GetFhmRfPllFrequency(0)
    Link.Talise.SetFhmHop(900000000)
    time.sleep(5)
    print Link.Talise.GetFhmRfPllFrequency(0)
    Link.Talise.SetFhmHop(1100000000)
    time.sleep(5)
    print Link.Talise.GetFhmRfPllFrequency(0)
    Link.Talise.SetFhmHop(130000000)
    time.sleep(5)
    print Link.Talise.GetFhmRfPllFrequency(0)
    '''
    
    for i in range(0,100,1):
        Link.Talise.SetFhmHop(300000000)
        Link.Talise.SetFhmHop(6000000000)
        Link.Talise.SetFhmHop(300000000)
    
    ###################################################################################################################
    #Frequency hopping mode disable, make sure to disable after FHM as the RFPLL loop filter BW is restored to default.
    ###################################################################################################################
    
    Fhm_Mode.FhmEnable = 0
    Link.Talise.SetFhmMode(Fhm_Mode)
    
    ########################################
    #configure back the service frequency 
    ########################################
    
    Link.Talise.RadioOff()
    Link.Talise.SetRfPllFrequency(Link.Talise.PllName.RfPll , init_freq )		
    Link.Talise.RadioOn()
    
    
    #Disconnect from the Zynq Platform
    if(Connect == 1):
        Link.hw.Disconnect()
    
    

  •  taliseFhmConfig_t fhmConfig = {
            TAL_GPIO_INVALID,
           // 230, //450MHz TX rf Bandwidth
            113,  //225MHZ TX rf Bandwidth
            6000
        };

    请问每次跳转都必须延时(2~5s)吗?因为我们需要一个全频段的实时扫描,从300MHz-6GHz,以每次200MHz的步长需要跳转29次。或者有什么别的方法可以达到实时的全频段扫描吗?

  • 如上所述,延迟是必须的,在不出现故障的前提下可以进一步减小延迟。请问您最开始的问题是否得到了解决。

  •   nowfreq = 100 ,change per time is[0]ms 
      nowfreq = 300 ,change per time is[102]ms 
      nowfreq = 500 ,change per time is[102]ms 
      nowfreq = 700 ,change per time is[102]ms 
      nowfreq = 900 ,change per time is[104]ms 
      nowfreq = 1100 ,change per time is[104]ms 
      nowfreq = 1300 ,change per time is[102]ms 
      nowfreq = 1500 ,change per time is[102]ms 
      nowfreq = 1700 ,change per time is[102]ms 
      nowfreq = 1900 ,change per time is[104]ms 
      nowfreq = 2100 ,change per time is[102]ms 
      nowfreq = 2300 ,change per time is[102]ms 
      nowfreq = 2500 ,change per time is[102]ms 
      nowfreq = 2700 ,change per time is[102]ms 
      nowfreq = 2900 ,change per time is[102]ms 
      nowfreq = 3100 ,change per time is[102]ms 
      nowfreq = 3300 ,change per time is[102]ms 
      nowfreq = 3500 ,change per time is[102]ms 
      nowfreq = 3700 ,change per time is[102]ms 
      nowfreq = 3900 ,change per time is[102]ms 
      nowfreq = 4100 ,change per time is[102]ms 
      nowfreq = 4300 ,change per time is[102]ms 
      nowfreq = 4500 ,change per time is[102]ms 
      nowfreq = 4700 ,change per time is[102]ms 
      nowfreq = 4900 ,change per time is[102]ms 
      nowfreq = 5100 ,change per time is[102]ms 
      nowfreq = 5300 ,change per time is[102]ms 
      nowfreq = 5500 ,change per time is[102]ms 
      nowfreq = 5700 ,change per time is[102]ms 
      nowfreq = 5900 ,change per time is[102]ms 
    最开始的问题已解决,非常感谢