簡體   English   中英

stm32時序ULPI接口

[英]stm32 timing ULPI interface

我正在做一個需要與USB PHY芯片進行通信的項目。 我正在使用STM32微控制器。 (stm32f446ret6, http://www.st.com/web/zh/resource/technical/document/datasheet/DM00141306.pdf

要與USB PHY芯片通信,我需要使用ULPI接口 這是並行通信。 該接口的時鍾頻率為60MHz。

我的STM32控制器的頻率為180MHz (他的最大值,我檢查了兩次)。 因此,對於ULPI接口的每個時鍾脈沖,微控制器都有3個時鍾脈沖。

要與USB-PHY芯片通信,我首先需要讓設備知道,我要調整的寄存器。 當USB-PHY芯片收到此命令良好時,他會將NXT線設置為高電平。

ULPI計時

我認為這是我的問題。 我需要檢查還是這個很高(帶有if語句的offcourse)。 我認為這就是我的問題所在。 if語句是否可能占用多個時鍾周期? 有辦法解決這個問題嗎?

我的代碼:

bool UPLI_setRegister_FunctionControl(void)
{

    if( (GPIOA -> IDR & 0x01)) {//check if the dir is high
        return false;
    } else {
        GPIOB -> ODR = 4;
        //int j =0;

        if((GPIOA -> IDR & (uint16_t)0x0020)) { // wait until the nxt control line is high
            GPIOB -> ODR = 0b0000000001000000;
            /*
            Register settings
            LMP enable -> 0
            SuspendM -> 1
            Reset -> 0
            Opmode -> 00
            TermSelect -> 0
            XcrvSelect -> 00
            */

            if(GPIOA -> IDR & (uint16_t)0x0020) {
                //NXT still high
                GPIOA ->ODR |= 0x0002; //stp high
                for(int i =0; i==1; i++); //waste some time
                //set outputs back to 0;
                GPIOB -> ODR = 0x0000;
                GPIOA ->ODR = 0x0000;
                return true;
            } else {
                GPIOA ->ODR |= 0x0002; //stp high
                for(int i =0; i==1; i++); //waste some time
                GPIOB -> ODR = 0x0000000;
                GPIOA ->ODR = 0x000000;
                return false;
            }
        }

        else {
            GPIOA ->ODR |= 0x0002; //stp high
            for(int i =0; i==1; i++); //waste some time
            GPIOB -> ODR = 0x0000000;
            GPIOA ->ODR = 0x000000;
            return false;
        }
    }

}

您需要使用微控制器的USB_HS外設與該硬件(而不是其GPIO)進行交互。 GPIO將無法滿足時序要求。

STM32F4參考手冊的第35章(“ OTG_HS”)以及ST的其他文檔中提供了有關硬件接口的信息。

您嘗試以“位域”模式與PHY通信嗎? 這是一種更糟糕的方法。

請檢出USB全速設備庫和以下應用程序: http : //www.st.com/st-web-ui/static/active/jp/resource/technical/document/user_manual/CD00289278.pdf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM