iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

昨天完成驅動程式端的實作後,接著就可以進行測試程式端的函式實作,但在進行實作之前,需要先了解如何存取環控晶片的暫存器

環控晶片暫存器

環控晶片的各種功能需要透過暫存器去設定,而這些暫存器會以logical device的形式存在,不同功能會對應到不同的logical device,以NCT6796D為例,一共有16個logical device,每一個logical device都有一個對應的logical device number。而暫存器位置0x00-0x2F全域暫存器,儲存整顆環控晶片的設定與資訊,其他大於等於0x30的暫存器位置則為各別logical device的暫存器,控制各logical device的功能。切換logical device需要將logical device number寫入全域暫存器0x07,大於等於0x30的暫存器位置就會顯示為該logical device的內容。

存取環控晶片暫存器

環控晶片會透過I/O埠的2E/2F或4E/4F去存取,分別為Index/Data埠,對Index埠寫入暫存器位置,Data埠會回傳該暫存器位置的值。為了不讓環控晶片被意外寫入資訊導致設定失效,環控晶片有著一個安全機制稱為Extended Function Mode,必須先對Index埠連續成功寫入兩次0x87,進入Extended Function Mode,才能正常讀寫Index/Data埠,結束操作後,需要對Index埠寫入0xAA,離開Extended Function Mode。

以上就是如何存取環控晶片暫存器的簡單介紹。

參考內容

環控晶片 - NCT6796


上一篇
Day11 使用I/O存取環控晶片-1
下一篇
Day13 使用I/O存取環控晶片-3
系列文
Windows Driver + Electron 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言