2023年6月15日 星期四

拆解創想 Creality K1

 買創想 Creality K1 的目的就是想要了解它到底為何能這麼快,在試用之後,就想拆開一探究竟了。還好,有人比我先動手,而且拍成視頻,我看他拆就好,不用動自己的機器。

YouTube 影片連結: Creality K1 Teardown, Inspection, First Print

整理一下看他拆的一些重點。

  • 有三個 Z軸,但只是用一個步進馬達經由皮帶帶動三個Z軸,所以和想像的獨立三Z軸差很遠。因此它的步進馬達總共只要 4個,XYZ 軸加擠出機,節省成本之一。
  • XYZ全都是光軸,比線軌省很多。
  • Z軸偵測,在熱床的四個角落有壓力偵測器,使用 HX711 壓力感測模組。
  • 熱床 240W,使用 24V直流供電。
  • 上位機和 MCU 做在同一塊 PCB 上,應是針對此款機型設計的系統。PCB 上只有3個步進驅動,擠出機的驅動在打印頭的 PCB。
  • 打印頭上,有 MCU 和步進馬達的驅動。MCU 是 GD32F303,可能使用 CAN BUS 和主機板連線。
  • 喉管風扇藏在打印頭的 PCB 後面。

2023年6月14日 星期三

存取創想 Creality K1 的 KLIPPER 的完整功能

參考影片 Get FULL KLIPPER Access on your Creality K1,詳細說明在影片下方的文字說明。

需要的檔案在這: https://github.com/giveen/K1_Files/tree/main/exploit

使用 git clone https://github.com/giveen/K1_Files 把整個 repo 下載下來。然後用瀏覽器開啟 'K1_Files/exploit/k3d_k1_exploit .html',會出現下面的畫面。

按 [Method A],它會把 shadow.gcode 上傳到印表機。嗯,不一定會成功,不過主機上多了一個 new_shadow.gcode。我試著去 print 那個 new_shadow.gcode,好像也沒什麼用。後來用手動把那個檔案上傳,再按 print,再按 [Method A],就跳出一個提示,說可以用 root/creality 登入 ...。所以,我是成功了,但不知道怎麼成功的,想玩的人就多試幾次吧。

shadow.gcode 的內容如下,上傳以後會放到系統 /etc 目錄下。
-----------------------------------
root:$5$/iMbCgHty3$rM7UZICj9tmUe13BcAOUgVvpa.sSMV4k/t2Yes64ZZ9:::::::
daemon:*:::::::
bin:*:::::::
sys:*:::::::
sync:*:::::::
mail:*:::::::
www-data:*:::::::
operator:*:::::::
nobody:*:::::::
dbus:*:::::::
-----------------------------------

這是一個密碼檔,使用 klipper 的上傳功能,再將該檔案移到 /etc 目錄下。

補記,稍微看了一下 html 檔。方法一是按 [Methdo A],由程式自己上傳資料,存成 new_shadow.gcode,再把它搬移改名成 /etc/shadow。方法二是要先手動上傳shadow.gcode,再按 [Methdo B] 把它搬移改名成 /etc/shadow。

再來,就用 ssh 進入,照著下面的步驟,啟動 moonraker_service。

修改步驟的英文說明。
-----------------------------------
#####################################################
# How to Get FULL KLIPPER Access on your Creality K1
# INSTRUCTIONS:
#####################################################

How to get Fluidd web interface on the Creality K1:
 1. Use K3D’s K1 Exploit (Слив нового Ender...  ) HTML doc to obtain SSH access 
 2. Connect to the printer via SSH (root + “creality”)
 3. Type “cp /usr/share/moonraker/moonraker.conf /usr/data/printer_data/config/“
 4. Type “vi /etc/init.d/S50nginx” and using the commands below, remove the comments from the lines:
 ⁃ # mkdir -p /var/log/nginx /var/tmp/nginx
 ⁃ # start-stop-daemon -S -x "$NGINX" -p "$PIDFILE” 
 ⁃ NOTE: Vi editor commands:
 ⁃ “I” is edit mode
 ⁃ “:w” is save
 ⁃ “:q” is quit
 5. Type “vi /etc/init.d/S56moonraker_service” and remove the comment from the line:
 ⁃ # start (If there is one)
 6. Restart the printer
 7. Type printers IP address + “:4408” to access fluidd frontend

