国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

專用電源嵌入式控制系統(tǒng)DSP端口問題研究

2021-09-28 05:36:46王偉強(qiáng)趙楠宋英利
電氣傳動 2021年18期
關(guān)鍵詞:寄存器語句端口

王偉強(qiáng),趙楠,宋英利

(核工業(yè)理化工程研究院,天津 300180)

隨著嵌入式技術(shù)和數(shù)字信號處理器(digital signal processor,DSP)技術(shù)的不斷發(fā)展,DSP在工業(yè)領(lǐng)域的應(yīng)用越來越廣泛。特別是在電源控制技術(shù)領(lǐng)域,TMS320F28x系列DSP占據(jù)大部分市場份額,其外設(shè)接口齊全適合進(jìn)行電源嵌入式控制系統(tǒng)開發(fā)。串行外設(shè)接口(serial peripheral interface,SPI)是一種高速、全雙工、同步通信總線,只占用4根線可節(jié)約芯片引腳。SPI通信以主從方式進(jìn)行,必須有一個主設(shè)備,可有多個從設(shè)備,通過片選信號來控制從設(shè)備。

在開發(fā)專用電源嵌入式控制系統(tǒng)中選用了美國德州儀器(TI)公司的TMS320F28335 DSP作為控制核心;采用觸摸顯示屏作為人機(jī)交互界面,DSP與觸摸顯示屏之間采用SPI通信。

TMS320F28x系列DSP提供了單從設(shè)備模式下SPI通信所需的信號。但對多從設(shè)備模式,需要通過DSP的通用輸入輸出端口(general-purpose input/output,GPIO)進(jìn)行片選控制,對從設(shè)備進(jìn)行選通、讀寫控制。

TMS320F28335DSP共有88個GPIO,對應(yīng)芯片的88個引腳。由于芯片尺寸的限制,這88個引腳都是功能復(fù)用的,可根據(jù)用戶需要進(jìn)行靈活編程配置。這88個GPIO分為A,B,C3組,分別對應(yīng)GPIO0~GPIO31,GPIO32~GPIO63,GPIO64~GPIO87。

本文主要介紹在開發(fā)專用電源嵌入式控制系統(tǒng)的過程中發(fā)現(xiàn)的TMS320F28335 DSP端口控制存在的問題以及產(chǎn)生問題的條件,即在使用同一分組下的GPIO時,常用的修改GPxDAT寄存器來控制端口讀寫操作的程序指令無法控制兩個及以上端口產(chǎn)生相應(yīng)動作的問題。針對這個端口控制問題,本文開展了相應(yīng)研究并提出3種可能引起問題原因的假設(shè)并設(shè)計了一系列的驗(yàn)證試驗(yàn),進(jìn)行了逐一的試驗(yàn)驗(yàn)證,尋求引起端口控制問題產(chǎn)生的原因。隨后經(jīng)過綜合分析提出了3種基于軟件編程的解決方案并進(jìn)行試驗(yàn)驗(yàn)證。最后,對常用的TMS320F28x系列另外5種型號DSP進(jìn)行了拓展驗(yàn)證試驗(yàn),驗(yàn)證是否存在相似的端口控制問題,以及本文提出的3種解決方案是否可解決這5種型號DSP的端口控制問題。

1 端口問題的發(fā)現(xiàn)

1.1 專用電源嵌入式控制系統(tǒng)硬件設(shè)計簡介

專用電源嵌入式控制系統(tǒng)主要用于專用電源逆變器的控制和核心電量參數(shù)的采集傳輸,采用TMS320F28335 DSP作為控制核心開展硬件設(shè)計,其系統(tǒng)數(shù)據(jù)顯示和人機(jī)交互接口采用2.8寸配置SPI接口的觸摸顯示屏。將DSP設(shè)置為SPI主設(shè)備,將觸摸屏上的顯示屏驅(qū)動芯片ILI9341和觸摸屏控制芯片XPT2046設(shè)置為SPI從設(shè)備,實(shí)現(xiàn)數(shù)據(jù)顯示和觸摸控制。DSP與觸摸顯示屏接口硬件原理圖如圖1所示。

圖1 DSP與觸摸顯示屏接口的硬件原理圖Fig.1 Hardware schematic of interface between DSP and touch screen

圖1中使用了DSP的6個GPIO接口作為SPI從設(shè)備的控制信號,具體詳見表1。

表1 DSP與觸摸顯示屏控制信號接口Tab.1 Control interface between DSP and touch screen

