RS-485收發(fā)器難題詳解
SH69P04的功能及特點(diǎn)
本文引用地址:http://dyxdggzs.com/article/202006/414310.htm1. USB和PS2端口共用
通過(guò)寄存器實(shí)現USB端口和PS2端口的切換
PS2PU = 1: 如果PS2IS = 1, 則內部PS2專(zhuān)用上拉電阻起作用。當需要使用USB端口時(shí), 只要讓PS2IS = 0即能關(guān)閉PS2端口及其上拉電阻。
2. 1.5KΩ可控上拉電阻
如圖2, 有了這個(gè)1.5KΩ可控上拉電阻一方面可以節約成本, 另一方面可以實(shí)現軟開(kāi)關(guān), 確保PC認出DEVICE。
當USB DEVICE和PC相連后由于內部1.5KΩ上拉電阻并未打開(kāi), 所以PC不認為有新的設備連接。 在打開(kāi)上拉電阻前用戶(hù)可以放心的完成程序初始化及其它客戶(hù)程序, 而不必擔心需要及時(shí)響應USB總線(xiàn)上的信號。 這是因為如果沒(méi)有可控的上拉電阻而是直接外加, 那么當DEVICE和PC相連后, PC馬上就會(huì )知道有新的設備連接, 在一定時(shí)間后就會(huì )向DEVICE發(fā)送信號, 如果DEVICE連續幾次通訊失敗的話(huà), PC就認為該DEVICE出錯而不會(huì )再和它通訊。
另外結合Watch Dog可以進(jìn)一步確保DEVICE的連接。 用戶(hù)可以事先計算一下整個(gè)USB初始化過(guò)程所需的時(shí)間, 并設置Watch Dog。 萬(wàn)一USB初始化出錯就可以產(chǎn)生Watch Dog Reset, 1.5KΩ上拉就被關(guān)閉, 程序重新開(kāi)始。 PC就會(huì )認為DEVICE有了一次插拔動(dòng)作。程序死鎖也可以用這種方法來(lái)解決。
圖 3
3. 專(zhuān)為MOUSE設計的I/O端口
如圖3, 原理分析時(shí)Q1.1和Q1.3是輸出方波。 實(shí)際上由于Photo Transistors是采用光敏三極管, 當光柵轉動(dòng)時(shí), 光敏三極管受到的光線(xiàn)也是連續變化的, 所以輸出的波形也是連續變化的。 又因為光柵無(wú)法完全阻隔光線(xiàn), 所以會(huì )產(chǎn)生一個(gè)OFFSET電平。 實(shí)際波形如圖4。
圖中VIH表示一旦輸入電平高于VIH, 那么MCU就認為是高電平。 VIL表示一旦輸入電平低于VIL, 那么MCU就認為是低電平。 在圖4所示的這種狀態(tài)下MCU可以很方便的讀到光柵轉動(dòng)的情況。 但是由于干擾或者元器件老化等原因造成OFFSET電平發(fā)生變化, 使得輸入信號的電平無(wú)法和VIH、VIL相交(如圖5), MCU就會(huì )認為輸入的信號一直為高或一直為低。
SH69P04為每一個(gè)MOUSE的端口提供三檔下拉電阻(如圖4)來(lái)控制OFFSET電平。 通過(guò)寄存器來(lái)選擇下拉電阻的阻值, 用以解決由于OFFSET電平的變化而引起的錯誤。
軟件設計
USB協(xié)議雖然很復雜, 但是MOUSE端需要編寫(xiě)的程序卻十分有限。 用戶(hù)很容易就能和PC建立聯(lián)系。(Windows端HID驅動(dòng)程序由操作系統提供)
1. USB/PS2端口的監測
第一步: 上電, delay 50ms
第二步: 在2ms的時(shí)間內監測D-的電平, 如果有4次為高電平, 就是PS2接口。 否則進(jìn)入第三步
第三步: 打開(kāi)USB上拉電阻, delay500us, 反復監測D+和D-的電平, 直到其中有一個(gè)出現高電平。 如果D+是高電平, 則為PS2接口。 如果D-是低電平, 則進(jìn)入第4步。
第四步: 關(guān)閉USB上拉電阻, delay 100us。 如果D+/D-都為低電平, 則為USB接口。
否則就是PS2接口。
2. USB Enumeration過(guò)程
整個(gè)過(guò)程有點(diǎn)像做測試題。 PC問(wèn), MOUSE回答。 其中關(guān)鍵是要告訴PC, 自身是一個(gè)MOUSE, 支持HID協(xié)議。 由于篇幅有限, 就不詳細列出了。
3. 把MOUSE的信息傳給PC
在Enumeration過(guò)程中, MOUSE會(huì )告訴PC后續X,Y,Z,按鍵這些信息的格式。 當MOUSE有動(dòng)作時(shí), 只要按這個(gè)格式把數據返回給PC就可以了。 剩下的事情PC端HID驅動(dòng)程序會(huì )去完成。
評論