新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32F103系列USB問題

        STM32F103系列USB問題

        作者: 時間:2011-08-01 來源:網絡 收藏

        1. usb和can公用512B的RAM,但是RAm地址為0x40006000-0x40006400,分明為1KB啊,為什么還是說512B.
        2. 若PC機讀RAM中數據時,我同時對RAM進行寫操作,怎么辦,我感覺庫中并沒有對這種操作進行處理啊。
        3. 對于緩沖區,不理解為什么給了個地址,又同時給了個USB本地地址,并且我認為,地址偏移應該為[USB_BTABLE]*2+n*16+(0,4,8,12),也就是緩沖區描述表也應該擴大2倍,不知道是不是
        4.不理解為什么USB_BTABLE設置成13+3位的,反正一共就512B(我理解為1K),8位就夠了

        1)這個緩沖區是個雙端口RAM,CPU一端是以32位寬訪問,而USB一端是以16位寬訪問,因此從CPU端看浪費了一半的地址空間,即從CPU端讀出32位數據時只有16位是有效的;所以1KB的地址空間,實際只有512字節的存儲空間。
        2)因為這個緩沖區是個雙端口RAM,所以你不用擔心訪問沖突的問題,硬件會協調它們之間的操作。
        3)因為這個緩沖區是個雙端口RAM,所以有2個地址空間,一個是從CPU端看,另一個是從USB收發器那一端看。
        4)不明白你說的"USB_BTABLE設置成13+3位"是什么意思。
        ----------------------------------------------------
        1.您說的usb收發器應該指的的是stm芯片內核中的獨立模塊,這個我沒有理解錯吧,還有usb端寫ram應該是按字對其的是吧,比方說寫的地址為0x00,0x01,然后0x02,0x03不寫,再寫0x04和0x05,我沒有理解錯吧
        2.即使是ram同一時刻也只能又一個控制器對指定地址進行操作啊,而開始時,usb控制器以及經addr和count讀取到內部控制內核中了,cpu再一次操作后不就會改變addr和count,而usb控制器的addr和count也沒有改變,怎么回事,我有點轉不過來
        3.我的意思是沒必要把usb_btable設置成那么多位,因為就沒有那么大的地址空間,可以尋址,比如說設置成0xfff8,這個已經超出緩沖區范圍了

        1)可以這么理解。但更準確地說是,USB收發器寫RAM時,如果從CPU端看,寫的地址為0x00、0x01,然后0x02、0x03不寫,再寫0x04、0x05;但是USB收發器寫RAM時,如果從USB端看,寫的地址就是連續的,即0x00、0x01、0x02、0x03........。
        2)你還沒有明白雙端口RAM的構造,它有2個地址總線和2個操作計數器,CPU端和USB收發器端各有一個地址總線和一個操作計數器。
        3)不錯,沒必要把usb_btable設置成那么多位,即使這樣與你的操作有什么關系嗎?不管怎樣你都不能設置超出緩沖區范圍的參數。
        ----------------------------
        STM32F103沒有集成USB Host Controller,STM32F105或STM32F107集成了USB Host Controller。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 嘉义市| 武川县| 平潭县| 浮山县| 平陆县| 澄迈县| 龙井市| 申扎县| 彭阳县| 乌苏市| 五大连池市| 德庆县| 水富县| 昭平县| 资兴市| 辉县市| 鹤峰县| 青阳县| 瓦房店市| 含山县| 靖宇县| 和田市| 陆川县| 宝山区| 仲巴县| 汶上县| 和硕县| 蓝山县| 同江市| 龙山县| 晋州市| 福州市| 佛冈县| 宜兰市| 松江区| 阜南县| 桐庐县| 乐陵市| 台前县| 桐梓县| 类乌齐县|