【GoRK3288】6.TSADC操作方法,gork32886.tsadc

來源:互聯網
上載者:User

【GoRK3288】6.TSADC操作方法,gork32886.tsadc
     請先在https://github.com/tjCFeng/GoRK3288下載 GoRK3288 開源庫。

        Rockchip RK3288中有好多ADC,HS-ADC(High Speed ADC)、TS-ADC(Temperature Sensor ADC)。
    其中HS-ADC 主要用於傳輸資料,例如手冊中說的GPS資料等;而TS-ADC顧名思義,就是採集各種溫度感應器的資料了。
        咱們先從簡單的開始,所以想辦法使用TS-ADC取得各種溫度。 
        由於溫度感應器是整合在CPU內部的,所以本次實驗不需要使用任何外部的硬體模組或開發板,直接通過程式來擷取結果。 

   來看看樣本程式吧



    這次的程式更簡單,簡單到3條語句就夠了。 不過是不是這個代碼和C語言差別有些大了?這裡面其實有兩個要點,前面也曾提到過:單例模式和多返回值。
 
    1.單例模式:
        在設計模式中有一種叫單例模式,它的作用就是讓某一個類在程式運行期間內只被建立一次,即使被重複建立了, 那麼返回的也是已經存在的執行個體,而不再重新建立。不要被那麼高深的名字唬住,使用中理解為全域變數就行了。一般的靜態語言中這個方法會在建構函式中實現,然而Go語言是個特例,它沒有建構函式,所以呢我只能用個普通的函數來代替建構函式了。
        至於為什麼非要把TSADC類作為單例來使用,這是因為在RK3288中,TSADC雖然有四個通道,但是它們被控制的寄存器只有一組,不能對每個通道分別控制,也就是要啟動一起啟動,要停止一起停止。為了避免多個執行個體化之間造成操作上的衝突,所以我認為單例模式更適合TSADC。

    2.多返回值: 
        多返回值是Go語言的一大特色,其他的靜態語言是不具備的。而且對於TSADC來說,四個通道的資料是一起開始採集並且可以同時得到結果,而不是一個一個的完成,所以多返回值使用起來可能更方便一些。其實這麼寫也是有意突出語言特色,而且這個還是在寫這一節之前剛剛改成這樣的,原來的方法是標準的傳遞參數來擷取指定結果。這兩種方法無所謂好壞,如果使用起來不習慣的話可以增加一個指定通道的函數。

    又說了這麼多,回到正題。代碼中RK3288.ITSADC()就是獲得TS-ADC類的執行個體,如果沒有其他地方再需要使用這個執行個體的話,後面可以直接調用方法函數GetData()。
    再看這個函數的前半部分,_, Data, _, _是儲存結果的變數,_部分為不關心的結果,可以不儲存值,但是必須被佔位。
    整條語句的意思為擷取TS-ADC第1通道的結果,擷取四個通道的結果應該寫為
Data1, Data2, Data3, Data4 := RK3288.ITSADC().GetData()
    Go語言是不是很有意思?

    後面的就簡單了,TS-ADC是12位的,Data儲存的結果是ADC的資料, 使用GetTemperature函數來將這個資料轉化為溫度值就是最終想要的結果了。
    實際上,這個數值和溫度的變化不是線性,所以手冊裡給出了一個映射表


    根據這個映射表進行換算可以得到溫度,具體的方法在TSADC.go中,感興趣的可以看一下。

     運行程式,看看結果


    CPU溫度33.x度,不知道準不準。

    這裡還有一個問題,手冊中說明通道1為CPU溫度,通道2為GPU溫度,但是擷取通道2的資料始終為0,不知道為什麼,有時間還要請教一下Firefly的高手。 



總結一下TSADC類的方法: 
    ITSADC:獲得TASDC的執行個體
    FreeTSADC:釋放TSADC
    GetData:獲得ADC資料(多返回值)
    GetTemperature:將ADC資料轉化為溫度值(小數部分保留一位就可以了) 

    GoRK3288庫請在https://github.com/tjCFeng/GoRK3288下載。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.