0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

USB開發(fā)的這個錯誤你犯了嗎

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-24 12:31 ? 次閱讀

1.概述

我們已經(jīng)對USB硬件和數(shù)據(jù)的四種傳輸類型有了一個基本的了解。

控制傳輸(Control Transfers

批量傳輸(Bulk Data Transfers)

中斷傳輸(Interrupt Data Transfers)

同步傳輸(Isochronous Data Transfers):

下面我們通過一個例子看一下USB的具體工作過程。在此我們用一個比較實用的例子,就是把我們的板子用USB連接至PC,然后在PC端出現(xiàn)一個模擬串口,通過串口助手打開這個串口,然后實現(xiàn)數(shù)據(jù)的雙向傳輸。最后我們聊一下很多工程師都會忽視的USB認證問題。

2.例程

我們打開ST的Cube庫中的CDC例程:

STM32Cube_FW_F1_V1.8.0ProjectsSTM3210C_EVALApplicationsUSB_DeviceCDC_StandaloneMDK-ARMProject.uvprojx

這個例程用到USB的同時還會用到USART,USB從PC端收到數(shù)據(jù)后會轉(zhuǎn)發(fā)到USART,從USART接收到消息會上傳至PC。我們可以把USART的TX和RX短接,這樣從PC端下發(fā)的數(shù)據(jù)會原樣回傳給PC端。

這個例程使用的硬件是STM3210C-EVAL,原理圖可以在stmcu.org.cn找到。如果我們使用的是其它板子,就需要在這個工程基礎(chǔ)上做一些改動。比如現(xiàn)在我們使用STM32F105RBT6,8M晶振,串口用PTA2,PTA3,那么我們的要做如下修改:

首先,修改使用的MCU

然后修改時鐘初始化部分。下圖為STM32F105時鐘模塊示意圖。USB工作需要48MHz的時鐘。

(STM32F105xx Datasheet)

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6030

    文章

    44491

    瀏覽量

    632007
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1794

    瀏覽量

    64412
  • USB開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    9703
收藏 人收藏

    評論

    相關(guān)推薦

    解決USB音頻DAC和解碼器設(shè)計中的計數(shù)錯誤

    電子發(fā)燒友網(wǎng)站提供《解決USB音頻DAC和解碼器設(shè)計中的計數(shù)錯誤.pdf》資料免費下載
    發(fā)表于 10-21 10:03 ?0次下載
    解決<b class='flag-5'>USB</b>音頻DAC和解碼器設(shè)計中的計數(shù)<b class='flag-5'>錯誤</b>

    高性能USB轉(zhuǎn)串口適配器,助力的嵌入式程序開發(fā)!讓USB和串行接口輕松實現(xiàn)雙向通信!

    多功能數(shù)字接口轉(zhuǎn)發(fā)器,讓USB和串行接口輕松實現(xiàn)雙向通信! 高性能USB轉(zhuǎn)串口適配器,助力的嵌入式程序開發(fā)! USB轉(zhuǎn)串口適配器可編程
    的頭像 發(fā)表于 08-06 09:54 ?193次閱讀

    一文讀懂CAN控制器錯誤處理的原理

    “被動錯誤標志”。站檢測到無論是位錯誤、填充錯誤、形式錯誤,還是應答錯誤,這個站會在下一位時發(fā)出
    的頭像 發(fā)表于 04-26 08:25 ?1487次閱讀
    一文讀懂CAN控制器<b class='flag-5'>錯誤</b>處理的原理

    【外設(shè)移植】USB鍵盤+M61開發(fā)

    這篇開始使用 M62 板子來實現(xiàn) USB 的設(shè)備開發(fā),首先從最簡單的 USB HID 鍵盤開始。固件的 SDK 使用的是 CherryUSB 開源 USB 固件。CherryUSB 是
    的頭像 發(fā)表于 02-26 11:31 ?1721次閱讀
    【外設(shè)移植】<b class='flag-5'>USB</b>鍵盤+M61<b class='flag-5'>開發(fā)</b>板

    英飛凌推出CYUSBS236 USB轉(zhuǎn)串行通信(雙通道)開發(fā)套件

    英飛凌科技(Infineon Technologies)近日宣布推出全新的CYUSBS236 USB 轉(zhuǎn)串行通信(雙通道)開發(fā)套件。該開發(fā)套件基于英飛凌的CY7C65215 USB
    的頭像 發(fā)表于 01-24 17:12 ?814次閱讀

    vb運行時錯誤429不能創(chuàng)建對象

    VB運行時錯誤429代表不能創(chuàng)建對象的錯誤。這個錯誤可能會發(fā)生在使用CreateObject函數(shù)或New關(guān)鍵字創(chuàng)建對象時。 這種錯誤通常發(fā)生
    的頭像 發(fā)表于 01-09 11:07 ?2085次閱讀

    CMOS設(shè)置錯誤的解決方法

    CMOS設(shè)置錯誤的解決方法? CMOS是計算機中的一塊電路,用于存儲電腦的基本配置信息。如果設(shè)置錯誤,可能會導致計算機無法正常啟動或運行,因此需要盡早解決。本文將為詳細介紹如何解決CMOS設(shè)置
    的頭像 發(fā)表于 12-28 15:13 ?7754次閱讀

    電源時序控制的正確方法,掌握了嗎?

    電源時序控制的正確方法,掌握了嗎?
    的頭像 發(fā)表于 12-15 09:27 ?1282次閱讀
    電源時序控制的正確方法,<b class='flag-5'>你</b>掌握<b class='flag-5'>了嗎</b>?

    USB調(diào)試模式是什么意思?USB調(diào)試模式有什么用?

    USB調(diào)試模式是什么意思?USB調(diào)試模式有什么用? USB調(diào)試模式是一種在Android設(shè)備上進行開發(fā)、測試和調(diào)試的模式。當設(shè)備處于USB調(diào)
    的頭像 發(fā)表于 12-11 11:06 ?1w次閱讀

    IGBT和MOSFET該用誰?選對了嗎?

    IGBT和MOSFET該用誰?選對了嗎?
    的頭像 發(fā)表于 12-08 18:25 ?2336次閱讀
    IGBT和MOSFET該用誰?<b class='flag-5'>你</b>選對<b class='flag-5'>了嗎</b>?

    肖特基二極管,真的用對了嗎?

    肖特基二極管,真的用對了嗎?
    的頭像 發(fā)表于 12-07 14:27 ?527次閱讀
    肖特基二極管,<b class='flag-5'>你</b>真的用對<b class='flag-5'>了嗎</b>?

    【ELF 1開發(fā)板試用】+ 3.2 USB攝像頭連接測試 + Ubutu SSH連接

    攝像頭,后面會基于這個控制部件,來進行一個簡單的開發(fā)控制; 未插上時USB總線狀態(tài): 插上設(shè)備后USB總線狀態(tài): 查看USB攝像頭支持的分辨
    發(fā)表于 12-06 15:37

    腳本錯誤scripterror怎么解決

    分析和排查。以下是一些常見的解決腳本錯誤的方法: 檢查語法錯誤: 仔細檢查腳本中的代碼,看是否有拼寫錯誤、缺少分號、括號不匹配等語法錯誤。 在一些集成
    的頭像 發(fā)表于 11-26 14:46 ?7673次閱讀

    codeblocks環(huán)境錯誤解決辦法

    CodeBlocks是一款常用的集成開發(fā)環(huán)境,用于編寫、編譯和調(diào)試C、C++等程序。然而,有時在使用CodeBlocks時可能會遇到一些錯誤或問題。本文將為提供一些常見CodeBlocks環(huán)境
    的頭像 發(fā)表于 11-26 09:37 ?6293次閱讀

    c語言代碼錯誤怎么找

    當我們編寫C語言代碼時,常常會遇到一些錯誤。這些錯誤可能是語法錯誤,邏輯錯誤或者是運行時錯誤。無論是什么類型的
    的頭像 發(fā)表于 11-24 10:05 ?3454次閱讀