ALL Credit goes to @K3D, @xand3r40r93 and @YTKAB0BP
-----------------------------------

使用 port 4408,也真的看到 klipper 的畫面。不過,先警告一下,印表機可能就會出錯,無法正常運作喔。若沒把握,可不要亂玩。

後來發現是上傳的檔案讓系統出錯,刪掉重新啟動就好了。


另外,更新的 Firmware 是 7Z 檔,解壓密碼在 K1_Files 裡的更新程序中可以找到。







 

2023年6月13日 星期二

由創想 K1 看 3D列表機發展的 Convergence 與 Divergence

因為看到大家都在討論創想 K1,基於好奇,忍不住就買了一台。收到後,發現並不會太大,剛好可以用機車載回家。

關於整個機器,不用自己拆,已有人做了,Creality K1 Teardown, Inspection, First Print。


按照賣家的指示,拆箱後,切換到 110V,拆下固定Z軸的螺絲,開機。一路看它完成測試,完全自動,不用像以前要了解如何調平。不想浪費材料印測試檔,想直接印個檔案試試。發現沒有切片程式可用,官方的 creality_print 只有 windows 和 MAC 的程式,只能選擇裝 Windows 版的啦。裝好後,就卡住了,執行時出現下面的錯誤提示。

我是在 Linux 下使用 Vmware 執行 Windows,找不到解決的方式,就無限卡住,都有了想把它賣掉的念頭了。後來想想,試著用 PrusaSlicer 來切,使用 Voron 的設定,順利的印出第一個成品。細看之下,Z軸有好多震紋,還是第一次碰到。但我目前大都印零件,沒什麼關係,回想剛開始 DIY 3D 印表機時,印出的成品更差,也是將就著用。


曾聽到某位 IBM 的講者提到科技的 Convergence 與 Divergence。在一項技術的發展初期,大家會提出各種不同的作法,然後慢慢的會找到較好或可行的作法,最後就慢慢收斂到剩下一兩種作法。

我是去年 (2022年) 跳進 3D印表機 DIY 的世界,當時有不少廠商的機器可買,但和 DIY 的機器相去不遠,所以 DIY 盛行。尤其,我個人認為,Voron 和 Klipper 更是發展的一個里程碑,Klipper 讓機器的設定和功能多樣化,Voron 的多 (3+) Z 軸則實現了自動調平的功能。只要設定時確定一些參數,往後就完全不用手動調平,儘管換了不同厚度的打印平台,如較薄的 PEI 鋼板或較厚的玻璃,都由機器自動計算噴頭的高度。

K1 的開賣的價格比自己買最便宜的 Voron 散件還要便宜。雖然收到機器後發現使用的材料便宜很多,如全機使用光軸,使用自己設計的機構,不使用鋁擠結構,但廠商設計組裝,開箱即用,又較便宜,幹嘛在乎用料呢。從 DIY 幾台 3D印表機的心得,我個人認為 3D印表機的結構不會差太多,關鍵在於列印頭,而這是 DIY玩家無法參與的。另外,3個或以上的 Z軸是自動調平所必須的。不過,後來仔細看了人家拆機的影片,3軸並非獨立的,而是聯動的,由單一步進馬達帶動,所以是用軟體做調平補償。熱床是 240W,使用直流。嗔頭與熱床接觸偵測使用 HX711 壓力模組。

回想雷射印表機和噴墨印表機發展初期,台灣和國外也有很多廠商在做,但最後幾乎剩一家 HP 獨大。可以想像 3D印表機未來也將如此,DIY 玩家的世界即將過去,變成廠商之間的競爭,使用者只要挑那家出的機器,像 Apple 或 Android 手機。為了高速列印,機械結構則是會用較簡單的 CoreXY,龍門機大都會被淘汰,Delta 我就不清楚了,況且用它的人向來就較少。