1.2 調(diào)試中發(fā)現(xiàn)的問題

按照設(shè)計要求編寫觸摸顯示屏部分的程序代碼,走查編譯完成后,下載到DSP中進(jìn)行調(diào)試測試。在調(diào)試過程中發(fā)現(xiàn)觸摸顯示屏沒有任何反應(yīng)。

使用示波器觀察DSP的SPI端口波形,發(fā)現(xiàn)波形異常,片選引腳CS1和屏幕數(shù)據(jù)/指令引腳DC波形不正確。反復(fù)檢查硬件電路和軟件代碼邏輯關(guān)系,并沒有發(fā)現(xiàn)問題。同時,在集成開發(fā)環(huán)境的調(diào)試模式下,采取單步執(zhí)行對程序進(jìn)行調(diào)試,2個片選控制信號波形正確。

1.3 問題復(fù)現(xiàn)最小系統(tǒng)搭建和試驗(yàn)

選用TI公司的TMDSCNCD28335開發(fā)板,搭建問題復(fù)現(xiàn)最小系統(tǒng),用于復(fù)現(xiàn)上述問題并利用該最小系統(tǒng)作為試驗(yàn)驗(yàn)證平臺,尋找產(chǎn)生問題的原因及可行的解決方案。通過綜合分析硬件電路的設(shè)計,使用兩個GPIO(GPIO12和GPIO13)模擬SPI屏幕使用的屏幕片選引腳CS1和屏幕數(shù)據(jù)/指令選擇引腳DC。

使用同樣GpioDataRegs.GPADAT.bit.GPIOx C語言控制指令語句修改GPxDAT寄存器的值來控制GPIO12和GPIO13端口產(chǎn)生連續(xù)高低電平變化。通過示波器捕捉端口波形,試驗(yàn)波形如圖2所示(圖中上面波形為GPIO12、下面波形為GPIO13試驗(yàn)波形),可以看到GPIO12端口沒有按照程序指令進(jìn)行相應(yīng)的動作,問題被復(fù)現(xiàn)。對試驗(yàn)現(xiàn)象進(jìn)行總結(jié),得出結(jié)論:DSP同一分組下的GPIO端口,通過修改GPxDAT寄存器方式來控制組內(nèi)的任意2個端口時,會出現(xiàn)上述端口未按照程序指令動作的問題;大部分情況下只有最后一條修改GPxDAT寄存器的控制指令會被正確執(zhí)行,相應(yīng)端口會產(chǎn)生電平變化。

圖2 問題復(fù)現(xiàn)最小系統(tǒng)試驗(yàn)示波器波形Fig.2 Waveforms of problem repetition minimum test system

隨后對同一分組內(nèi)2個以上端口開展了進(jìn)一步的測試試驗(yàn),經(jīng)試驗(yàn)發(fā)現(xiàn)同樣存在上述同組端口的控制問題。為了簡化分析過程,本文主要針對2個端口的情況進(jìn)行研究,對這個問題的產(chǎn)生原因做進(jìn)一步的分析和試驗(yàn)驗(yàn)證。

2 端口問題產(chǎn)生原因分析

2.1 端口控制問題初步分析

在圖2中可以看到GPIO12的波形幾乎沒有電平變化,只是在某些位置產(chǎn)生了一些極短的脈沖。根據(jù)這一試驗(yàn)結(jié)果分析,在程序代碼執(zhí)行過程中,使用GpioDataRegs.GPADAT.bit.GPIOx指令語句對同組內(nèi)端口進(jìn)行控制,先被執(zhí)行的控制GPIO12的指令并未使端口產(chǎn)生相應(yīng)的電平變化,而后面被執(zhí)行的控制GPIO13的指令可以使端口產(chǎn)生相應(yīng)的電平變化。

隨后進(jìn)行了單步執(zhí)行測試,控制指令語句都能夠使GPIO12產(chǎn)生正確的電平變化。經(jīng)初步分析該故障可能與CPU執(zhí)行延遲有一定關(guān)系。于是在對應(yīng)指令語句后插入足夠的延遲,再進(jìn)行測試研究。示波器波形如圖3所示(圖中上面波形為GPIO12、下面波形為GPIO13試驗(yàn)波形),此時可以看到GPIO12和GPIO13都產(chǎn)生了正確的電平變化。

圖3 問題復(fù)現(xiàn)最小系統(tǒng)增加延遲后試驗(yàn)示波器波形Fig.3 Waveforms of problem repetition minimum test system after adding delay program

