USB學習 虛擬串列埠

2021-07-29 22:20:46 字數 1514 閱讀 1995

今天看到usb虛擬串列埠的例子,有一段這樣的語句:

usb的配置通過三個函式完成:

usb_interrupts_config()

、set_usbclock()

和usb_init()

,第乙個函式用於設定

usb

喚醒中斷和

usb

低優先順序資料處理中斷,

set_usbclock

函式用於 配置

usb

時鐘,也就是從

72m的主頻

得到 48m

的 usb

時鐘(1.5

分頻)。最後

usb_init()

函式用於初始化

usb,最主要的就是呼叫

了 virtual_com_port_init

函式,開啟了

usb部分的電源等。這裡需要特別說明的是,

usb配置

並沒有對

pa11

和 pa12

這兩個

io口進行設定,是因為,一旦開啟了

usb電源(

usb_cntr

的 pdwn

位清零)

pa11

和pa12

將不再作為其他功能使用,僅供

usb使用,所以在開啟了

usb電源之後不論你怎麼配置這兩個

io口,都是無效的。要在此獲取這兩個

io口的配置權,則需

要關閉

usb

電源,也就是置位

usb_cntr

的 pdwn

位,我們通過

usb_port_set

函式來禁止

/允許

usb

連線,在復位的時候,先禁止,再允許,這樣每次我們按復位電腦都可以識別到

usb滑鼠,而不需要我們每次都拔

usb線。

裡面說通過使用usb_port_set 

函式禁止允許就可以不需要每次復位都拔usb線,不太理解,查了下暫存器。

函式: 

void usb_port_set(u8 enable)

}  enable非零時,getcntr()&(~(1<<1))其實也就是將usb_cntr 暫存器的1位置0;如下圖為暫存器

0時為對出斷電模式,1時進入斷電模式。根據這個就可以時usb進入退出斷電模式,而且解決了復位重新插拔的問題唉。(退出後最好稍微延時一段時間,讓暫存器清除一些標誌)

usb功能概述:資料緩衝區、每個端點最大512位元組,最多16個單向或8個雙向端點、

關於串列埠和usb轉串列埠

硬體上考慮,串列埠還是要隔離,否則引發的風險是產品不能承受的,現在市場上的max232,質量沒有什麼保證,有過一批勉強用了一年多,還是有些出了問題。usb轉出來的串列埠一樣也要隔離,而且需要注意的是usb是很容易受到干擾的,市場上還是沒有usb端短,串列埠線長的轉換器件,需要可靠性的客戶還是推薦使用...

python虛擬串列埠 python 虛擬串列埠通訊

準備著手寫乙個串列埠工具,當前程式設計環境,並沒有辦法接好下位機平台,需要模擬出乙個串列埠,不斷傳送資訊,方便除錯串列埠工具。這兩個串列埠是互相接通的,乙個com 可以當作上位機,乙個com可以當作下位機 2.python 實現向乙個串列埠內寫資料,另乙個串列埠內接受資料 usr bin pytho...

分辨串列埠和USB

pc機常用的通訊方式有三種 序列 並行和網路介面。目前大多數巨集碁筆記本保留有序列口,一般在筆記本的左邊,那個很多洞洞那個口就是串列埠,也稱com口,序列介面 好啦,下面講講串列埠程式開發。記住在windows上面的程式設計一切都是基於windows作業系統的。之前在寫串列埠採集資料的上位機時也頗為...