在 K1 之前,很多人對  Bambu Lab 的機器非常讚賞,但因為它 Totally not open,所以我一點也不動心。後來看到有人說 K1 使用 Klipper 系統,而且可以打開,才下定決心買它來看看。不過,未來要是 3D列表機完全商品化,誰會在乎它是否 open source 呢,只會管它的效能吧。

對了,我的第一台3D 印表機是 XYZprinting 的產品,但因為它綁耗材,所以在附的一卷耗材才印了幾尺,就被我毅然的半價賣掉了。未來,XYZprinting 若還是固守賣耗材的巿場,大概完全沒有機會吧,現在看到有人討論 XYZprinting 的機器,大家一致的看法就是賣掉它。

以上,是我由 K1 聯想到很多的想法。未來,不要花太多心思在3D印表機身上,而是用它來做想做的東西,如小紅點機械鍵盤的外殼。


2023年6月8日 星期四

Ubuntu Linux 使用

測試常用

簡要安裝備忘

  • 要用 ssh 連線 =>  apt install ssh
  • 要使用 xfce4 => apt install xfce4
  • 要使用 xrdp =>  apt install xrdp
  • 搜尋 package => apt-cache search stm32flash

xrdp 無法啟動 xfce4

在 Ubuntu Linux 上安裝 xrdp,但一直無法啟動 xfce4,部分錯誤訊息如下。

............
dbus-update-activation-environment: setting LC_PAPER=lzh_TW
xfce4-session-Message: 13:46:21.699: SSH authentication agent is already running
gpg-agent: a gpg-agent is already running - not starting a new one

(xfwm4:4332): xfwm4-WARNING **: 13:46:21.922: Unsupported GL renderer (SVGA3D; build: RELEASE;  LLVM;).

(xfwm4:4332): xfwm4-WARNING **: 13:46:22.834: Failed to connect to session manager: Failed to connect to the session manager: IO error occured opening connection
Segmentation fault (core dumped)

在網路上找不到解決的辦法,就參考 Arch Linux 的作法。修改 /etc/xrdp/startwm.sh,讓使用者可以使用 ~/.xinitrc 來啟動。修改如下。

#!/bin/sh
# xrdp X session start script (c) 2015, 2017, 2021 mirabilos
# published under The MirOS Licence

# Rely on /etc/pam.d/xrdp-sesman using pam_env to load both
# /etc/environment and /etc/default/locale to initialise the
# locale and the user environment properly.

if test -r /etc/profile; then
        . /etc/profile
fi

if [ -r ~/.xinitrc ]; then
    . ~/.xinitrc
    exit 0
fi

test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession

紅色部分是多加上去的,判斷假如 ~/.xinitrc 存在,則執行它。.xinitrc 的內容如下。

#!/bin/sh

exec dbus-launch --sh-syntax startxfce4

可能需要執行 chmod +x .xinitrc,設成可執行。要先 sudo apt install dbus-x11,確定 dbus-launch 可執行。

。

$ /usr/bin/chromium-browser
Authorization required, but no authorization protocol specified
[42017:42017:0422/110432.093304:ERROR:ozone_platform_x11.cc(249)] Missing X server or $DISPLAY
[42017:42017:0422/110432.093326:ERROR:env.cc(257)] The platform failed to initialize.  Exiting.





2023年6月4日 星期日

新歡 Giant TCR

 一直想騎公路車,雖然年紀大了,可能不適合這般拉風的腳踏車,體力也可能不勝負荷。環島回來後,同時也喜歡上騎腳踏車,雖然已經訂了一輛黑狼,心中卻念念不忘要再騎公路車。前幾天,黑狼牽回家後,忍不住還是上網拍找了一輛公路車,昨天對方把車送過來了。這張照片就借用賣方的照片了。


