首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stm32时序ULPI接口

stm32时序ULPI接口
EN

Stack Overflow用户
提问于 2016-02-09 09:04:32
回答 2查看 1.2K关注 0票数 0

我正在做一个项目,我需要与USB芯片进行通信。我使用的是STM32微控制器。(stm32f446ret6,http://www.st.com/web/en/resource/technical/document/datasheet/DM00141306.pdf)

为了与USB 芯片通信,我需要使用ULPI接口。这是一种并行通信。此接口的时钟频率为60 This。

我的STM32-controller的频率是180 my (他的最大频率,我检查了两次)。因此,对于ULPI接口的每一个时钟脉冲,单片机都有3个时钟脉冲。

为了与USB-PHY芯片通信,我需要首先让设备知道,女巫注册我想调整。当USB-PHY芯片收到这个命令时,他会把NXT线路调高.

我觉得这是我的问题。我需要检查一下,否则就太高了(如果是声明的话)。我想这就是我的问题所在。如果语句会占用很多时钟周期,是否有可能?有办法解决这个问题吗?

我的代码:

代码语言:javascript
复制
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;
        }
    }

}
EN

回答 2

Stack Overflow用户

发布于 2016-04-14 16:31:15

您需要使用您的微控制器的USB_HS外设与该硬件进行交互,而不是使用它的GPIOs。全球投资组织将无法满足时间要求。

有关硬件接口的信息可在STM32F4参考手册的第35章(“STM32F4参考手册”)以及ST的其他文档中获得。

票数 1
EN

Stack Overflow用户

发布于 2016-04-14 13:21:10

你试着和PHY进行“位敲”模式的交流吗?这是一种非常糟糕的做法。

请查看usb全速设备库和以下应用程序,不要:手册/CD00289278.pdf 00289278.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35287799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档