“一個(gè)非常硬核的黑客項(xiàng)目,以極簡(jiǎn)的設(shè)計(jì),使用沁恒的 ch32v003,在不使用驅(qū)動(dòng)芯片的前提下,實(shí)現(xiàn)支持 USB-C、觸控的 7 段 LCD 屏幕。”
?項(xiàng)目概覽在電子工程領(lǐng)域,通過創(chuàng)新的軟硬件協(xié)同設(shè)計(jì),可以在極簡(jiǎn)的硬件平臺(tái)上實(shí)現(xiàn)復(fù)雜功能,本項(xiàng)目即是對(duì)此理念的一次成功實(shí)踐。項(xiàng)目把一塊普通的7段LCD,轉(zhuǎn)化為一個(gè)具備觸摸感應(yīng)能力并通過USB-C接口與主機(jī)通信的功能性設(shè)備。整個(gè)系統(tǒng)的核心是一顆 CH32V003 RISC-V 單片機(jī),神奇的地方在于它本身并不具備 USB 通信、LCD 驅(qū)動(dòng)或觸摸感應(yīng)的專用硬件支持。
看下設(shè)計(jì)的原理圖,芯片就一個(gè)成本一塊多的 ch32v003 加一個(gè) 5V 轉(zhuǎn) 3.3 V 的 LDOXC6206P332MR-G,沒有任何額外的驅(qū)動(dòng)芯片:
J1 也并沒有使用 USB 接插件,而是直接把 PCB 做成了插頭:
為了確保正常的拔插,要求:- PCB 厚度必須為 0.6 mm
- PCB 應(yīng)使用 ENIG(化學(xué)鍍鎳浸金)工藝,而不是 HASL(熱風(fēng)整平或噴錫),因?yàn)?HASL 可以提供更平滑、耐磨的接觸面。
CH32V003 無(wú)需預(yù)編程,只需能接觸到GND/SWIO/5V引腳即可燒錄引導(dǎo)加載程序(bootloader)。LCD 屏是淘寶上找來的,不帶驅(qū)動(dòng),驅(qū)動(dòng)電壓為 3V,符合以下規(guī)格:


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

