通常設計遊戲滑鼠的韌體,大部分的時間會在優化與AP的溝通、腳本、巨集、以及燈效等等,對滑鼠sensor覺得簡單因而容易忽略一些細節,遊戲鼠標的韌體開發,要讓座標輸出到電腦端,確實也真的不難,問題是有些小地方的失誤,卻會讓人丈二摸不到頭緒,會花蠻多時間去偵錯,當然主要原因就是沒有依照規格書去實現,若再開發初期發現,那就還好,最慘的是小批量試產沒發現問題,而在量產時,卻發現有少部分的產品不良,迫於重工與出貨壓力,往往讓開發人員急著像熱鍋的螞蟻。
因此透過原相剛推出的高階遊戲鼠標sensor的測試過程,來說明一般會遇到狀況,首先介紹PAW3370DM-T4QU的功能與特性,由於這篇是針對韌體的發想,因此底下列出是跟控制晶片有關的項目,其他詳細的規格,還請自行參考原廠的規格書:
1. 電源: VDD & VDDIO : 分別為8v~21.V 及1.8v~3.3v,因此習慣供電給1.9v,配合NXP 11Uxx 的IO準位,VDDIO採用3.3v。
2.耗電: PAW3370這顆sensor的亮點,就是gaming mode下的耗電包括IR LED也只有5mA,很適合做無線及有線雙模的應用。如下表:
3.解析度: 最高可達到19000 CPI,在10000CPI以下,每階50 CPI,超過10000CPI,每階1000 CPI。如下:
4. 加速度與速度: 最高移動偵測速度達400ips,瞬間加速度達50G。這規格已經不是一般人可以達到的操作速度。
5. 支援滑鼠抬起高度箝制功能,有1mm 、 2mm 以及手動學習模式。
6. 支持不同使用情境與耗電,可讓玩家隨意切換有線遊戲滑鼠或高性能無線遊戲滑鼠或一般無線滑鼠…等等。
7. 角度修正功能。
有了sensor的規格,即可開始撰寫韌體,首先sensor開機參數設定: 這必須依據規格書內,規規矩矩的依序撰寫,PAW3370DM-T4QU需要設定的參數還蠻多的,共有109項暫存器需要初始化,相關內容可下載文末程式碼:
做完初始化,若正確,就能直接讀取座標,但是要確保初始化的過程與SPI時序規格合乎Spec。SPI timing很多項,其實跟FW有關的,只要看SPI 最大頻率與大於uS的規格即可,如下圖,這主要是mcu的IO控制,時序大部分都高於uS,所以低於us的,就不須考慮了,幾乎都會合乎規格。
量測實際程式運行的時序並且比較是否合乎Spec:
除了SPI的時序外,在先前的initial settting中,也有一些需要遵守的時序規格,如下圖:
量測實際程式運行的時序 並且比較是否合乎Spec:
接著就可以持續讀取XY座標,採用burst read可縮短時間提升效率,相同的這邊也有個tSRAD時序必須遵守:
量測實際程式運行的時序並且比較是否合乎Spec:
其他功能的設定,只要依暫存器的內容設定,應該都不會有沒甚麼問題了。若有機會,偶後再做進一步的介紹。
評論