2023年7月16日 星期日

USB to UART (RS232/RS485) 故事與應用(三)

月初本來就是要打算寫一篇USB to UART 的技術文章,但寫這種技術分享文章

真的事先需要一點時間來整理一下相關技術資料,所以要動手寫這種文章不容易。

但我還是希望分享一下這些經驗,當然也可以從中延伸一些技術以外的經驗,

供各位看倌們,可以多想想一些未來在技術養成與就業(創業)機會條件上,有甚麼

可以借鏡的。 這些都不是賣弄甚麼高超的技術能量,而是都是一些工作經驗上,

所碰到的使用需求所累積下來的。我也常說:只要有老闆金主願意付錢給你,

而你也可以從中要求自己的把事情做得更好時,你就可以累積這些技術了。需要的

就是時間與機會而已。玩久了,不成仙也會成精的啦。😂😂😂

所以我也希望藉由一些簡單的技術經驗分享,從中可以協助你點出你未來要思考的

機會與出路問題。(看到最後結論與心得吧。)

--------

UART 或者是 RS232,你也可以泛稱它為串口通訊,這一類的東西,在許多工程應用上,

往往都是一些系統對外聯繫或資料交換用的。也不一定是產品使用上的功能,但它卻是

在許多產品開發驗證測試與生產管理上,所不可欠缺的一環你真的不要以為產品研發

就只有埋頭高興寫自己所喜歡的系統環境就好,其實產品最後要生產上市前,還有

很多驗證測試與生產管理上的工作需要產品設計開發者一併提供相關技術支援的啦

很多人說:學校老師或研究學者跟一般現實生活工程師有何不同?最大的差別在哪?

學校老師可以不管這些,一樣到每個月底都有薪水入帳,但我們工程師搞技術弄產品開發

沒有完成生產出貨,老闆就沒辦法收款付你薪水了。你有 90% 的產品開發技術,但缺了

這一塊就一樣甚麼都沒有。那你說:我只負責產品核心技術開發,這些雜七雜八的鳥事

不關我的事。真的是這樣子嗎?你覺得老闆(長官)會跟你一樣的這麼想嗎?你覺得老闆

(長官)應該要找多少人來做這些事?如果別人可以做得到,而你做不到?你又有了年紀,

你覺得你老闆(長官)會用哪種眼光來看你?年輕一輩的工程師們又會怎麼評論你?

--

簡單的說明一下工程上所常碰到的串口通訊所延伸的應用領域有哪些?


我們這次就直接針對一些我們在產品開發上常會碰到的儀器設備來看。從圖上我們

就知道這些泛用通訊界面,基本上其實都屬於串列通訊方式。從這些名詞大家大該也知道

這些東西不會被淘汰的,也會一直延伸下去的。(這張圖是我在網路搜尋裡找到的簡報檔)

而我要舉的例子是最下面的那個 SCPI。


這個SCPI 算是一種很古老的東西了。


它也有它自己的標準規範說明書。

有興趣的可以自行上網搜尋查閱。但我們要看到的就是它在實務上怎麼使用?

有很多公司、也有很多產品也都沿用這樣規範定義:



這是傳統的一般串列通訊所定義的通訊資料交換內容規範與標準。(其實MOD Bus

介面也是另一大宗應用規範與標準,差別是它的資料格式也有一定的方式,也包含

通訊資料的檢查機制(CRC)。有興趣的也可以自行查閱...等你用到了,就會了。)

但現在實際上許多電腦或筆記型電腦或裝置真的都沒有所謂的串列通訊口了。

所以這些串口通訊就得借重USB 轉UART 這種東西了。

上回我有簡單的介紹一下關於 USB 轉 UART 的一些解決方案。但關於 FTDI  的方案

我缺了一些內容,我在這也給它補充一下:

其實這個FTDI 中的 USB 轉UART 用它自己的驅動程式,是含有兩組驅動介面的。


它除了一個標準看到的串列通訊介面,它還有一個所謂的 USB Serial Converter。

因為我們可以從原廠所提供的安裝程式包裡可以查看到的。它有兩個 INF 檔。

我們系統安裝這些驅動程式後,會躲在所謂的系統 Windows\INF 目錄下。


但是它就是落落長一大串,你根本不知道哪個是哪個原廠提供的驅動程式中的 INF 。


你也可以慢慢查得到的,上圖我們找到了:oem77.inf 就是對應原廠的ftdibus.inf。

而這一支驅動程式介面是支援所謂的 USB Serial Converter,這一支不是我們常用的

USB 轉 UART 的那個COMx 。它有甚麼特殊使用功能?晚一點再補充說明。

所以它原廠的另一隻 ftdiport.inf 就是我們常用的COMx。 

當你查完這些硬體與驅動程式的安裝之後,你就可以專心寫應用軟體程式了。

我們就拿一個簡單的範例來說明一下,這個裝置對象是鼎鼎有名的 Fluke 設備裝置。

