2020年7月30日 星期四

otg 資料來源 https://benevo.pixnet.net/blog/post/57195417-usb-otg-smart

常聽到甚麼 OTG 的,小編初聽之下直接就翻成On The Go,就是"外出"的意思,那"在家裡"就是 At Home,然後就在一堆英文介係詞中畫下好奇的句點。。。。。。。。。

 

過了好一段時間,才發現,事情沒有那麼簡單... 

原來OTG,常指 USB OTG,就是可以讓大家的智慧型手機"外接隨身碟"的意思,這樣用隨身碟分享檔案就不用受限於筆電了! 該是說,就不用帶一台比手機大的筆電...

當智慧型手機愛上USB隨身碟 

而這一個關鍵的小工具其實就是一條一端是Micro USB,另一端是USB Type A母頭的短線,讓你可以把隨身碟輕鬆接上...

USB OTG可以作為手機與隨身碟的橋樑 

 

經過STUDY之後,原來透過這種USB OTG短線,不只可以讓手機可以讀隨身碟的資料,還可以

1. 接讀卡機

智慧型手機透過USB OTG可以接讀卡機 

 

2. 也可以讀另一台手機裡面記憶卡的檔案

哇,還可以讀別人手機的記憶卡! 

 

3. 可以讀取數位相機裡面記憶卡的檔案

數位相機的記憶卡也行,這USB OTG真有趣呀! 

 

4. 可以外接滑鼠操作(操作某些遊戲軟體)

有了滑鼠,玩GAME就更厲害了! 

 

5. 可以外接鍵盤

手機接上鍵盤,叫我快打神手! 

 

也有一些多功能的連接線,可以一次接兩種裝置,以及幫忙補上不足的電源,但話說,沒有OTG,我們不也過得好好的,你覺得OTG真的有需要嗎?! 但想一想,這小東西先備而不用,哪天臨時用到就"有價值"到了啦!有空就查看看自己的手機有沒有支援"OTG"吧!

這樣用OTG,一次用更多種法寶,還加上電源哩!


NRZI 來源https://beeway.pixnet.net/blog/post/16803410

當PC主機對裝置發出控制信號時,所有連接的裝置都透過根集線器收到同樣的信號,但是經由比對所配置的裝置位址後,只能有一個裝置會作出相對應的動 作,這跟網路的架構有點類似。因此對一個裝置而言,不僅要無誤地接收主機端所送來的資料,又要正確地發出回應的信號。因此在D+與D-的差動資料線上就必 須採用一種特別的編號方式再加以傳送出去,以解決在USB纜線所產生訊號延遲,以及誤差等問題。

在此,USB採用了NRZI(Non Return to Zero Invert,不歸零就反向)的編碼方式,就無需同步的時脈信號也能產生同步的資料存取。NRZI的編碼規則是,當資料位元為 “1” 時不轉換,為 “0” 時再作轉換。如圖12所示,顯示了的NRZI編碼的範例。

圖12 NRZI編碼的範例說明


但如此的編碼方式會遇到一個很嚴重的問題,就是若重複相同的 “1” 信號一直進入時,資料就會造成長時間無法轉換,逐漸的累積,而導致“塞車”的狀況,這使得讀取的時序就會發生嚴重的錯誤。
因此,在NRZI編碼之間,還需執行所謂的位元填塞(Bit-stuffing)的工作。如圖13(a)所示,若是原始的串列資料中含有連續6個 “1” 位元的話,就需執行位元填塞的工作。此工作如圖13(b)所示,就在其後填塞一個 “0” 位元。但相對的在NRZI編碼的過程中,對這連續的6個 “1” 執行如圖13(c)轉換過程。
因此在發送端在作資料傳輸之前,需先執行位元填塞以及NRZI編碼的工作。相對的,接收端在作資料接收之前,就必需先執行NRZI解碼,然後再作位元反填塞(unBit-Stuffing)的工作。

圖13 NRZI解碼的過程

[資料來源]

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...