在年輕還是個五專生時,就對這種專業的向下彎的把手的公路車,特別情有獨衷,曾用工讀的錢買過一部二手公路車。在後來,只要有機會選擇,都會選公路車。

顯然的,這種騎起來不怎麼舒服的車,難成為巿場主流,就像我只開手排車或只騎打檔機車一樣,沒有多少選擇性,而且只有少數高價產品。便宜的公路車,只有捷安特的R1000,但它的變速系統實在是太簡單了。而中意的,都要兩萬以上。

在網拍上,找到這一輛,剛買不久,還算新,同時又比原價便宜數千元,只不過才為黑狼花了不少錢,不敢再亂花錢,猶豫了許久,最後還是和車主聯絡,把它買下來了。
2008-03-02 15:15

拿到車子後,迫不急待的,想要試騎看看。雖然公路車的強項是在平坦的公路上馳騁,但還是想試試爬坡的感覺。所以又選擇熟悉的指南宮來試新車。

深夜,有點冷,出門時穿了毛衣、襯衫、和背心,騎到上坡時,真是辛苦,滿身大汗,衣服卻又無法脫,因為沒帶背包,公路車更是完全沒有攜帶東西的配備,這時頗懷念粗勇的黑狼的好處。

身體熱得難受,騎到一半,真想回頭下山去。可是,想到半途而廢,實在又不甘心,還是賣力的往前踩。公路車的齒比,雖然原車主將大盤換成CT盤,踩起來,還是很累,腳很酸。尤其是那專業的卡踏,真是非常專業,小小一塊,讓穿涼鞋的腳,更是痛得受不了。有點奇怪的是,踩起來很累,卻不會踩不動,好像很快的,就爬到指南宮的停車場,只不過停下來後,兩腳走起路來,會不由自主的不斷的抖。

到指南宮的停車場,看著上去廟的階梯,又開始猶豫,要回家好呢,還是上去廟裡。這車如此的新,又漂亮,更重要的是,根本沒帶鎖,若是將車放在停車場,人離開去廟裡,肯定會再也見不到車。

猶豫了一下,把車往肩上一扛,還真輕呢,就開始爬上廟去。感覺只比背包重不了多少,只是腳還是輕微的抖著,剛才踩的太累了。

扛著到廟裡參拜,喝了罐老虎牙子,補充能量。離開前,又求了一張籤,是好籤呢,感謝純陽祖師慈悲鼓勵,我一定會好好珍惜的。

下坡回家囉,雖然不用費力的踩,卻感覺比上坡痛苦。因為握在剎車上方,沒有力氣剎車,控制速度,又不敢太快,怕失控發生意外。寶哥的名言,謹記在心,「下坡超速,齗手齗腳不奇怪」。只好彎下腰來握彎把處,可是公路車毫無避震效果,腰很酸,手又麻又累,腳踩著那小巧的卡踏,也不好受。中途停下來好幾次,變換姿勢,好不容易才撐到山腳。

哇,下坡這麼辛苦,那要是騎去爬山,可真是上山不容易,下山更難啊!

騎在回家的路上,真是感謝政府造的公路,看似平坦,卻不時有個洞,有時還是一排的凹溝,車子騎過去,就像打鼓般的,咚、咚... 震個不停。尤其是無所不在的白色噪音條,開車或騎車的,走過它,只會發出提醒的聲音,騎公路車,卻是用全身震動的方式來提醒。還好,至少人孔蓋是平的,這是最大的進步了,不然,過去人孔蓋的落差,可是有好幾公分。

回到家,扛上樓去,一點都不費力。這次,捨不得往這車身上塗油漆了,就保持它的漂亮外貌吧。

後記,這車送給車友了,自己騎 CR-01。


新購愛駒 - 捷安特 CRX1

2008-05-19 22:22



南橫之行的最後一天,騎到台東捷安特還車,要離去時,進到店中,匆匆一瞥,見到CRX 1,正是我夢想的車,稍微問了一下價錢,就趕去火車站坐車。


