創龍TMS320C6748開發板———PSC配置及GPIO介紹

南方的小清湖發表於2017-01-13
一、PSC電源和睡眠控制器)配置介紹
       TMS320C6748Ti公司的一款超低功耗DSP產品,相比其他系列DSP它多了PSC這個模組,用以管理各個外設的睡眠和喚醒,大大節約了系統功耗,下面我們具體介紹這個模組的細節以及配置。
       1PSC模組共有兩個控制器模組,分別負責以下外設的配置。
       從上圖我們可以看到PSC模組幾乎可以控制DSP中所有的外設。
       也許這裡大家有一個疑問,PSC0~1Domain0~1,以及具體的模組好像關係很亂。下面我們繪製了這樣一張圖來詳細說明他們的所屬關係:
       實際上,只有DSP屬於domain1,其餘所有模組均屬於domain0
       2)下面我們接著介紹PSC能夠控制各個模組進入的狀態(EnableDisableSyncResetSwRstDisableAutoSleepAutoWake)一般我麼常用的是前4個狀態,Enable為正常工作狀態,而Disable狀態關閉了模組時鐘;SyncReset使模組處於復位狀態,時鐘正常,SwRstDisable使模組處於復位狀態,並關閉了時鐘。具體說明見下圖所示。
       3PSC模組配置說明
       a. 等待PTSTAT中的GOSTAT[x]為清零,x為當前模組所屬的domain
       b. 檢查MDSTAT[x]中的STAT位是否與簡要配置的狀態相同,如果相同,直接返回。
       c. 清除MDCTL[x]中的NEXT(非常重要)
       d. 配置MDCTL[x]中的NEXT位為指定的狀態。
       e. 配置PTCMD中的GO[x]位,開始轉換模組狀態。
       f. 等待,檢查PTSTAT中的GOSTAT[x]是否清零,表示轉換完成。
       g. 檢查MDSTAT[x]中的STAT位是否與簡要配置的狀態相同。
二、GPIO(通用輸入輸出)配置介紹
       本節我們主要介紹GPIO的輸入輸出控制功能,中斷部分下次結合中斷向量表一起說明。
       1TMS320C6748共有8 Banks16 GPIOsper Bank,幾乎所有引腳都可以配置成為GPIO埠。
       對於GPIO,我們只需關注這幾個暫存器:
       DIR:方向控制暫存器,控制GPIO管腳是輸入還是輸出,其中,對應位置0表示該管腳為輸出管腳;對應位置1表示該管腳為輸入管腳。
       OUT_DATA:輸出資料暫存器,控制管腳輸出電平,其中,對應位置0表示該管腳輸出為低電平;對應位置1表示該管腳輸出為高電平。
       SET_DATA:設定資料暫存器,對應位置1表示該管腳輸出為高電平,需要注意的是該暫存器寫0無效。
       CLEAR_DATA:清除資料暫存器,對應位置1表示該管腳輸出為低電平,需要注意的是該暫存器寫0無效。
       IN_DATA:輸入資料暫存器,注意該暫存器是隻讀暫存器,返回對應位輸入電平。
       2GPIO配置說明
       a. 配置PSC模組,使能GPIO功能。
       b. 配置PINMUX模組,選擇需要使用的管腳作為GPIO引腳。具體可以參看我的這篇帖子。http://bbs.elecfans.com/forum.php?mod=viewthread&tid=516939&page=1&extra=#pid3851865
       c. 配置DIR方向控制暫存器。
       d. 如果配置GPIO為輸入引腳,那麼在有訊號輸入後可以讀取IN_DATA暫存器以獲得輸入電平;如果配置GPIO為輸出引腳,可以配置OUT_DATASET_DATACLEAR_DATA暫存器輸出高/低電平。
三、CCS除錯的一些經驗
       以後如果我想起一些關於CCS除錯有用的功能,會不定時在帖子最後更新,希望有助於大家的學習~
       大家在除錯工程的時候會不會遇到工程出錯,但是又找不到事那個部分出問題,一般有經驗的工程師在編寫子函式時都會寫一些返回值,這樣在除錯時直接檢視這些返回值就可以知道程式那裡出錯了。但是,這樣編寫效率不高,遇到多次呼叫子函式的情況很難知道那個部分出問題了。一般工程師們還會在程式執行時及時列印出系統執行狀態,主要有兩種方法,一種是基於UART介面的方法(我們以後結合UART再說),另一種是呼叫printf函式的方法。
       格式為:printf("hello !\r\n");
       重要的事情說三遍,在語句的結尾一定一定要有回車符\r和換行符\n
       大家可以看到在CCSConsole裡有如下的顯示。

相關文章