2019年9月24日 星期二

DSP TI TMS320F28335 GPIO設置


TI TMS320F28335 的GPIO,比較特別的是多了Qualification功能,另外可以用
GPxSET、GPxClear、GPxToggle來設置gpio輸出。下面是它的方塊圖與暫存器
例表與解釋。




































相關的暫存器如下






























GPACTRL:設定在Qualification(限定)功能的取樣周期。
GPAQSEL:設定在Qualification的取樣次數。
GPAMUX:設定各個GPIO pin是做為GPIO或是其它I/O pin功能,例如下面Table50裡
                     所定義的GPIO14與GPIO15 pin,除了可以被定義成"00"=>GPIO功能,各
                     別可以被定義為不同的I/O功能,如PWM、SCI、McBSP、eCAN等,但
                      每個GPIO可以被定義的I/O功能是不同的,需要在GPxMUX Table去確認                                     。
GPADIR:每個GPIO pin在做為GPIO功能時,可以各別定義是Input或Output pin,初始
                   設定是"0"=>Input。
GPAPUD:設置各個GPIO pin內部的Pullup電阻是否開啟,如下圖Table65,有些GPIO   
                    GPIO初始內部Pullup電阻是開啟的,有些GPIO是關閉的。雖然GPIO在系統
                    程式開始運作後,可以各別定義各個GPIO輸出,但在系統運作前,GPIO
                    是無法被程式所控制的。如果希這個GPIO與外部線路的節點在是拉High的
                    ,就可以找初始內部Pullup電阻是開啟的GPIO pin,或是直接在線路上,加
                    一個上拉電阻。
GPIOXINT1SEL:XINT是外部中斷,GPIOXINT1SEL可以設置GPIO0~31,其中的那一
                               PIN做為XINT1功能。
GPIONMISEL:XNMI是外部不可遮罩式中斷,可以設置GPIO0~31其中一PIN為NMI。
GPIOLPMSEL:一般外部中斷是無法在Low power mode(Halt, Standby mode)來喚醒系統
                             的,但GPIOLPMSEL可設置GPIO0~31其中一個,在Low power mode可以
                             用來外部觸發,喚醒系統回到工作模式。
GPADAT:這個暫存器有bit0~31,對映GPIO0~31。讀取這個暫存器可以知道GPIO0~31
                    PIN的輸入狀態是"0"還是"1",無論這個PIN在GPAMUX是被設為GPIO還是
                    其他的I/O功能。寫入這個暫存器可以設置GPIO0~31的輸出為"1"或是
                     "1"。
GPASET:這個暫存器有bit0~31,對映GPIO0~31對其中一個bit設為"1"就可以將它對映
                   的GPIO設為輸出High,但它要是在GPIO Output模式。對GPASET其它的bit寫
                   入"0",不會有任何影響,。
GPACLEAR:這個暫存器有bit0~31,對映GPIO0~31。對其中一個bit設為"1"就可以將它對映
                         的GPIO設為輸出Low,但它要是在GPIO Output模式。對GPACLEAR其它的bit
                         寫入"0",不會有任何影響。
GPATOGGLE:這個暫存器有bit0~31,對映GPIO0~31。對其中一個bit設為"1"就可以將它對映
                         的GPIO設為輸出反轉,但它要是在GPIO Output模式。例如讓原本輸出為High
                         轉為輸出Low。對GPATOGGLE其它的bit寫入"0",不會有任何影響。










GPIO輸入限定功能(Input Qualication)
GPIO在做為輸入時,可以開啟限定功能,在連續取樣3次或6次的High或Low,才
判斷輸入準位。例如要開啟GPIO3的限定功能就將GPIO Port A(GPIO0~31) GPAQSEL1的
Bit7:6設為"01"=>Qualification using 3 samples或"10"=>Qualification using 6 samples.

取樣時間間隔由GPACTRL的Bit0~7來設定,從1xTSYSCLKOUT 到510x TSYSCLKOUT
TSYSCLKOUT是SYSCLKOUT的倒數,SYSCLKOUT為150MHz,TSYSCLKOUT則為6.67ns
。GPIO3屬於GPIO0~7,由QUALPRD0來設定,如下圖的例子,在設定GPAQSEL1
為"1,0",設QUALPRD0為"01",可以得到取樣窗口為Tw(IQSW)=5x2xTSYSCLKOUT 。
6次取樣,只有5次取樣間隔,所以取樣窗口為5x2xTSYSCLKOUT=67ns。當出現(A)這個
脈衝時,會被限定器Qualifier給忽略到,直到後面連續取樣到6次"1",限定器的輸出
才會被拉到"1"。

在GPAQSEL1的設定,還有"00"=>與SYSCLKOUT同步、"11"=>非同步模式。
在"00"這個設定,取樣就只需要1次TSYSCLKOUT的時間。在"11"這個設定,GPIO做為
SCI、SPI、eCAN、I2C或是ePWM輸入訊號,它的取樣時間會是一次取樣時間加上
TSYSCLKOUT,所以當QUALPRDx設為"01",限定器響應輸入訊號的時間為2xTSYSCLKOUT
+TSYSCLKOUT














Reference:
1.TI TMS320x2833x, 2823x System Control and Interrupts Reference Guide (Rev. D)











沒有留言: