隨著芯片價格瘋漲,項目的不可控性越來越大。特別是價格方面,達到了無法想象的地步了。
以之前《UEFI編程實踐》所用的YIE002開發(fā)板為例,當(dāng)時選擇使用STM32F103C8T6,也是因為它是一款性價比較高的MCU。當(dāng)然,也有我之前用這款CPU做過幾個項目,比較熟悉的原因在。
按我的記憶,之前項目中所用的STM32F103C8T6,價格在9元左右;而現(xiàn)在到立創(chuàng)商城上去查,單片價格到了驚人的109元!十幾倍的漲幅,哪個項目還敢用它?
因此,大部分公司,都在準(zhǔn)備各種替代方案。
我們也一樣,預(yù)備使用CH32F103C8T6替代STM32F103C8T6。這兩種芯片引腳兼容,內(nèi)部的資源差不多,理論上代碼移植也比較方便。
我就是這么想的,然后就被打臉了。
最大的原因在于,廠家提供的資料太少了!編程相關(guān)的CH32F103應(yīng)用手冊,只有短短的31頁。我想看的USB設(shè)備控制器的寄存器細節(jié),甚至都沒有。想想STM32豐富的應(yīng)用資料、例程和各種視頻,感覺從新手級難度到了骨灰級難度了。
不過,再想想CH32這友好的價格,也就釋然了。
周末兩天,把之前的USB HID通信,在CH32F103C8T6上實現(xiàn)了,估計不久能很快地應(yīng)用到項目中去。
1 固件下載
CH32F103的芯片,支持WCH-Link或者其他SW仿真工具下載,也支持使用WCHISPTool通過USB和串口下載。考慮到后續(xù)開發(fā)的時候需要調(diào)試,我使用的是WCH-Link進行下載。
如圖1所示,給出了WCH-Link的實物圖(摘自《WCH-Link使用說明-V1.3》)。
由于我的目標(biāo)是使用它下載程序到CH32F103C8T6中,只需要使用ARM模式就行了,不需要關(guān)注RISC-V模式。
拿到的WCH-Link,一般是RISC-V模式,需要將其切換到ARM模式。
模式切換的方法如下:
WCH-Link 斷電, 將圖一正面圖 1 中排針, TX 接 GND;
WCH-Link 上電, 切換模式成功后, 斷開 TX 和 GND;
后續(xù)使用時, WCH-Link 保持切換后的模式。
判斷的方法如下:
WCH-Link空閑時藍燈常滅,是為RISC-V模式;
WCH-Link空閑時藍燈常亮,為ARM模式。
在ARM模式下,Windows 10下是不需要安裝驅(qū)動的,而Win7有些情況下需要更換驅(qū)動,具體可以向廠家索取資料。
2 代碼編寫
我的目標(biāo)在篇首就給出了,使用CH32F103C8T6實現(xiàn)之前的USB HID雙向通信。
在經(jīng)歷了若干款MCU編寫USB代碼后,對這塊內(nèi)容已經(jīng)比較熟悉了。簡單來說,只要在USB HID的示例上,修改各類描述符,添加需要的命令處理就可以了。
可惜的是,廠家提供的示例代碼非常少。CH32F103C8T6支持兩個USB端口,一個是可做全速主機或設(shè)備的USBHD,另一個是全速設(shè)備USBD。
提供的示例代碼中,USBD給出了VirtualCom的工程;USBHD給出了DEVICE、HOSG、HOST_Udisk三個示例。
USBD的工程,類似于STM32的Legacy Library;而USBHD的工程,則使用了沁恒電子自己的庫。
我的目標(biāo)很明確,實在沒太多時間去研究沁恒電子的USB庫,因此采用了USBD的示例作為模板,進行開發(fā)。
由于USBD的工程與STM32的USB庫類似,我選擇深入研究下STM32的USB庫(畢竟資料更多,而且之前學(xué)習(xí)過)。
審核編輯黃昊宇
-
芯片
+關(guān)注
關(guān)注
454文章
50460瀏覽量
421971 -
單片機
+關(guān)注
關(guān)注
6032文章
44525瀏覽量
633258 -
ch32
+關(guān)注
關(guān)注
0文章
73瀏覽量
628
發(fā)布評論請先 登錄
相關(guān)推薦
評論