FX3で0.1 µs単位のタイムスタンプを取得する方法 – KBA220034 - Community Translated (JA)

Version 1

    Community Translated by NoTa_4591161       Version: **

     

    Translation - English: How to Get a 0.1-µs Unit Timestamp with FX3 – KBA220034

     

    質問:

    FX30.1 µs単位のタイムスタンプを取得する方法は?

     

    回答:

    FX3には複雑なGPIOタイマーがあります。現在のタイマー値を読み取るには、CyU3PGpioComplexSampleNow APIを使用します。その結果、GPIOタイマーが適切に構成されていれば、0.1 µs単位のタイムスタンプを取得できます。

    SYS_CLK_PLLの値が403.2 MHzであると想定します。0.1µsのユニットタイムスタンプでは、約10 MHzの周波数でタイマーを実行する必要があります。

    1. Fast GPIO Clockを約10 MHzに構成します。高速GPIOクロックは、分周器が10に設定されたSYS_CLK_PLL / 4から生成されるため、高速GPIOクロックの周波数は10.08 MHzです。
    CyU3PGpioClock_t gpioClock;
    /* GPIOモジュールの初期化 */
    gpioClock.fastClkDiv = 10;
    gpioClock.
    slowClkDiv = 0;
    gpioClock.
    simpleDiv = CY_U3P_GPIO_SIMPLE_DIV_BY_2;
    gpioClock.
    clkSrc = CY_U3P_SYS_CLK_BY_4;
    CY_U3P_SYS_CLK_BY_4;           gpioClock.
    halfDiv = 0;

       return  CyU3PGpioInit (&gpioClock, NULL);

    2. DUMMY_COMPLEX_GPIOを静的出力モードになるように設定します。
    /* DUMMY_COMPLEX_GPIOを静的モード出力として設定 */
            gpioComplexConfig.outValue = CyFalse;
            gpioComplexConfig.inputEn = CyFalse;
            gpioComplexConfig.driveLowEn = CyTrue;
            gpioComplexConfig.driveHighEn = CyTrue;
            gpioComplexConfig.pinMode = CY_U3P_GPIO_MODE_STATIC;
            gpioComplexConfig.intrMode = CY_U3P_GPIO_INTR_TIMER_ZERO;
            gpioComplexConfig.timerMode = CY_U3P_GPIO_TIMER_HIGH_FREQ;
            gpioComplexConfig.timer = 0;
            gpioComplexConfig.priod = 0xffffffff;
            gpioComplexConfig.threshold = 0xffffffff;
            status = CyU3PGpioSetComplexConfig(DUMMY_COMPLEX_GPIO, &gpioComplexConfig);
           
    if(status != CY_U3P_SUCCESS)
            {
               CyU3PDebugPrint(4, “CyU3PGpioSetComplexConfig failederror code =%d \ n”, status);
        
    CyCx3UvcAppErrorHandler(status;
            }

    3. CyU3PGpioComplexSampleNow APIを使用してタイムスタンプを取得します。
         CyU3PGpioComplexSampleNow(DUMMY_COMPLEX_GPIO, xtamp);