2.2 引起端口控制問題原因的假設(shè)提出

綜合分析上面的試驗(yàn)結(jié)果,總結(jié)可能引起端口控制問題的原因,在此基礎(chǔ)上提出如下3種假設(shè):

假設(shè)一:CPU流水線在處理相同內(nèi)存讀寫時產(chǎn)生時序安排錯誤,造成第2次指令覆蓋或者掩蓋了第1條指令的執(zhí)行;

假設(shè)二:CPU在該段內(nèi)存總線上有一定的時序安排錯誤,使第2次讀取修改寫入覆蓋或者掩蓋了第1條指令的讀取修改寫入;

假設(shè)三:該寄存器存在一定問題,使第2次讀取修改寫入覆蓋或者掩蓋了第1條指令的讀取修改寫入。

2.3假設(shè)一的驗(yàn)證

如果假設(shè)一的條件成立,那么對其它地址的內(nèi)容進(jìn)行相似的操作,也會出現(xiàn)一致的現(xiàn)象。使用匯編指令編寫驗(yàn)證試驗(yàn)程序,去連續(xù)讀取、修改、寫入內(nèi)存(也稱為靜態(tài)隨機(jī)存儲器(static random access memory,SRAM))中的某地址的16位內(nèi)容,并在相應(yīng)語句處設(shè)置斷點(diǎn)。使用集成開發(fā)環(huán)境中的工具,觀察該地址SRAM中的值。

經(jīng)過測試試驗(yàn),觀察到SRAM中的值是正確的,因此“假設(shè)一”不成立。

2.4 假設(shè)二的驗(yàn)證

如果假設(shè)二的條件成立,那么對該段內(nèi)存總線上其它地址的內(nèi)容進(jìn)行相似的操作,也會出現(xiàn)一致的現(xiàn)象。使用類似的操作方式,使用匯編指令去連續(xù)讀取、修改、寫入GpioCtrlRegs.GPADIR寄存器的內(nèi)容,并在相應(yīng)語句后設(shè)置斷點(diǎn),使用集成開發(fā)環(huán)境中的工具,觀察該寄存器的值。

經(jīng)過測試試驗(yàn)發(fā)現(xiàn)寄存器的值是正確的,因此“假設(shè)二”情況也不成立。

2.5 假設(shè)三的驗(yàn)證

經(jīng)過上面的驗(yàn)證試驗(yàn)研究,排除了前兩種假設(shè)。下面針對假設(shè)三開展驗(yàn)證試驗(yàn)研究,驗(yàn)證試驗(yàn)過程比較復(fù)雜,驗(yàn)證流程圖如圖4所示。

圖4 假設(shè)三驗(yàn)證流程圖Fig.4 Verification flow chart of hypothesis 3

首先設(shè)計試驗(yàn)來驗(yàn)證該寄存器的這種問題是否與尋址方式有關(guān)。由于編譯器在默認(rèn)方式編譯C代碼時,產(chǎn)生了使用DP尋址,OR指令直接操作目的地址的方式進(jìn)行操作。使用匯編語句實(shí)現(xiàn)與C語言控制指令語句相同的功能,采用XARn方式進(jìn)行間接尋址來操作目的地址。經(jīng)過測試發(fā)現(xiàn),仍然存在端口控制問題。可以得出結(jié)論該寄存器的這種問題與尋址方式并無關(guān)聯(lián)。

對匯編控制語句進(jìn)行合并和分解操作,定位存在問題的語句執(zhí)行位置。

匯編指令語句OR指令本身是讀取、修改、寫入的復(fù)合指令。通過合并匯編指令的操作,定位語句執(zhí)行過程中存在問題的位置。經(jīng)過測試發(fā)現(xiàn),端口控制問題得到了解決??梢曰敬_認(rèn)語句執(zhí)行的問題可能出現(xiàn)在OR語句的執(zhí)行中間。

將OR匯編復(fù)合指令進(jìn)行分解,設(shè)置合適的斷點(diǎn)并觀察AL寄存器的值,精確定位出現(xiàn)問題的語句執(zhí)行位置。經(jīng)過測試發(fā)現(xiàn),AL寄存器的值實(shí)際上沒有因?yàn)榭刂浦噶钫Z句的執(zhí)行而發(fā)生相應(yīng)的變化,即AL寄存器的值不正確。