可以看到,使用 USB 會(huì)把事情搞砸,因?yàn)楫?dāng) USB 運(yùn)行時(shí),它無(wú)法將 SEG 引腳的電壓穩(wěn)定在VCC的一半。
對(duì)于觸摸功能,輸出會(huì)通過內(nèi)部上拉電阻從低電壓狀態(tài)重復(fù)釋放,同時(shí)使用 ADC 測(cè)量電壓以獲取觸摸量。
這看起來很完美,直到 USB 來攪局。
基于 ADC 的電容式觸摸感應(yīng)
這或許是項(xiàng)目最具創(chuàng)新性的部分。它在沒有任何額外硬件的情況下,將 LCD 的引腳轉(zhuǎn)變成了電容式觸摸傳感器。這一功能的實(shí)現(xiàn),巧妙地利用了 CH32V003 內(nèi)置的10位模數(shù)轉(zhuǎn)換器(ADC)。其測(cè)量過程是一個(gè)經(jīng)過精確計(jì)時(shí)的序列:
-
首先將線路驅(qū)動(dòng)至低電平,以對(duì)任何電容進(jìn)行放電。
-
在啟動(dòng) ADC 采樣的同時(shí),為 LCD 的所有端口應(yīng)用上拉電阻。ADC 的設(shè)置和采樣時(shí)間點(diǎn)必須精確對(duì)齊到Fcpu/2。
-
這個(gè)過程使得 LCD 引腳上的電壓開始上升,其上升速率與引腳上的總電容成反比。當(dāng)手指觸摸玻璃時(shí),會(huì)引入額外的人體電容,從而減緩電壓上升的速度。
-
通過高速、多次的采樣(即過采樣技術(shù)),系統(tǒng)能夠從噪聲中提取出這一微弱的電容變化信號(hào),從而判斷觸摸事件的發(fā)生。
-
為提高輸入的可靠性,軟件層面還集成了遲滯算法,用以有效區(qū)分真實(shí)的“按下”與“釋放”動(dòng)作,防止了誤觸發(fā)。
并發(fā)性的挑戰(zhàn)
該項(xiàng)目的核心成就不僅在于實(shí)現(xiàn)了以上三項(xiàng)功能,更在于讓它們?cè)谝粋€(gè)資源極其有限(2KB SRAM, 16KB Flash)的單核MCU上并發(fā)運(yùn)行。
這三項(xiàng)任務(wù)對(duì)系統(tǒng)資源的要求是相互沖突的:USB 需要高優(yōu)先級(jí)時(shí)序來保證其比特流的完整性;LCD 需要一個(gè)持續(xù)、有節(jié)奏的刷新率(約30-60 Hz)來避免閃爍;而觸摸感應(yīng)則需要一個(gè)安靜、穩(wěn)定的模擬環(huán)境以進(jìn)行精確的 ADC 讀數(shù)。
波形圖中的干擾現(xiàn)象,是系統(tǒng)運(yùn)行在其能力極限的典型癥狀。來自 USB 任務(wù)的中斷可能會(huì)延遲 LCD 的刷新,導(dǎo)致可見的閃爍,或者擾亂觸摸感應(yīng)的 ADC 采樣窗口,導(dǎo)致錯(cuò)誤的讀數(shù)。與基于硬件的解決方案相比,這是位沖撞(軟件)方法最主要的缺點(diǎn)和風(fēng)險(xiǎn)。
該項(xiàng)目的成功嚴(yán)重依賴 于CH32V003 的青稞 V2A 內(nèi)核及其 GPIO 端口的特定且可預(yù)測(cè)的性能特征。將此代碼移植到另一個(gè) MCU,即使規(guī)格相似,也極有可能需要對(duì)所有時(shí)序關(guān)鍵的循環(huán)和中斷處理程序進(jìn)行全面的重新校準(zhǔn)。所以說這并非一個(gè)可移植的解決方案。太黑科技了!
一定要那么省錢?那么黑科技么?
該方案過于黑科技,對(duì)技術(shù)要求的門檻較高,且不易移植,主要目的是炫技+裝逼 :P。從產(chǎn)品開發(fā)的角度看,這可能并不是一個(gè)好的方案,雖然成本很低、BOM極簡(jiǎn),但同時(shí)帶來了系統(tǒng)不穩(wěn)定的問題。因此,基于不同的場(chǎng)景,需要采用的方案。作為對(duì)比,我們完全可以使用性能更強(qiáng)、外設(shè)更多的 MCU,下表是一個(gè) MCU 解決方案的對(duì)比,可做參考:
同樣的,如果不拘泥于成本,對(duì)穩(wěn)定性要求較高,我們也完全可以使用外部的驅(qū)動(dòng)芯片,這樣會(huì)極大的降低固件的復(fù)雜性,對(duì)開發(fā)人員更友好,也利于縮短開發(fā)難度和周期。下圖是一個(gè)簡(jiǎn)單的對(duì)比:
當(dāng)然,除了升級(jí)硬件、使用外部 IC 外,也可以使用更直接的方法:購(gòu)買與集成的顯示模塊,比如直接采購(gòu) SparkFun 的串行7段顯示器(板載ATMega328)。結(jié)束語(yǔ)
該項(xiàng)目成功地將無(wú)連接器 USB-C 設(shè)計(jì)、軟件實(shí)現(xiàn)的 USB 通信以及新穎的電容式觸摸感應(yīng)方法整合在一套極低成本的硬件方案中。它充分展示了在資源受限的微控制器上,憑借對(duì)電子原理的深刻理解和精巧的軟件工程,依然能夠開發(fā)出功能豐富且實(shí)用的嵌入式系統(tǒng)。當(dāng)然,黑客的項(xiàng)目雖然很酷,但在實(shí)際的產(chǎn)品設(shè)計(jì)中并不常用。我們應(yīng)該根據(jù)不同的需求、場(chǎng)景,制定合理的方案。這也是硬件開發(fā)好玩的地方!最后,項(xiàng)目的倉(cāng)庫(kù)在這里:https://github.com/cnlohr/ch32v003_3digit_lcd_usb/
有興趣的小伙伴可以自己嘗試復(fù)刻!-
usb
+關(guān)注
關(guān)注
60文章
8349瀏覽量
280689 -
LCD驅(qū)動(dòng)
+關(guān)注
關(guān)注
4文章
92瀏覽量
27203 -
RISC-V
+關(guān)注
關(guān)注
48文章
2723瀏覽量
51426 -
沁恒微電子
+關(guān)注
關(guān)注
4文章
29瀏覽量
2039 -
ch32
+關(guān)注
關(guān)注
0文章
74瀏覽量
1106
發(fā)布評(píng)論請(qǐng)先 登錄
原廠 FZH1692P/Q 4*40 LCD 顯示驅(qū)動(dòng)控制專用電路,最多顯示 160段
原廠 FZH175 通用LCD顯示驅(qū)動(dòng)電路 156段LCD
【作品合集】沁恒微電子CH585開發(fā)板測(cè)評(píng)
【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】+TFT屏顯示驅(qū)動(dòng)
【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】+品讀老朋友的新產(chǎn)品
【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】+開箱及開發(fā)環(huán)境準(zhǔn)備
原廠驅(qū)動(dòng)芯片LCD顯示驅(qū)動(dòng)電路FZH165
FZH1691 4×36 LCD顯示屏高集成度驅(qū)動(dòng)控制芯片中文手冊(cè)
FZH1692P/Q 4×40 LCD顯示屏高性能驅(qū)動(dòng)控制芯片中文手冊(cè)
低電流LCD驅(qū)動(dòng)抗噪液晶屏驅(qū)動(dòng)芯片VKL060
國(guó)產(chǎn)沁恒微芯片怎么樣?
國(guó)產(chǎn)芯片沁恒USB 3.0芯片替代方案解析
其他芯片太貴?聊聊沁恒可直接替代USB HUB控制器 USB3.0 HUB芯片有哪些?
沁恒CH541:E8051內(nèi)核的USB雙功能MCU

用沁恒CH32V003在沒有USB、觸摸、LCD驅(qū)動(dòng)芯片的情況下實(shí)現(xiàn)3位7段LCD顯示
評(píng)論