“一個非常硬核的黑客項目,以極簡的設(shè)計,使用沁恒的 ch32v003,在不使用驅(qū)動芯片的前提下,實現(xiàn)支持 USB-C、觸控的 7 段 LCD 屏幕。”

在電子工程領(lǐng)域,通過創(chuàng)新的軟硬件協(xié)同設(shè)計,可以在極簡的硬件平臺上實現(xiàn)復(fù)雜功能,本項目即是對此理念的一次成功實踐。項目把一塊普通的7段LCD,轉(zhuǎn)化為一個具備觸摸感應(yīng)能力并通過USB-C接口與主機通信的功能性設(shè)備。整個系統(tǒng)的核心是一顆 CH32V003 RISC-V 單片機,神奇的地方在于它本身并不具備 USB 通信、LCD 驅(qū)動或觸摸感應(yīng)的專用硬件支持。
看下設(shè)計的原理圖,芯片就一個成本一塊多的 ch32v003 加一個 5V 轉(zhuǎn) 3.3 V 的 LDOXC6206P332MR-G,沒有任何額外的驅(qū)動芯片:


- PCB 厚度必須為 0.6 mm
- PCB 應(yīng)使用 ENIG(化學(xué)鍍鎳浸金)工藝,而不是 HASL(熱風(fēng)整平或噴錫),因為 HASL 可以提供更平滑、耐磨的接觸面。




USB 協(xié)議的軟件實現(xiàn)
由于 CH32V003 并不帶原生的 USB 控制器,作者使用了 Bit-Banged 的技術(shù)理念,利用軟件直接操控 GPIO 引腳來模擬硬件協(xié)議,生成速率為 1.5Mbps 的差分信號。雖然會占用大量CPU開銷,但還是成功模擬了一個 USB1.1 設(shè)備。
當然,需要對這一做法進行權(quán)衡:雖然節(jié)省了 USB PHY 物理層和控制器硬件的成本,但犧牲了寶貴的CPU周期和系統(tǒng)的穩(wěn)定性。
在此基礎(chǔ)上,還開發(fā)了自定義的引導(dǎo)加載程序(Bootloader),使得設(shè)備固件可以直接通過USB接口進行更新,無需借助外部編程器。
GPIO 直接驅(qū)動 LCD
對于無源 LCD 的驅(qū)動,項目通過單片機的 GPIO 引腳產(chǎn)生精確的時序脈沖,并利用其內(nèi)部的上下拉電阻,以軟件模擬專用驅(qū)動芯片的功能,從而控制各筆段的顯示。與簡單的直流驅(qū)動 LED 數(shù)碼管不同,扭曲向列(Twisted Nematic, TN)液晶顯示器(LCD)需要交流(AC)驅(qū)動波形,以防止液晶材料發(fā)生電化學(xué)降解。完全通過軟件直接生成了這種復(fù)雜的驅(qū)動波形。對于基本的 LCD 輸出,可以使用一個簡單的10 階段波形:
-
階段 0-3= 依次將特定的 COM(公共電極)引腳驅(qū)動為低電平,同時將任何需要點亮的 SEG(段電極)引腳驅(qū)動為高電平。
-
階段 4= 空閑時間,確保沒有電壓差。這也有助于控制對比度。
-
階段 5-8= 依次將特定的 COM 引腳驅(qū)動為高電平,同時將任何需要點亮的 SEG 引腳驅(qū)動為低電平。
-
階段 9= 用于控制對比度的另一半空閑時間。

可以看到,使用 USB 會把事情搞砸,因為當 USB 運行時,它無法將 SEG 引腳的電壓穩(wěn)定在VCC的一半。



