查看: 1735|回复: 1

STM32 USB数据接收与数据发送

[复制链接]
  • TA的每日心情
    开心
    2014-4-21 09:44
  • 签到天数: 26 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2017-3-24 11:14:57 | 显示全部楼层 |阅读模式
    分享到:
    在STM32的USB设备通信中,难度较大的还应是USB通信协议部分,但是这部分代码却并不是需要我们这些嵌入式工程师去实现,USB通信协议的内容已经交由STM32 USB-FS-Device Lib库实现,我们只要去关心具体的发送和接收函数在什么地方就可以了,而在初学阶段不必过多的关心USB协议的组成。

    在usb_endp.c中,我们拿EP1_OUT_Callback()函数分析。
    /*******************************************************************************
    * Function Name  : EP1_OUT_Callback.
    * Description    : 端点1输出回调函数
    * Input          : None.
    * Output         : None.
    * Return         : None.
    *******************************************************************************/

    void EP1_OUT_Callback(void)
    {
        //PMA
        //设置端点的接收状态为有效,因为端点接收到数据后会端点状态自动设置成停止状态
        SetEPRxStatus(ENDP1, EP_RX_VALID);
        USB_Received_Flag=1;           //设置接收到数据标志位
    }
        这个函数的工作很简单,首先因为数输出端点,是接收数据的,而USB模块接收到的数据又是暂存在PMA双缓冲区中,所以要线把数据从PMA中读取出来,放到用户自己缓冲区中。接着设置端点接收状态有效,因为当接收数据后,端点就会被关闭。最后置位接收带数据标志。

        发送比接收简单多了看看下面的代码就知道了。
    /**
      * @brief  通过USB发送数据
      * @param  data 数据存储首地址
      * @param  dataNum 发送的数据字节数
      * @retval 发送的字节数
      */
    uint32_t USB_SendData(uint8_t *data,uint32_t dataNum)        
    {
            //将数据通过USB发送出去
            UserToPMABufferCopy(data, ENDP2_TXADDR, dataNum);//拷贝数据到PMA中
            SetEPTxCount(ENDP2, REPORT_COUNT); //从端点2发送64字节数据
            SetEPTxValid(ENDP2);                     //使能端点2的发送状态
            return dataNum;  
    }
        把要发送的数据拷贝到PMA中,之后设置端点计数,使能下端点,数据就发送出去了。


    总结下:
    数据发送:
        UserToPMABufferCopy--->SetEPTxCount--->SetEPTxValid                                    
    数据接收:
        USB_LP_CAN1_RX0_IRQHandler--->USB_Istr---->CTR_LP--->EPx_OUT_Callback

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-4-15 10:17
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2017-4-15 10:14:05 | 显示全部楼层
    正在学习usb通信,感觉不懂原理直接使用库并没有学到什么,在一些没有库的芯片上很难实现,所以我觉得原理还是要懂得。不过真的很难
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 03:50 , Processed in 0.111394 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.