這個品牌的測試量測設備是業界公認的第一品牌,它的標準界就是支援 SCPI 的。


程式一開始就是透過FTDI原廠 所提公司的函數庫對串列埠進行初始化與設定。

這些很傳統的設備裝置的傳輸速率都不高的啦。 9600 Baudrate 就綽綽有餘了。


在 VC 傳統語言中,只要對裝置就跟一般檔案IO 語法都是一樣的,無非就是 Read/Write

兩種路徑而已。然後你就可把SCPI 標準規範中的語法指令給包進軟體函數中了:


這些都不是太困難的東西。如果你覺得比較困難的應該就是我怎麼會寫 VC 程式?

而且這種程式也不是光寫這些標準介面語法而已,它還要包成一個 GUI 圖形介面的

東西。這才是難的吧。對的~這就沒辦法了。套一句前一兩篇文章中,網友留言的。

以前大公司甚麼資源都有,但自己創業就得想辦法甚麼都自己來,韌體、硬體乃至於

軟體APP 都得自己來啊 。這個故事我也寫過。我說了:開公司創業你要嘛就是一個產品

拿出來賣的長長久久的...做為人生變現用,要不然就把這些十八般武藝拿出來變現

換薪水過日子,要不然呢?你還以為動動嘴巴就有錢領喔?

---

所以搞了這個FTDI 的串列轉換方案就覺得人家這個東西從IC 、驅動程式到軟體封裝

套件真的包得漂亮又方便使用,所以有興趣進一步研究一下人家其他相關產品線:


大家看了別訝異,我是老人家純粹是研究研究而已。大家比較常用的還是左下角的那個東西。


其他的那些無非就是也可以幫你做 UART 以外的介面轉換,譬如 USB 轉 SPI 。USB 轉 I2C。

或是 USB 轉 FIFO (Parallel port) 等。而且還支援所謂的同時兩組 COMx 。四組 COMx。

其實都是同樣的技術:複製貼上而已。


這是原先那個標準 FT232 方案。以下是 FT2232 兩組 COMx 的。

它就是在USB 上面宣告兩組特性一模一樣的 interface 而已。

以下是 FT4232 。四組COMx ,依樣就是複製貼上的四組 USB interface 宣告。



技術難不難?就是只要基礎的懂了。其他就是變變手法花樣而已。

接下來就是一般的軟體函數庫的支援:



這是一段 USB 轉 I2C ,去讀一般 24Cxx EEPROM 範例了啦。

但如果是我來做的話,我就未必會用這種IC 的這種方式,我搞不好就會用 HID 的方式

自己刻一個屬於自己的傳輸介面的方式。重點還是在於:戲法要怎麼變?才是比較好的

生意模式?如果重點就只是儀器設備裝置,你要賺的純粹是技術服務案。那就省事一點。

但如果是包成自己標準產品支援介面的話,就可以另外用HID 或其他方式做。

我常常說:技術就是一個手段,重點還是在於你想做甚麼產品?甚麼客戶目標市場?

你的產品策略要怎麼包裝行銷?

這些都是我這個上了年紀的工程師會比較思考的重點。而非技術本身。

因為越是專精過於深入的技術領域,有時候未必就真的比較容易賺得到錢,也沒有說

你技術很厲害就可以賺比較高的毛利?如果像這一種藉由標準介面轉換,提供軟體

技術支援,你也不用老是在想:還要搞PCB 電路板?還要寫甚麼韌體?甚至還要

搞甚麼新技術鑽研...你只要把這些標準介面規範與法K 一K 。別人的儀器設備支援

的規格瞭解一下。你大概就可以從軟體的角度下手了。也不要說甚麼軟體開發

費用要多高啦...隨隨便便的把這些設備介面整合寫個測試軟體介面...絕對夠你吃一

、兩年的啦。還可以交交朋友、交際應酬一下的啦。

這就是落實我說的:要嘛你就是搞個產品,不要看人家的臉色,東西拿出來賣得

長長久久的...要嘛就不要給自己太設限,只要你的技術底子可以承受,也可以做到的,

只要別人出得起費用,付得起你的薪水。你就做啊。

這些本來就是你從年輕時代磨練你全面技術時,所練就出來的本事,也是靠自己

技術存活啊。也是另一種人生變現啊。

但記住:這完全就是趁早就得準備,年輕時,真的不要得自己太過於設限:

我只要搞硬體、或只搞軟體、韌體。甚至說:我只要侷限在某一個市場領域裡或

某個產品技術裡。

我說過:當你年紀越來越大時,你所能選擇的條件與機會就越來越少了。

到了我這個年紀時,你就會發現:面對人生變現的這件事來說,你所承受的成本與

學習壓力才是你這個階段所要重視的課題

分享給各位,尤其是年輕工程師們。加油。

沒有留言:

張貼留言