基于 ADC 的電容式觸摸感應(yīng)
這或許是項目最具創(chuàng)新性的部分。它在沒有任何額外硬件的情況下,將 LCD 的引腳轉(zhuǎn)變成了電容式觸摸傳感器。這一功能的實現(xiàn),巧妙地利用了 CH32V003 內(nèi)置的10位模數(shù)轉(zhuǎn)換器(ADC)。其測量過程是一個經(jīng)過精確計時的序列:
-
首先將線路驅(qū)動至低電平,以對任何電容進行放電。
-
在啟動 ADC 采樣的同時,為 LCD 的所有端口應(yīng)用上拉電阻。ADC 的設(shè)置和采樣時間點必須精確對齊到Fcpu/2。
-
這個過程使得 LCD 引腳上的電壓開始上升,其上升速率與引腳上的總電容成反比。當手指觸摸玻璃時,會引入額外的人體電容,從而減緩電壓上升的速度。
-
通過高速、多次的采樣(即過采樣技術(shù)),系統(tǒng)能夠從噪聲中提取出這一微弱的電容變化信號,從而判斷觸摸事件的發(fā)生。
-
為提高輸入的可靠性,軟件層面還集成了遲滯算法,用以有效區(qū)分真實的“按下”與“釋放”動作,防止了誤觸發(fā)。
并發(fā)性的挑戰(zhàn)
該項目的核心成就不僅在于實現(xiàn)了以上三項功能,更在于讓它們在一個資源極其有限(2KB SRAM, 16KB Flash)的單核MCU上并發(fā)運行。
這三項任務(wù)對系統(tǒng)資源的要求是相互沖突的:USB 需要高優(yōu)先級時序來保證其比特流的完整性;LCD 需要一個持續(xù)、有節(jié)奏的刷新率(約30-60 Hz)來避免閃爍;而觸摸感應(yīng)則需要一個安靜、穩(wěn)定的模擬環(huán)境以進行精確的 ADC 讀數(shù)。
波形圖中的干擾現(xiàn)象,是系統(tǒng)運行在其能力極限的典型癥狀。來自 USB 任務(wù)的中斷可能會延遲 LCD 的刷新,導(dǎo)致可見的閃爍,或者擾亂觸摸感應(yīng)的 ADC 采樣窗口,導(dǎo)致錯誤的讀數(shù)。與基于硬件的解決方案相比,這是位沖撞(軟件)方法最主要的缺點和風(fēng)險。
該項目的成功嚴重依賴 于CH32V003 的青稞 V2A 內(nèi)核及其 GPIO 端口的特定且可預(yù)測的性能特征。將此代碼移植到另一個 MCU,即使規(guī)格相似,也極有可能需要對所有時序關(guān)鍵的循環(huán)和中斷處理程序進行全面的重新校準。所以說這并非一個可移植的解決方案。太黑科技了!
一定要那么省錢?那么黑科技么?
該方案過于黑科技,對技術(shù)要求的門檻較高,且不易移植,主要目的是炫技+裝逼 :P。從產(chǎn)品開發(fā)的角度看,這可能并不是一個好的方案,雖然成本很低、BOM極簡,但同時帶來了系統(tǒng)不穩(wěn)定的問題。因此,基于不同的場景,需要采用的方案。作為對比,我們完全可以使用性能更強、外設(shè)更多的 MCU,下表是一個 MCU 解決方案的對比,可做參考:

結(jié)束語
該項目成功地將無連接器 USB-C 設(shè)計、軟件實現(xiàn)的 USB 通信以及新穎的電容式觸摸感應(yīng)方法整合在一套極低成本的硬件方案中。它充分展示了在資源受限的微控制器上,憑借對電子原理的深刻理解和精巧的軟件工程,依然能夠開發(fā)出功能豐富且實用的嵌入式系統(tǒng)。當然,黑客的項目雖然很酷,但在實際的產(chǎn)品設(shè)計中并不常用。我們應(yīng)該根據(jù)不同的需求、場景,制定合理的方案。這也是硬件開發(fā)好玩的地方!最后,項目的倉庫在這里:https://github.com/cnlohr/ch32v003_3digit_lcd_usb/
有興趣的小伙伴可以自己嘗試復(fù)刻!-
usb
+關(guān)注
關(guān)注
60文章
8319瀏覽量
279013 -
LCD驅(qū)動
+關(guān)注
關(guān)注
4文章
92瀏覽量
27164 -
RISC-V
+關(guān)注
關(guān)注
47文章
2694瀏覽量
50806 -
沁恒微電子
+關(guān)注
關(guān)注
4文章
29瀏覽量
1980 -
ch32
+關(guān)注
關(guān)注
0文章
74瀏覽量
1044
發(fā)布評論請先 登錄
【作品合集】沁恒微電子CH585開發(fā)板測評
【沁恒CH585開發(fā)板免費試用體驗】+TFT屏顯示驅(qū)動
【沁恒CH585開發(fā)板免費試用體驗】+品讀老朋友的新產(chǎn)品
【沁恒CH585開發(fā)板免費試用體驗】+開箱及開發(fā)環(huán)境準備
FZH1691 4×36 LCD顯示屏高集成度驅(qū)動控制芯片中文手冊
FZH1692P/Q 4×40 LCD顯示屏高性能驅(qū)動控制芯片中文手冊
低電流LCD驅(qū)動抗噪液晶屏驅(qū)動芯片VKL060
國產(chǎn)沁恒微芯片怎么樣?
國產(chǎn)芯片沁恒USB 3.0芯片替代方案解析
其他芯片太貴?聊聊沁恒可直接替代USB HUB控制器 USB3.0 HUB芯片有哪些?
沁恒CH541:E8051內(nèi)核的USB雙功能MCU

評論