版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、TMS320F28335開發(fā)過程中常見問題總結(jié)1.SPI驅(qū)動TLE7241E出現(xiàn)返回值不對的問題。主要是由于時序的不對,導致TLE7241E輸入采樣時數(shù)據(jù)還沒有建立,所以TLE7241E收到的命令不正確,所以返回值不正確。2.SPI驅(qū)動EEPROM時,如果用金屬物觸到clock pin時,能正確運行,否則不能正確運行。出現(xiàn)次問題也是由于時序的問題,金屬物觸到clock導致clock出現(xiàn)微小幅度的偏移,導致正好和eeprom的時序?qū)ι希挥媒饘傥镉|碰時時序不正常,當使dsp MOSIpin數(shù)據(jù)發(fā)送提前半個周期后,eeprom工作正常。3.示波器有時會導致顯示的波形被消尖,所以用示波器測量時周期
2、不能太大。TMS320F28335筆記-I2C1.響應(yīng)和非響應(yīng)的區(qū)別是什么? 關(guān)于i2c的響應(yīng)問題:對于每一個接收設(shè)備(從設(shè)備,slaver),當它被尋址后,都要求在接收到每一個字節(jié)后產(chǎn)生一個響應(yīng)。因此,the master device 必須產(chǎn)生一個額外的時鐘脈沖(第九個脈沖)用以和這個響應(yīng)位相關(guān)聯(lián)。 在這個脈沖期間,發(fā)出響應(yīng)的從設(shè)備必須將SDA拉低并在時鐘脈沖的高電平期間保持住。這表示該設(shè)備給出了一個ACK。如果它不拉低SDA線,就表示不響應(yīng)(NACK)。另外,在從機(發(fā)送方)發(fā)送完最后一個字節(jié)后主設(shè)備(接收方)必須產(chǎn)生一個不響應(yīng)位,用以通知從機(發(fā)送方)不要再發(fā)送信息了,這樣從機就知道該
3、將SDA釋放了,而后,主機發(fā)出一個停止位給slaver。總結(jié)下,i2c通訊中,SDA 和 SCL 都是有主機控制的,從設(shè)備只是能夠?qū)DA線拉低而已。對于SCL線,從機是沒有任何能力去控制的。從機只能被動跟隨SCL 再說的清楚些:主機發(fā)送數(shù)據(jù)到從機的狀態(tài)下:主機控制SCL信號線和SDA信號線,從機只是在SCL線為高的時候去被動讀取SDA線。主機讀取從機的數(shù)據(jù):主機來發(fā)出時鐘信號,從機只是保證在時鐘信號為高電平的時候的SDA的狀態(tài)而已。 SDA和SCL已經(jīng)通過上拉電阻被上拉,master可以控制(拉低或者釋放)這兩條線,而slaver只能控制SDA線。當master發(fā)送數(shù)據(jù)時,master會適時
4、地將SDA和SCL拉低或釋放(拉高)。確切的時序應(yīng)該是這樣的:當mater要發(fā)送一個start時,mater會將SDA拉低,這就可以了,因為此時的SCL一定是High。好了,一個start就這樣發(fā)出去了。而slaver也會發(fā)現(xiàn)這個start信號的發(fā)生,slaver便會準備好接收接下來的數(shù)據(jù)了。緊接著,master要發(fā)送一個Byte的數(shù)據(jù)了,一位一位的發(fā)出這8個bits。這時master會先將SCL拉低,然后在SCL為低的狀態(tài)下將一個bit準備好放到SDA上(比如要發(fā)送一個 0,master就會通過拉低SDA來放好這個0),然后master會把SCL拉高(釋放),此時slaver會立刻檢測到SC
5、L的變化,由此聰明的slaver便知道m(xù)aster已經(jīng)將要發(fā)送的那個bit準備好了,slaver便會在這個SCL的高電平期間盡快(maser不會等你很久的哦)去讀取一下SDA,嗯讀到了一個0,slaver就把這個0放到自己的移位寄存器中待后續(xù)處理。master會在一個設(shè)定好的時間后把SCL再次拉低,然后在SCL為低電平期間把下一個bit放到SDA上,然后再把SCL拉高,然后slaver在SCL的高電平期間再去讀SDA。如此反復8次,一個Byte的傳輸便告結(jié)束。當這8個bit發(fā)完后,SCL是處于低電平的(被master拉低的),SDA是出于高電平的(master已經(jīng)釋放了SDA)。 當一個字節(jié)發(fā)
6、送完畢后,master會釋放SDA(拉高)并拉低SCL,此時slaver如果打算發(fā)出一個ACK的話,它必須在這個SCL被master拉低的短暫時間內(nèi)去主動將SDA拉低并保持住 (此前我們說過,SDA此時已經(jīng)被master釋放,所以slaver才有機會去拉低這個SDA)。master會在一個確定的時間后再次將SCL拉高,并在拉高的期間去讀取SDA線的狀態(tài),如果讀到低電平,則認為收到了來自slaver的響應(yīng)(ACK),否則認為slaver沒有響應(yīng)(NACK)剛才發(fā)送的那一個Byte。這個過程就是我們說的i2c通訊中的第9個時鐘周期。當master讀完這個ACK / NACK 后,會再次將SCL拉低
7、,用以通知slaver:第9個時鐘周期已經(jīng)結(jié)束,你現(xiàn)在可以釋放SDA了。而此時master也可以向SDA上準備下一個Byte的第一個bit。繼而重復上述過程。或者,master也許想在接下來發(fā)送一個stop過去,那么master會在這個SCL為低的時間內(nèi)將SDA拉低,而后再將SCL拉高,在SCL為高的期間再將SDA釋放 (拉高) 。這樣,一個STOP位就產(chǎn)生了。你會發(fā)現(xiàn)此后的SDA和SCL都是高,這就是是所謂的總線空閑了!一句話:SCL是單向的,由master控制。而SDA是雙向的,master可以控制,slaver也可以控制。 2.示波器探頭會對波形產(chǎn)生影響,導致波形延時,使用是請注意。TM
8、S320F28335學習筆記-ADC控制器1. ADC的工作模式有哪些? 同時采樣模式和順序采樣模式。2. ADCINT與SEQ1INT、SEQ2INT中斷有什么區(qū)別 SEQ1INT和SEQ2INT對應(yīng)序列器SEQ1和SEQ2的中斷,ADCINT是為了向前兼容F281x系列的ADC中斷,可以由SEQ1或SEQ2觸發(fā)產(chǎn)生。在ADCINT中斷服務(wù)程序里,需要軟件干預去根據(jù)對應(yīng)標志位確定到底是哪個序列產(chǎn)生了中斷,而SEQINT1&2是不需要的。TMS320F28335筆記-啟動過程1. DSP reset后運行的起始地址是多少? 0x3FFFC02.仿真器燒寫程序的步驟是? 根據(jù)cmd文件把
9、程序燒到指定位置,然后執(zhí)行。3.DSP的Flash啟動過程是什么? 首先硬件配置GPIO8487上拉為1,即處于Flash啟動過程。當DSP復位后,會從復位向量0x3FFFC0處取得復位向量,并跳轉(zhuǎn)到InitBoot處開始執(zhí)行,InitBoot會讀GPIO8487的值發(fā)現(xiàn)全為1判斷為Flash啟動方式。然后會跳到0x33FFF6處執(zhí)行。在CCS5.2工程的cmd文件中有如下代碼:MEMORYPAGE 0 : BEGIN : origin = 0x33FFF6, length = 0x000002 /*
10、 Boot to M0 will go here */.SECTIONS.codestart : > BEGIN PAGE = 0.即表示把codestart段放到0x33FFF6位置處,文件“DSP2833x_CodeStartBranch.asm”中有codestart段的定義,實際上codestart段只是包含了一個跳轉(zhuǎn)指
11、令,是程序跳轉(zhuǎn)到_c_int00處,_c_int00在boot.asm in RTS library中有定義,_c_int00的代碼最終會調(diào)用c的main函數(shù),之后就是main函數(shù)的執(zhí)行。4.F28335如何燒寫代碼到flash中并運行?首先使用添加C:ticontrolSUITEdevice_supportf2833xv133DSP2833x_commoncmdF28335.cmd。此文件即為配置代碼到flash中的TI官方配置文件。然后參考C:ticontrolSUITEdevice_supportf2833xv133DSP2833x_examples_ccsv4flash_f28335。
12、添加以下代碼:MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);將一些在內(nèi)存中運行的代碼從flash復制到內(nèi)存中,然后程序才能正常運行。5.寫好的代碼再ram中能正常運行但是燒寫到flash中后,函數(shù)DSP28x_usDelay()不能正常運行為什么? 因為在DSP2833x_usDelay.asm中有.sect "ramfuncs",即把該函數(shù)定義在段"ramfuncs"中, 而此段需要在內(nèi)存中運行,故需要使用函數(shù)MemCopy(&Ramfu
13、ncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);將ramfuncs段復制到內(nèi)存中然后運行。只算以這樣設(shè)計是因為函數(shù)DSP28x_usDelay()精準運行對運行速度有要求故必須放在段"ramfuncs"中。參考:6.cmd中以下代碼如何解釋? ramfuncs : LOAD = FLASHD,
14、 RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd),
15、160; RUN_START(_RamfuncsRunStart), PAGE = 0第1行表示該段的裝載在PAGA0的FLASHD中第2行表示該段的運行地址在PAGE0的RAML0中LOAD_ START(_RamfuncsLoadStart)令編譯器創(chuàng)建了一個變量RamfuncsLoadStart,該變量指向段ramfu
16、ncs的裝載地址的首地址(LOAD_ START為編譯偽指令,請見CCS的幫助文檔);LOAD_ START(_RamfuncsLoadEnd)令編譯器創(chuàng)建了一個變量RamfuncsLoadEnd,該變量指向段ramfuncs的裝載地址的末地址(LOAD_ END為編譯偽指令,請見CCS的幫助文檔);LOAD_ START(_RamfuncsRunStart)令編譯器創(chuàng)建了一個變量RamfuncsRunStart,該變量指向段ramfuncs的運行地址的首地址(LOAD_ START為編譯偽指令,請見CCS的幫助文檔); 從第1和2行可以看出,段ramfuncs中的函數(shù)DSP28x_usDel
17、ay()的裝載地址和運行地址是不同的,本程序中裝載在Flash的塊FLASHD中,而在SARAM L0中運行,這只是目標,實際運行時DSP并不會自動將Flash中的代碼拷貝到SARAM中,因此需要手動添加代碼來完成。在C函數(shù)中,為了使用變量RamfuncsLoadStart、RamfuncsLoadEnd和RamfuncsRunStart,必須先聲明,本工程在文件DSP2833x_GlobalPrototypes.h中做了如下聲明:extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 Ramfun
18、csRunStart;然后就可以使用了。在Main.c中,使用MemCopy()函數(shù)將段ramfuncs中的函數(shù)DSP28x_usDelay()的代碼從裝載地址RamfuncsLoadStartRamfuncsLoadEnd拷貝到RamfuncsRunStart開始的SARAM空間中。之后在程序運行時,只要調(diào)用DSP28x_usDelay()函數(shù),都會自動地指向SARAM中相應(yīng)的函數(shù)入口地址,這一點是自動完成的。MemCopy()函數(shù)原型在MemCopy.c中,DSP2833x_GlobalPrototypes.h聲明。7.如何將一個函數(shù)放到ram中運行? 參考TI公司頭文件中自帶InitFl
19、ash函數(shù),這些函數(shù)會以CODE_SECTION申明。如:#pragma CODE_SECTION(InitFlash, "ramfuncs");TMS320F28335筆記-中斷1. 如何開啟某個中斷? 設(shè)置中斷向量。例如:PieVectTable.WAKEINT = &wakeint_isr;· 打開PIE控制器。PieCtrlRegs.PIECTRL.bit.ENPIE = 1;· 使能PIE中對應(yīng)外設(shè)的中斷(相應(yīng)group的相應(yīng)pin)。例如:PieCtrlRegs.PIEIER1.bit.INTx8 = 1;· 使能CPU的相
20、應(yīng)中斷(INT1INT12)IER |= M_INT1;· 使能CPU響應(yīng)中斷EINT;參考網(wǎng)址:2.中斷標志有幾級?作用是什么? 中斷標志主要有三級CPU(有16個標志位)、PIE(有12組每組有12個標志位)和外設(shè)(有的外設(shè)沒有)。標志位在中斷發(fā)生后鎖存中斷狀態(tài),即表示中斷發(fā)生。在CPU響應(yīng)中斷后,會自動清除cpu級別的標志位IFR bit,同時將INTM bit 置位,以防止其它中斷的發(fā)生;CPU在從PIE中取中斷向量時PIE會自動清除PIE級別的標志位PIEIFRx.y。所以在進入中斷處理程序后除了外設(shè)所有中斷位都已經(jīng)清除。而中斷處理程序中需要清除PIEACKx和外設(shè)的中斷標
21、志位(如果有的話)。參考網(wǎng)址:TMS320F28335筆記-SPI模塊什么是SPI接口? SPI接口是高速同步串行輸入輸出接口。TMS320F28335有幾個SPI接口模塊? 有一個專門的SPI模塊, 另外兩個McBSP也可以配置為SPI接口。TMS320F28335SPI接口由幾組寄存器控制? 12組,位于控制寄存器幀0x7040h開始的位置。所有的寄存器都為16bit寄存器FIFO有幾級? 16級SPI FIFO模式下如何對傳輸和接收FIFO進行操作? 直接對SPITXBUF進行賦值以傳輸數(shù)據(jù)例如:SpiaRegs.SPITXBUF=sdatai。此操作可理解為:首先使TXFIFO頭指針加
22、1,然后把值寫入TXFIFO頭指針指向的位置。如果當前沒有一個激活的傳輸過程時,對SPITXBUF的寫入會激活一個傳輸過程。 直接讀取SPIRXBUF的值以接收數(shù)據(jù)例如:rdatai=SpiaRegs.SPIRXBUF,此操作可理解為:首先從RXFIFO頭指針處讀取1個word, 然后使RXFIFO頭指針減1。SPI FIFO模式下傳輸和接收中斷何時產(chǎn)生? 是在數(shù)據(jù)傳輸或接收結(jié)束后,再判斷傳輸和接收FIFO隊列中有多少數(shù)據(jù)(SPIFFTX.TXFFST4-0和SPIFFRX.RXFFST4-0的值)。對于傳輸FIFO如果FIFO中數(shù)據(jù)小于等于TXFFIL4-0(此寄存器指定臨界值)指定的值時會
23、觸發(fā)中斷,在中斷處理例程中繼續(xù)傳輸數(shù)據(jù)。對于接收FIFO如果FIFO中的值大于等于RXFFIL4-0中指定的值時觸發(fā)中斷,在中斷處理例程中接收數(shù)據(jù)。故FIFO模式下中斷觸發(fā)條件除了標準SPI模式下的數(shù)據(jù)傳輸接收完畢的條件外還要滿足FIFO中的數(shù)據(jù)小于等于TXFFIL或大于等于RXFFIL設(shè)定值的條件,在兩個條件都滿足的情況下才會觸發(fā)中斷。另外一般情況下,F(xiàn)IFO模式SPI初始化完后會立即產(chǎn)生以個傳輸中斷,因為此時TXFIFO沒有數(shù)據(jù)滿足產(chǎn)生中斷的條件。如果只接收數(shù)據(jù)不發(fā)送數(shù)據(jù)如何激活接收過程? SPI的的接收過程必須依賴傳輸過程,故即使值接收數(shù)據(jù)也必須對SPITXBUF寫入以激活一個傳輸過程來
24、接收數(shù)據(jù)。TMS320F28335筆記-McBSP模塊1.McBSP接口總共有幾個?每個McBSP接口有幾根pin? TMS320F28335總共有兩個McBSP接口。每個接口有六根pin, 分別是:MFSX, MFSR, MCLKX, MCLKR, MDX, MDR。 2.McBSP用于SPI模式時使用那些pin?他們和標準SPI pin的對應(yīng)關(guān)系是什么?SPICLK->MCLKXSPISIMO->MDXSPISOMI->MDRSPISTE->MFSXSPITXINT->SPIRXINT->3.McBSP如何開啟clock stop mode以兼
25、容SPI接口? 通過CLKSTP、CLKXP和CLKRP來配置時鐘的極性和延時的SPI兼容模式。DSP28335研發(fā)筆記1.如何查看CCS5.2中包含的源文件有哪些?以及他們的位置? CCS5.2工程中C語言源文件有兩部分組成,一部分是在project路徑下的.c文件,另外一部分是通過連接添加到工程里的(.project文件中的<linkedResources></linkedResources>字段)。因此CCS5.2中的源文件一部分在工程目錄下,另外一部分在.project文件中的<linkedResources></linkedResources
26、>字段包含的路徑下。2.CCS中GEL文件的作用是什么? ccs的gel語言是一種交互式的命令,它是解釋執(zhí)行的,即不能被編譯成可執(zhí)行文件。它的作用在于擴展了ccsstudio的功能,可以用gel來調(diào)用一些菜單命令,對DSP的存儲器進行配置等等。但是作者建議對于使用仿真器和DSP功能板的仿真環(huán)境用戶來說,這種GEL語言文件是沒必要加入到配置中的。gel語言的重要性在于針對計算機模擬環(huán)境的用戶,使用gel可以為其準備一個虛擬的DSP仿真環(huán)境,但也不是非用不可的。3.引用例子中的源文件時要注意什么? 使用CCS5.2導入例子中的源文件時,最好不要選擇連接方式,而使用復制的方式,這樣必要時可以更
27、改這些源文件,而不會影響其他的程序的使用。4.CCS5.2如果沒有包含函數(shù)的聲名頭文件時也能運行但是結(jié)果會不正常,故當函數(shù)調(diào)用出現(xiàn)莫名其妙的問題時,要檢查聲名函數(shù)的頭文件是否包含。5.CCS5.2開發(fā)DSP28335程序時如何設(shè)置程序堆棧的大小? CCS5.2默認情況下堆棧的大小都為0x400,在Project->Properties->Build->C200 Linker->Basic Options下設(shè)置。設(shè)置完堆棧的大小后,還要在cmd文件中分配堆棧存儲空間的 段的位置和大小,??臻g的段名為.stack用于函數(shù)中的臨時變量,堆空間的段名為.sysmem用于c語言m
28、alloc函數(shù)分配內(nèi)存,malloc最大可分配內(nèi)存為Project->Properties->Build->C200 Linker->Basic Options下設(shè)置的大小減2。cmd文件中的堆棧段的大小不能小于Project->Properties->Build->C200 Linker->Basic Options下設(shè)置的大小。一般來講不用變動??臻g的大小和位置,如果函數(shù)中需要大的空間就申請堆空間。堆空間可以指定為外部內(nèi)存,但要注意在第一次malloc函數(shù)調(diào)用之前一定要初始化外部內(nèi)存。否則malloc能執(zhí)行成功但是空間指向未定。heap大小限制為32k word即0x10000。6.相關(guān)參考網(wǎng)站7.如何添加頭文件的相對路徑? 首先在Project->Properties->Build選項下,點擊Variables添加一個變量,然后就可以在Project->Properties->Build->C2000 Compiler->Include Options下用$
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 仁愛版初中英語單詞表
- 高一化學教案:第二單元食品中的有機化合物
- 2024高中地理第1章區(qū)域地理環(huán)境與人類活動第3節(jié)第2課時南方與北方西部大開發(fā)學案湘教版必修3
- 2024高中語文第2單元孟子蚜第4課樂民之樂憂民之憂練習含解析新人教版選修先秦諸子蚜
- 2024高中語文第六單元文無定格貴在鮮活春夜宴從弟桃花園序訓練含解析新人教版選修中國古代詩歌散文欣賞
- 2024高考化學一輪復習第四章非金屬及其化合物第三講硫及其化合物規(guī)范演練含解析新人教版
- 2024高考歷史一輪復習方案專題四世界政治制度的演變與發(fā)展第12講解放人類的陽光大道教學案+練習人民版
- 2024高考地理一輪復習第二部分人文地理-重在運用第四章工業(yè)地域的形成與發(fā)展第23講工業(yè)地域的形成與工業(yè)區(qū)學案新人教版
- 小學2024-2025年第二學期小學科學教學計劃
- 鋼結(jié)構(gòu)廠房施工準備
- 國家開放大學《理工英語2》形考任務(wù)1-8參考答案
- 建筑公司證書津貼支付管理辦法
- 經(jīng)橈動脈全腦血管造影術(shù)圍手術(shù)期護理
- 北師大版本八年級上冊第一章單元測試卷(A卷)【含答案】
- 2025屆高考政治一輪復習:統(tǒng)編版必修4《哲學與文化》必背知識點考點提綱
- 開展醫(yī)院安全應(yīng)急演練工作計劃三篇
- 湖北省武漢市東湖高新區(qū)2025屆七年級數(shù)學第一學期期末學業(yè)水平測試試題含解析
- 怪獸充電寶商家合作合同
- 宜賓市敘州區(qū)2021-2022學年七年級上學期期末數(shù)學試題
- 全國生態(tài)環(huán)境監(jiān)測專業(yè)技術(shù)人員大比武理論試題集 第八章 自動監(jiān)測
- 職業(yè)發(fā)展規(guī)劃銀行面試問題
評論
0/150
提交評論