參加環島的途中,聽了寶哥介紹黑狼三號後,好不容易下定決心,買一部回家。當時也不知道往後還有沒有騎單車長途旅行的機會,只是想,買一部當作環島的紀念吧,若一直都沒機會騎,就當作通勤車來用吧。

環島回來,發覺自己喜歡上單車運動了,有時間就騎著平日騎的通勤車到烏來或指南宮。騎了幾次以後,又有了不同的想法,覺得公路車是比較理想的車,在公路上騎,較符合人體力學,容易使力。所以又心動,想買一輛公路車,也就在黑狼牽回來的附近,又買了一輛二手公路車--捷安特 TCR。

因為家住在公寓的四樓,沒有電梯,要把單車抬上抬下的實在頗累,所以重量超過20公斤的黑狼三號牽回家後只騎過一次,就不想再抬它下樓了,大多是騎重量不超過10公斤的TCR。

當然,TCR也是有缺點的。騎TCR,在下坡路,對我一直是個挑戰,當我騎上貓空,實在很想搭纜車下來,因為一路衝下去,要很用力的剎車,很怕失去控制。另外,沒有泥除,下兩天騎車,輪子帶起的泥水直噴屁股,從外褲濕到內褲,實在難過。還有,沒辦法帶東西,騎遠一點,背東西實在也辛苦。詢問過前輩,答案是,公路車,就是要輕,能省則省。所以,大多數人的公路車,或較貴的單車,都是連腳架都沒有,我要為TCR裝上腳架,就頗為掙扎,怕被人笑。還好,車店老闆倒是挺隨和的,沒有太多專業人士的意見,覺得當然是裝腳架比較方便,所以我就TCR裝上腳架。

綜上所述,我心目中理想的車,要有羊角式的下彎式把手,要有腳架,要有貨架,要好剎車,重量也不能太重。因此,在台東對 CRX 1 驚鴻一瞥之後,心裡就有意買一台來騎。回來後,就開始在網路上尋找相關的資訊,猶豫著該不該買。它的身價與黑狼三號一樣,我擔心買了會後悔,就像黑狼三號一樣,把它供在家裡。當然,也會想花這麼多錢,值得嗎?會不會太浪費了些。

心動就行動吧,找個時間,請個補休,找了一家附近的車行,把它定下來。一個禮拜後,車牽回來,騎了指南宮和貓空,覺得頗不錯,嗯,沒有後悔啦!

來,三輛寶貝車,老大--最重的黑狼三號,老二--十多公斤的 CRX-1,老三--不足十公斤的 TCR,排排站,照張相。

以下節錄捷安特網站的官方說法,供日後參考。

CRX 設計概念
========
‧多用途車架幾何,拆除載具後就是休閒舒適公路車
‧輕量速度,兼具長途騎乘的高穩固性
‧搭配照明警示車燈 (有嗎?)
‧採用通用規格零件,易於修護零件維修便利
‧考量長騎乘強化舒適性設計
‧負載能力高,多日裝備及載水

CRX 1 規格簡述
==========
‧GIANT鋁合金公路旅行專屬幾何設計車架
‧SHIMANO 105 20段變速,後飛輪 12-27T,
‧700Cx38,700Cx42,700Cx46.5,700Cx50
‧雪光白
‧12.1kg/46.5 (不含袋子)

‧碳纖維前叉,鋁合金跑車型車把手 (前叉是碳纖維? 看不出來喔)
‧專利D2舒適型座墊
‧輕量速度型檔泥板
‧全新鋁合金後貨架
‧防水多功能馬鞍袋(20公升)
‧AVID BB7-Road 機械碟煞系統 (2008款變BB5,降低成本? BB7的煞車片一組要600,好貴啊!)
‧可調式車手豎桿
‧鋁合金跑車把增加煞車副把手 (煞車副把手好用,下坡就靠它了)
‧碳纖維旅行前叉增加前貨架預留孔
‧低滾動阻力長程快適型防刺反光胎 700x32C