通過上述2個測試試驗(yàn),定位了出現(xiàn)問題的執(zhí)行語句位置。在該語句后加入一定數(shù)量的“NOP”延遲指令,產(chǎn)生一定時間的延遲。匹配寄存器指令語句執(zhí)行和硬件變化的時間。從而驗(yàn)證端口問題是否能得到解決。經(jīng)過多次測試試驗(yàn),在加入5個“NOP”指令語句情況下,寄存器的值正確。

至此,可以判定“假設(shè)三”是引起這些問題的原因所在。

2.6 補(bǔ)充驗(yàn)證試驗(yàn)和小結(jié)

綜合分析總結(jié)上面的各項(xiàng)驗(yàn)證試驗(yàn)結(jié)果可以得出GpioDataRegs.GPxDAT寄存器的值在寫入后需要一定延時才能反應(yīng)到端口的正確變化。

為了驗(yàn)證所需的延遲是否與CPU時鐘有關(guān)聯(lián),更改CPU的運(yùn)行時鐘配置,測試使端口控制程序得到正確執(zhí)行所需要的延遲指令時間,即在程序代碼中加入的最少“NOP”指令數(shù)量。試驗(yàn)結(jié)果表明,當(dāng)改變CPU運(yùn)行時鐘配置時,所需的延遲指令時間無明顯增加,也就是說所需的延遲時間與CPU時鐘沒有關(guān)聯(lián)。

將原程序由RAM轉(zhuǎn)到Flash中執(zhí)行,并關(guān)閉Flash運(yùn)行加速,由于運(yùn)行位置的變更使單條代碼的執(zhí)行周期數(shù)發(fā)生了變化,CPU執(zhí)行單條指令所需的時鐘周期將發(fā)生變化。測試使端口控制程序得到正確執(zhí)行所需要的延遲指令時間。測試結(jié)果表明,所需的延遲指令時間無明顯變化。

通過分析可以得出GpioDataRegs.GPxDAT寄存器的寫入延遲與CPU運(yùn)行頻率無關(guān),而是與指令的運(yùn)行處理器周期數(shù)目相關(guān)。對該寄存器做修改后,必須經(jīng)過一定的處理器周期才能夠反應(yīng)到對應(yīng)硬件端口上的相應(yīng)變化。因此,修改該寄存器的值后必須加入足夠的延遲才能夠避免產(chǎn)生端口控制的問題。

3 解決措施及措施驗(yàn)證

很多嵌入式處理器,尤其是使用精簡指令集的處理器,使用軟件控制GPIO時,操作往往會被分成3步:讀取、修改、寫回。如果這3步是非原子性的,那么由于外部中斷或多線程執(zhí)行等狀況,處理器不能保證執(zhí)行結(jié)果的正確性,所以很多嵌入式處理器提供專用的SET,CLEAR和TOGGLE寄存器來對GPIO進(jìn)行控制。由于這些寄存器的讀取無效,只有寫入才生效,因此嵌入式處理器只需要1個寫入指令即可完成對GPIO的控制。不需要預(yù)先知道原GPIO狀態(tài),使GPIO的操作保持了原子性。TMS320F28x系列DSP盡管提供了用于原子操作的指令,但由于GpioData-Regs.GPxDAT寄存器修改的延遲,導(dǎo)致連續(xù)修改同一寄存器時出現(xiàn)了端口控制問題。因此需要使用GpioDataRegs.GPxSET/CLEAR/TOGGLE寄存器來操作GPIO或者在適當(dāng)?shù)奈恢眉尤胍欢ǖ难舆t指令等待寄存器完成修改,來解決端口控制問題。

根據(jù)試驗(yàn)結(jié)果綜合分析研究,提出以下3種基于軟件程序的解決措施方案:

解決措施方案一:在通過位域方式編程修改寄存器GpioDataRegs.GPxDAT的值后須加入足夠的延遲才可避免產(chǎn)生錯誤的執(zhí)行邏輯??紤]到代碼調(diào)試“RAM執(zhí)行”和實(shí)際應(yīng)用“Flash執(zhí)行”的差異,可以經(jīng)測試來驗(yàn)證需要插入延遲指令的數(shù)量來避免邏輯錯誤。

解決措施方案二:當(dāng)編程連續(xù)操作同一個寄存器GpioDataRegs.GPxDAT時,應(yīng)避免使用位域方式進(jìn)行操作,而是將多個操作合并到同一條語句操作內(nèi)完成,這樣可以有效解決端口控制問題。

解決措施方案三:采用GpioDataRegs.GPx-SET/CLEAR/TOGGLE 3個寄存器中的任意一個寄存器的控制方式,代替通過GpioDataRegs.GPx-DAT寄存器進(jìn)行端口控制的方式,可穩(wěn)定實(shí)現(xiàn)預(yù)期功能。