2023年5月21日 星期日

HT32F52352 開發套件裝 QMK 測試

萬事起頭,最快進入狀況的方式是找一個範例來改。在 qmk_firmware 中,搜尋程式碼中有 HT32 關鍵字的程式,很幸運找到 keyboards/annepro2,然後就沒別的了。

這支  Anne Pro 2 的鍵盤,MCU 是 HT32F52342,和 HT32F52352 的差別在於其 flash 只有一半。

BootLoader 測試

說明中提到要用 [OpenAnnePro / AnnePro2-Tools] 來寫入產生的 bin image。從原來鍵盤 dump 出來的 IAP (In Application Programming) bootloader 則可在 OpenAnnePro / AnnePro2-Bootloader 找到。這是從 Anne Pro 2 C15 鍵盤 dump 出來的 image。

為了能儘快測試 HT32 連 TrackPoint 的功能,需要有一個測試環境,能使用 IAP 的方式寫入鍵盤 image 比較方便。 HT32F52342 和 HT32F52352 只有 flash 大小不同,且後者比前者大,就來試試 Anne Pro 2 的 bootloader 和 qmk 設定吧。

 用 git clone 把 AnnePro2-Bootloader 的所有資料下載,再用下面的指令寫入開發板的 MCU。

eLink2pro -a bootloader.bin  firmware

接上裝置後使用 dmesg 看到的訊息如下。

[491032.173213] usb 1-7.4.3: new full-speed USB device number 15 using xhci_hcd
[491032.250654] usb 1-7.4.3: New USB device found, idVendor=04d9, idProduct=8008, bcdDevice= 1.00
[491032.250671] usb 1-7.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[491032.250677] usb 1-7.4.3: Product: USB-HID IAP
[491032.250681] usb 1-7.4.3: Manufacturer: HOLTEK
[491032.250685] usb 1-7.4.3: SerialNumber: SN0000000001
[491032.262570] input: HOLTEK USB-HID IAP as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7.4/1-7.4.3/1-7.4.3:1.0/0003:04D9:8008.0010/input/input27
[491032.314697] hid-generic 0003:04D9:8008.0010: input,hidraw6: USB HID v1.10 Keyboard [HOLTEK USB-HID IAP] on usb-0000:00:14.0-7.4.3/input0
[491032.315905] input: HOLTEK USB-HID IAP as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7.4/1-7.4.3/1-7.4.3:1.1/0003:04D9:8008.0011/input/input28
[491032.316052] hid-generic 0003:04D9:8008.0011: input,hidraw7: USB HID v1.10 Device [HOLTEK USB-HID IAP] on usb-0000:00:14.0-7.4.3/input1

如 bootloader 的說明,裝置的 ID 為 04d9:8008,裝置描述則為 HOLTEK USB-HID IAP。因為其判斷沒有正確的 AP,就直接進入 IAP。

接下來,使用 qmk 指令產生 annepro2/c15 的 image,指令如下。

$ qmk compile -kb ajtest/annepro2/c15 -km default 

產生的 image 為 annepro2_c15_default.bin。指令如下,必須使用 sudo 才有權限寫入。

$ sudo ./annepro2_tools annepro2_c15_default.bin 

拔掉重新連線,使用 dmesg 看到的訊息如下。入。