在完成本文上述研究、試驗(yàn)的基礎(chǔ)上,利用專用電源嵌入式控制系統(tǒng)進(jìn)行了相應(yīng)的測試試驗(yàn)和考核試驗(yàn),驗(yàn)證了以上3種措施方案都可以有效地解決端口控制問題。

嵌入式控制系統(tǒng)對實(shí)時性的要求往往較高,對3種措施方案的控制實(shí)時性進(jìn)行分析驗(yàn)證,這3種措施方案的實(shí)時性幾乎是一致的,盡管第1種解決措施方案使用了一定量的“NOP”指令作為延遲函數(shù),但是經(jīng)過測試該指令使用數(shù)量一般低于10個,相當(dāng)于處理器停滯了10個周期。以TMS320F28335為例,DSP主頻在150 MHz的使用條件下,延遲指令最多會帶來66.6 ns的延遲。在實(shí)際的嵌入式控制系統(tǒng)中,直接操作GPIO通常用于“慢速”控制,該延遲對嵌入式控制系統(tǒng)的實(shí)時性幾乎不會產(chǎn)生影響。

隨后,在TMS320F28x系列其他5種型號的DSP進(jìn)行了相似問題的測試以及3種解決措施的驗(yàn)證。主要驗(yàn)證型號和結(jié)果如表2所示。

表2 拓展測試與措施驗(yàn)證結(jié)果Tab.2 Additional testing and measure verification results

如需測試上述型號以外的TMS320F28x系列DSP或者其他系列的嵌入式處理器是否存在本文所述的GPIO端口控制問題,可以采用與本文類似的方法進(jìn)行端口問題的測試驗(yàn)證。測試時在測試程序中,以位域方式先給目標(biāo)芯片的2個同組的GPIO控制寄存器賦值,然后調(diào)用延遲函數(shù)延遲一定的時間,并以位域方式將相同的2個GPIO控制寄存器賦相反的值,再延遲一定的時間,通過示波器觀察GPIO翻轉(zhuǎn)波形是否正確。

4 結(jié)論

本文通過對專用電源嵌入式控制系統(tǒng)開發(fā)過程中遇到的端口控制問題進(jìn)行復(fù)現(xiàn),經(jīng)過綜合分析、推測假設(shè)與試驗(yàn)驗(yàn)證,證明了TMS320F28x系列DSP有部分型號存在GPIO端口控制上的問題,并分析出引起端口控制問題的原因。提出3種可行的解決方案,經(jīng)測試,這3種方案均可以解決端口控制問題。在今后的使用中,如果硬件資源允許的條件下,在使用GPIO端口做片選控制和輸入輸出端口控制時,應(yīng)避免將相應(yīng)端口配置在同一分組下。如果硬件資源不允許,可采用本文提出的3種解決方案對控制軟件程序進(jìn)行優(yōu)化。另外,本文只是針對常用的TMS320F28x系列的6種型號DSP進(jìn)行了測試驗(yàn)證,今后還需要進(jìn)一步驗(yàn)證其他型號的DSP是否存在相似的問題。本文提出的相關(guān)研究思路和方法,可以作為分析及解決類似問題的參考。

猜你喜歡
寄存器語句端口
一種端口故障的解決方案
重點(diǎn):語句銜接
Lite寄存器模型的設(shè)計與實(shí)現(xiàn)
端口阻塞與優(yōu)先級
精彩語句
分簇結(jié)構(gòu)向量寄存器分配策略研究*
初識電腦端口
電腦迷(2015年6期)2015-05-30 08:52:42
生成樹協(xié)議實(shí)例探討
如何搞定語句銜接題
語文知識(2014年4期)2014-02-28 21:59:52
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
新津县| 沐川县| 芷江| 克拉玛依市| 贵州省| 三台县| 祁门县| 英吉沙县| 策勒县| 兴宁市| 牙克石市| 拉孜县| 安泽县| 黄山市| 封丘县| 南郑县| 锡林郭勒盟| 安化县| 广昌县| 龙里县| 安龙县| 红河县| 那曲县| 阳东县| 阜南县| 东丽区| 剑河县| 鞍山市| 梓潼县| 彩票| 许昌县| 元氏县| 芦山县| 原平市| 韶关市| 库尔勒市| 洪湖市| 大渡口区| 和龙市| 永丰县| 榆社县|