[497734.509647] usb 1-7.4.3: new full-speed USB device number 19 using xhci_hcd
[497734.587567] usb 1-7.4.3: New USB device found, idVendor=feed, idProduct=ac15, bcdDevice=13.37
[497734.587584] usb 1-7.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[497734.587590] usb 1-7.4.3: Product: Anne Pro 2 C15 (QMK)
[497734.587594] usb 1-7.4.3: Manufacturer: Obins
[497734.594474] input: Obins Anne Pro 2 C15 (QMK) as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7.4/1-7.4.3/1-7.4.3:1.0/0003:FEED:AC15.0019/input/input36
[497734.645861] hid-generic 0003:FEED:AC15.0019: input,hidraw6: USB HID v1.11 Keyboard [Obins Anne Pro 2 C15 (QMK)] on usb-0000:00:14.0-7.4.3/input0
[497734.646396] input: Obins Anne Pro 2 C15 (QMK) System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7.4/1-7.4.3/1-7.4.3:1.1/0003:FEED:AC15.001A/input/input37
[497734.697975] input: Obins Anne Pro 2 C15 (QMK) Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7.4/1-7.4.3/1-7.4.3:1.1/0003:FEED:AC15.001A/input/input38
[497734.698267] hid-generic 0003:FEED:AC15.001A: input,hidraw7: USB HID v1.11 Device [Obins Anne Pro 2 C15 (QMK)] on usb-0000:00:14.0-7.4.3/input1 

裝置的 ID 變成 feed:ac15,裝置描述為 Obins Anne Pro 2 C15 (QMK),此為 info.json 裡的 name 設定的字串。使用鍵盤測試軟體,如 [https://en.key-test.ru]。將 row 接腳 C2 逐一與 col 接腳 C4 和 C5短路,確定為 'Esc' 和 '1',表示鍵盤功能正確。

進入 IAP 的方式,按著 ESC 鍵不放,再連上鍵盤。對應 ESC 鍵的 row 接腳為 C2,對應的 col 接腳為 C4。把 C2 和 C4 短路再連上鍵盤,成功進入 IAP 模式。

至此算是又往目標邁進一步,接下來就可以測試連接 TrackPoint 的功能。更進一步,必須要有可用的 HT32F1654 的 bootloader,才能改阿米洛68鍵盤。

TrackPoint 連接測試

依照  Anne Pro 2 設定好鍵盤,測試 OK。再加上 ps2 mouse 的功能,先使用較單純的 busywait-version。但是並沒有想像中的順利,加上 mouse 功能後,接上鍵盤,大約要等半分鐘以上鍵盤才有反應。剛好前陣子測 OpenOCD 不順利,買了個 USB Logic Analyzer,正好可以看一下波形。大約半分鐘以後,clock 和 data 才出現波形。

但不論怎麼改,都無法成功。只好想辦法用  QMK 的 debug 功能。從 QMK toolbox 看到的訊息,這樣比較有點方向了。


追蹤了好久,發現是 wait_us() 的時間不對,大致上做了下列的修改。
$ sudo === 在 config.h 中加入 ===
#define WAIT_US_TIMER GPTD_BFTM0

=== 在 halconf.h 中加入 ===
#define HAL_USE_GPT TRUE 
#define HT32_GPT_USE_BFTM0 TRUE


=== \lib\chibios-contrib\os\hal\ports\HT32\LLD\TIMv1\hal_gpt_lld.h ===
/**
 * @brief   Driver configuration structure.
 * @note    It could be empty on some architectures.
 */
typedef struct {
  /**
   * @brief   Timer clock in Hz.
   * @note    The low level can use assertions in order to catch invalid
   *          frequency specifications.
   */
  gptfreq_t                 frequency;
  /**
   * @brief   Timer callback pointer.
   * @note    This callback is invoked on GPT counter events.
   */
  gptcallback_t             callback;
  /* End of the mandatory fields.*/
  /**
   * @brief TIM CR2 register initialization data.
   * @note  The value of this field should normally be equal to zero.
   */
  uint32_t                  cr2;
  /**
   * @brief TIM DIER register initialization data.
   * @note  The value of this field should normally be equal to zero.
   * @note  Only the DMA-related bits can be specified in this field.
   */
  uint32_t                  dier; 
} GPTConfig;

至此初步可以在 mcu 和 trackpoint 之間傳送指令和資料,但為了測試,drivers/ps2 目錄下的程式都被我改亂了,以致於無法正確取得資料。到官網下載原始檔,再重新編譯,功能就正常了。接下來,就是想辦法把 interrupt version 弄正常來。






網誌存檔