




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 基于DSP的串口通信設計與實現 摘 要 本次畢業設計的主要工作就是基于在TMS320F2812 DSP芯片的SCI(同步串行通信)口上的串口通信的設計與實現。由于TMS320F2812包含了兩個串行通信接口(SCI)模塊,所以SCI模塊提供了DSP與其他標準NRZ格式的異步外圍之間的數字通訊。SCI接收者和發送者皆采用雙總線模式,因為每一個皆有自己獨自的使能位和中斷位。故本文以SCI模塊的全雙工式通信系統的分析與設計為主線。首先了解串行通信理論的有關概念,并提出了一個既能同時進行,又能夠獨立進行發送和接收操作的可行方案。因此,為了保證串口通信過程中數據的完整性,最主要的還是FIFO時鐘系統的
2、設計。故本文的重點又是基于SCI模塊的FIFO設計。 關鍵字:DSP ; TMS320F2812 SCI ;SCI口FIFO; Abstract The main graduation design is based on TMS320F2812 DSP chip SCI (synchronous serial communication) serial communication port on the design and implementation.The TMS320F2812 includes two serial communication interface (SCI) mod
3、ule, so SCI module provides DSP and other standard asynchronous NRZ format digital communication between peripheral.SCI receiver and transmitter by key dual-bus mode, because each has its own own bit and interrupt enable bit.Therefore, this paper's full-duplex type SCI module communication syste
4、ms analysis and design of the main line.Serial communication theory to first understand the relevant concepts, and presents a both at the same time, but also capable of independent operations to send and receive options.Therefore, the process of serial communications in order to ensure data integrit
5、y, the most important thing is FIFO clock system design.Therefore, the focus of this paper is designed based on FIFO SCI module. Keyword:DSP ;TMS320F2812 SCI ; SCI FIFO ; 目 錄第一章 緒 論- 1 -1.1 引言- 1 -1.2 DSP發展簡介- 1 -1.3 論文各章節的安排- 2 -第二章 TMS320F2812 DSP及SCI口結構與原理- 3 -2.1 TMS320F2812 DSP結構與原理- 3 -2.2 TMS
6、320F2812 SCI結構與原理- 5 -2.3 SCI模塊發送和接收數據的工作原理- 7 -2.4 SCI數據格式- 8 -2.5 SCI通信波特率- 12 -2.6 SCI FIFO描述- 13 -第三章 串口通信硬件與軟件設計- 17 -3.1 基于TMS320F2812的DSP最小系統設計- 17 -3.1.1電源及復位電路的設計- 17 -3.1.2 時鐘電路設計- 18 -3.1.3 DSP與JTAG接口設計- 19 -3.2 串口通信硬件設計- 19 -3.3 串口通信軟件設計- 21 -第四章 總結與展望- 26 -4.1 結論- 26 -4.2 展望- 26 -致 謝- 2
7、7 -參考文獻- 28 - 第一章 緒 論1.1 引言 串口是計算機上一種非常通用通信設備的協議,同時也是儀器儀表設備通用的通信協議,也還可以用來獲取遠程采集設備的數據。串口通信的概念非常簡單,串口按位發送和接收字節。可以在使用一根線發送數據的同時用另一根線接收數據,它很簡單并且能夠實現遠距離通信。 本文主要研究的是基于DSP串口通信在TMS320F2812 SCI口的設計與實現。而DSP是一種獨特的微處理器,是以數字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或1的數字信號。再對數字信號進行修改、刪除、強化,并在其他系統芯片中把數字數據解譯回模擬數據或實際環境格式。它不僅具有
8、可編程性,而且其實時運行速度可達每秒數以千萬條復雜指令程序,遠遠超過通用微處理器,是數字化電子世界中日益重要的電腦芯片。它的強大數據處理能力和高運行速度,是最值得稱道的兩大特色。DSP優點主要如下所示: 對元件值的容限不敏感,受溫度、環境等外部參與影響小;容易實現集成;VLSI可以分時復用,共享處理器;方便調整處理器的系數實現自適應濾波;可實現模擬處理不能實現的功能:線性相位、多抽樣率處理、級聯、易于存儲等;可用于頻率非常低的信號。DSP技術的應用:主要是在處理語音、圖像/圖形、軍事、儀器儀表、自動控制、醫療、家用電器和生物醫學信號處理等等方向的應用。1.2 DSP發展簡介DSP產業在約40年
9、的歷程中經歷了三個階段:第一階段,DSP意味著數字信號處理,并作為一個新的理論體系廣為流行。第二個階段,開始與80年代,DSP從概念走向了產品,TMS32010所實現的出色性能和特性備受業界關注。第三個階段,則是始于21世紀,市場競爭更加激烈,TI及時調整DSP發展戰略全局規劃,并以全面的產品規劃和完善的解決方案,加之全新的開發理念,深化產業化進程。而DSP未來的發展方向主要是這幾個方面:、數字信號處理器的內核結構進一步改善,多通道結構和單指令多重數據(SIMD)、特大指令字組(VLIM)將在新的高性能處理器中將占主導地位。2、DSP 和微處理器的融合。3、DSP 和高檔CPU的融合。4、DS
10、P 和SOC的融合。5、DSP 和FPGA的融合。1.3 論文各章節的安排 這次的畢業論文設計,從接到題目后,就開始著手與論文相關質料的查找和論文進度的安排。從了解串口通信的概念到最后選定由TMS320F2812 DSP芯片來完成本次的論文設計,再基于對TMS320F2812芯片各個引腳的熟悉和了解,最后決定了由TMS320F2812的SCI模塊來實現本次論文所想要達到的目的即基于DSP串口通信的設計與實現。又由于TMS320F2812包含了兩個串行通信接口(SCI)模塊,所以SCI模塊提供了DSP與其他標準NRZ格式的異步外圍之間的數字通訊。SCI接收者和發送者皆采用雙總線模式,因為每一個皆
11、有自己獨自的使能位和中斷位。故本文以SCI模塊的全雙工式通信系統的分析與設計為主線。首先了解串行通信理論的有關概念,并提出了一個既能同時進行,又能夠獨立進行發送和接收操作的可行方案。因此,為了保證串口通信過程中數據的完整性,最主要的還是FIFO時鐘系統的設計。故本文的重點又是基于SCI模塊的FIFO設計。論文章節安排: 第一章緒論主要是敘述了DSP應用領域和發展歷程。 第二章介紹了TMS320F2812 DSP及SCI口結構與原理。 第三章介紹了串口通信硬件與軟件設計。 第四章為總結和展望。 第二章 TMS320F2812 DSP及SCI口結構與原理2.1 TMS320F2812 DSP結構與
12、原理32位的TMS320F2812 DSP整合了DSP和微控制器的最佳特性,能夠在一個周期內完成3232位的乘法累加運算,或兩個1616位乘法累加運算。此外,由于器件集成了快速的中斷管理單元,使得中斷延遲時間大幅減少,滿足了適時控制的需要。其功能框圖如圖1所示: 圖1 TMS320F2812 DSP功能框圖歸納起來TMS320F2812 DSP有以下特點: 高性能的靜態CMOS工藝 ,可使主頻達到150MHz ,即每個指令周期是 6167ns ;低功率設計(供電電壓只有118V和313V) ; 高性能的32位CPU。能夠實現16X16和32X32乘操作 ,快速的中斷操作 ,尋址程序空間可達4M
13、,尋址數據空間可達4G,在 C/ C + +和匯編語言中代碼可得到優化 ,另外還可向下兼容 TMS320F24X/ LF240X處理器的代碼; 片上存儲器:閃存 128K字 ,單訪問雙口 RAM(SARAM) 18k字; 啟動只讀存儲器 ROM4K字 ,具有軟件啟動模式并包含標準的數學表; 時鐘和系統控制采用鎖相環技術PLL來控制系統各模塊所需要的頻率; 具有很強的外圍通訊功能:包括同步串行口SPI ,通用異步串行口SCI ,增強的 eCAN 和多通道緩存串行口McBSP。 可以在一個周期內對任何內存地址完成讀取、修改、寫入操作,使得效率及程序代碼達到最佳。此外,還提供多種自動指令提高了程序的
14、執行效率,簡化了程序的開發。 針對嵌入式控制領域應用的特殊要求,已推出一款針對C28x內核的C編輯器,能夠提供非常杰出的1.1C匯編語言轉換比例。C28x DSP的內核還支持IQ變換函數庫,使研發人員很方便的使用便宜的定點DSP來實現浮點運算。 在串行通信的應用中,TMS320F2812含有兩個接口:外設接口SPI和通信接口SCI,本文研究的是基于TMS320F2812串行通信接口SCI的設計與實現。 而TMS320F2812串行通信接口(SCI)是一個雙線通信異步串行通信接口。為減少串口通信時CPU的開銷,TMS320F2812的串口支持16級接收和發送FIFO。串行通信接口支持與CPU以及
15、其它使用非歸零格式的異步外設之間的異步串行數字通信。它的接收器和發送器都是雙級緩沖的,有各自獨立的控制位與中斷位,都可以同時工作在全雙工模式下。為保證數據的完整性,串行通信接口對接收的數據進行間斷檢測、奇偶性、超時和幀錯誤檢查。串行通信接口可以通過16位的波特率選擇寄存器,設置多達65000種通信速度。TMS320F2812的SCI和以往的DSP的SCI相比具有兩個特點:一是傳送、接收都具有獨立的FIFO;二是波特率可以自動檢測。2.2 TMS320F2812 SCI結構與原理 SCI(Serial Communication Interface),即串行通信接口,是一個雙線的異步串口,即具有
16、接收和發送兩根信號線的異步串口,一般可以看作是 UART(通用異步接收/發送裝置)。F2812的SCI模塊支持DSP與采用NRZ標準格式的異步外圍設備之間進行數字通信。2812 內部具有兩個相同的SCI模塊,SCIA和SCIB,每一個SCI模塊都各有一個接收器和發送器。SCI的接收器和發送器各具有一個16級深度的FIFOFirst in fist out 先入先出)隊列,它們還都有自己獨立的使能位和中斷位,可以在半雙工通信中進行獨立的操作,或者在全雙工通信中同時進行操作。 首先,我們從圖2可以看到,SCI模塊具有兩個引腳,SCITXDA和SCIRXDA,分別實現發送數據和接收數據的功能,這兩個
17、引腳對應于GPIOF模塊的第4和第5位,在編程初始化的時候,需要將GPIOFMUX寄存器的第4和第5位置為1,才能使得這兩個引腳具有發送和接收的功能,否則就是普通的I/O引腳。外部晶振通過PLL模塊產生了CPU的系統時鐘SYSCLKOUT,然后SYSCLKOUT 經過低速預定標器之后輸出低速時鐘LSPCLK供給SCI。要保證SCI的正常運行,系統控制模塊下必須使能SCI的時鐘,也就是在系統初始化函數中需要將外設時鐘控制寄存器PCLKCR的SCIAENCLK位置1。從圖2,我們可以清楚的看到SCIA可以產生兩個中斷,SCIRXINTA 和SCITXINTA,即發送中斷和接收中斷。 圖2 SCIA
18、的 CPU接口 SCI相關信號如表1所示:信號名稱描述外部信號RXDSCI異步串行數據接收信號TXDSCI異步串行數據發送信號控制信號通信速率低速外設預分頻時鐘中斷信號TXINT發射中斷RXINT接收中斷 表 1 SCI相關信號SCI模塊的其他一些特點如表2所示:序號 SCI模塊的特點 1具有4 個錯誤檢測標志:極性(parity)、溢出(overrun)、 幀 (framing)、中斷(break)檢測。2多處理器模式下具有兩種喚醒方式:空閑線方式和地址位方式。通常使用的時候很少遇到多處理器模式,我們采用的是空閑線方式。 3通信工作于半雙工或者全雙工模式。 4具有雙緩沖接收和發送功能,接收緩
19、沖寄存器為SCIRXBUF,發送緩沖寄存器為SCITXBUF。5發送和接收可以通過中斷方式來實現,也可以通過查詢方式來實現。6具有獨立的發送中斷使能位和接收中斷使能位。 7SCIA 模塊具有 13 個控制寄存器,值得注意的是,這些寄存器都是 8 位的寄存器,當某器被訪問時,數據位于低8 位,高8位為0,因此,把數據寫入高8 位將是無效的。 表2 SCI模塊特點2.3 SCI模塊發送和接收數據的工作原理 圖3 SCI模塊的工作原理 SCI模塊的工作原理如圖3所示,之所以SCI能工作于全雙工模式,是因為它有獨立的數據發送器和數據接收器,這樣能夠保證SCI既能夠同時進行,也能夠獨立進行發送和接收的操
20、作。 SCI發送數據的過程如下:如圖3右半部分所示,在FIFO功能使能的情況下,首先,發送數據緩沖寄存器SCITXBUF從TX FIFO中獲取由CPU加載的需要發送的數據,然后SCITXBUF將數據傳輸給發送移位寄存器TXSHF,如果SCI的發送功能使能,TXSHF則將接收到的數據逐位逐位的移到SCITXD引腳上。 SCI接收數據的過程如下:如圖3的左半部分所示,首先,接收移位寄存器 RXSHF逐位逐位的接收來自于SCIRXD引腳的數據,如果SCI的接收功能使能,RXSHF將這些數據傳輸給接收緩沖寄存器SCIRXBUF,CPU就能從SCIRXBUF讀取外部發送來的數據。當然,如果FIFO功能使
21、能的話,SCIRXBUF會將數據加載到RX FIFO的隊列中,CPU再從FIFO的隊列讀取數據。2.4 SCI數據格式 在SCI中,通信協議體現在SCI的數據格式上。通常將SCI的數據格式稱之為可編程的數據格式,原因就是可以通過SCI的通信控制寄存器SCICCR來進行設置,規定通信過程中所使用的數據格式。SCI 使用的是NRZ的數據格式,NRZ數據格式包括了如表3所示:序號內容11個起始位21-8個數據位31個奇/偶/非極性位41-2個結束位5在地址位模式下,有1個用于區別數據或者地址的特殊位 表3據格式包數據是18 位,1個字符的長度。將帶有格式信息的每一個數據字符叫做一幀。SCI有空閑線模
22、式和地址 位模式,若是在兩個處理器之間的通信,例如2812和 PC機或者2812和2812之間通信,更適合使用空閑線模式,而地址位模式一般用于多處理器之間的通信。SCI通信控制寄存器(SCICCR): SCICCR定義了SCI使用的字符格式、協議和通信模式,如圖4和表4所示。 圖4 SCI通信控制寄存器(SCICCR) 位名稱功能描述1STOP BITSSCI停止位的個數該位決定的停止位的個數,接收器僅對一個停止位檢查 0 一個停止位 1 兩個停止位2PARITY奇偶校驗選擇位如果PARITY ENABLE位被置位,則PARITY確定采用奇校驗還是偶校驗. 0 奇校驗 1 偶校驗3PARITY
23、SCI奇偶校驗使能位表4 SCI通信控制寄存器(SCICCR)的功能描述 SCI控制寄存器1(SCICTL1): SCICTL1控制接收/發送使能、TXWAKE和SLEEP功能以及SCI軟件復位,如圖5和表5所示。 圖5 SCI控制寄存器1(SCICTL1)位名稱功能描述1RX ERR INT ENA接收錯誤中斷使能位如果由于產生錯誤而置位了接收錯誤位(SCIRXST,位7),則置位該位使能一個接收錯位中斷。 0 禁止接收錯誤中斷; 1 使能接收錯誤中斷;2SW RESET軟件復位位(低有效)將0寫入該位,初始化SCI狀態機和操作標志至復位狀態。直至將1寫入到軟件復位位,所有起作用的邏輯都保持
24、確定的復位狀態。因此,系統復位后,應將該位置1以重新使能SCI。在檢測到一個接收器間斷(BRKDT標志位,位SCIRXST,位5)后清除該位。 表5 SCI控制寄存器1 (SCICTL1) 的功能描述SCI控制寄存器2(SCICTL2): SCI控制寄存器2(SCICTL2)控制使能接收準備好、間斷檢測、發送準備中斷、發送器準備好及空標志,如圖6和表6所示。 圖6 SCI控制寄存器2 (SCICTL2)位名稱功能描述1TXRDY發送緩沖寄存器準備好標志位 當TXRDY置位時,表示發送數據緩沖寄存器(SCITXBUF)已經準備接收另一個字符。向SCITXBUF寫數據自動清除TXRDY位。如果SC
25、ITXBUF置位時,中斷使能位TXINT ENA(SCICTL2.0)置位,將會產生一個發送中斷請求 。 0 SCITXBUF滿: 1 SCITXBUF準備好接收下一個字符:5-2保留讀返回0,寫沒有影響3RX/BK INT接收緩沖器/間斷中斷使能 該位控制由于RXRDY標志位或BRKDT標志位置位引起的中斷請求,但是RX/BK INT ENA 并不能阻止RX/BK INT置位。 0 禁止RXRDY/BRKDT中斷; 1 使能RXRDY/BRKDT中斷;4TX INT ENASCITXBUF寄存器中斷使能位該位控制由TXRDY標志位(SCICTL2.7)置位引起的中斷請求。但是它并不能阻止TX
26、RDY被置位 0 禁止TXRDY中斷; 1 使能TXRDY中斷; 表6 SCI控制寄存器2(SCICTL2)功能描述SCI接收器狀態寄存器 (SCIRXST) : SCIRXST包含7個接收器狀態標志位(其中2個能產生中斷請求)。每次一個完整的字符發送到接收緩沖器(SCIRXEMU和SCIRXBUF)后,狀態標志位刷新。每次緩沖器被讀取時,標志位被清除。 圖7給出了寄存器位的關系, 表7給出了SCI接收狀態寄存器的功能定義。 圖7 SCI接收器狀態寄存器(SCIRXST) 位名稱功能描述1RXRDY接收器準備好標志位2OE超時錯誤標志位在前一個字符被CPU或DMAC完全讀走前,當字符被發送到S
27、CIRXEMU和SCIRXBUF時,SCI就置位該位。前一個字符將會被覆蓋或丟失。 0 沒有檢測到超時錯誤; 1 檢測到超時錯誤;3FE幀錯誤標志位當檢測不到一個期望的停止位時,SCI就置位該位。丟失停止位表明沒有能夠和起始位同步,且字符幀發生了錯誤。 0 沒有檢測到幀錯誤; 1 檢測到幀錯誤;4RXRDY接收器準備好標志位當準備好從SCIRXBUF寄存器中讀一個新的字符時,接收器置位接收器準備好標志位,并且如果RX/BK INT ENA位(SCICTL2.1)是1則產生接收器中斷。 0 在SCIRXBUF中沒有新的字符; 1 準備好從SCIRXBUF中讀取字符;5保留讀返回0,寫操作沒有影響
28、 表7 SCI接收器狀態寄存器 (SCIRXST)功能描述在空閑線模式下,SCI發送或者接收一幀的數據格式如圖3所示,其中LSB是數據的最低位,MSB是數據的最高位如圖8所示。 圖8 空閑線模式下SCI-幀的數據式具體的定義如圖3所示的這些數據格式的寄存器是通信控制寄存器SCICCR,其內容如圖4所示。使用SCICCR進行數據格式編程如圖9所示。 圖9 SCI通信控制寄存器SCICCR使用SCICCR進行數據格式編程如表8所示:使用SCICCR進行數據格式編程 SciaRegs.SCICCR.bit.SCICHAR=8; /選擇數據長度,為8 個數據位 SciaRegs.SCICCR.bit.
29、PARITYENA=1; /開啟極性功能,值為0的時候取消極性功能 SciaRegs.SCICCR.bit.PARITY=0; /在開啟極性功能的前提下,該位值為0 時選擇偶極性,值為1時選擇奇極性 SciaRegs.SCICCR.bit.STOPBITS=0; /選擇停止位,該位為0時有1 個停止位,該位為1 時有2 個停止位 當然,上述這幾個語句,我們也可以合并成如下的語句: SciaRegs.SCICCR.all=0x13; 表8 SCICCR數據編程 空閑線模式中數據格式里沒有額外的地址位,在處理10個字節以上的數據塊時比地址位模式更為有效,被應用于典型的非多處理器SCI通信場合。而地
30、址位模式由于有專門的位來進行識別地址信息,所以數據塊之間不需要空閑時間等待,所以這種模式在處理一些小的數據塊的時候更為有效。2.5 SCI通信波特率 TMS320F2812的每個SCI都具有兩個8位的波特率寄存器,SCIHBAUD和SCILBAUD,通過編程,可以實現達64K不同的速率。波特率的計算公式如下所示: (1) 因此 (2)其中 BRR=波特率選擇寄存器中的值,從十進制轉換成十六進制后,高8位賦值給 SCIHBAUD,低8位賦值給SCILBAUD。值得注意的是,式1 所示的波特率公式適用于1BRR65535,當BRR=0是,波特率如公式(3)所示: (3)BRR的值是16位波特率選擇
31、寄存器內的值,其選擇值如表9所示:理想波特率LSPCLK時鐘頻率,37.5MHZBRR實際波特率錯誤百分比/%24001952(7A0H)240004800976(3D0H)4798-0.049600487(1E1H)96060.0619200243(00F3H)192110.0638400121(0079H)384220.06 表9 波特率值選擇表在SCI通信時雙方都必須以相同的數據格式和波特率進行通信,否則通信會失敗。2.6 SCI FIFO描述 1. 復位:在上電復位時,SCI工作在標準SCI模式,禁止FIFO功能。FIFO 的寄存器SCIFFTX、SCIFFRX和SCIFFCT都被禁止
32、。 2. 標準 SCI:標準F24xSCI模式,TXINT/RXINT 中斷作為 SCI的中斷源。 3. FIFO使能:通過將SCIFFTX寄存器中的SCIFFEN位置 1,使能FIFO模式。在任何操作狀態下SCIRST都可以復位FIFO模式。 4. 寄存器有效:所有SCI寄存器和SCI FIFO寄存器(SCIFFTX,SCIFFRX和SCIFFCT)有效。 5. 中斷:FIFO模式有兩個中斷,一個是發送FIFO中斷TXINT,另一個是接收 FIFO中斷RXINT 。FIFO接收、接收錯誤和接收FIFO溢出共用RXINT中斷。標準SCI的 TXINT 將被禁止,該中斷將作為 SCI發送 FIF
33、O中斷使用。 6. 緩沖: 發送和接收緩沖器增加了兩個16級的FIFO, 發送FIFO寄存器是6位長度,接收FIFO寄存器都是10位長度。標準SCI的一個字的發送緩沖器作為發送FIFO和移位寄存器間的發送緩沖器。只有移位寄存器的最后一位被移出后,一個字的發送緩沖才從發送 FIFO裝載。在使能FIFO后,經過一個可選擇的延遲(SCIFFCT),TXSHF被直接裝載而不使用 TXBUF。 7. 延遲發送:FIFO 中的數據傳送到發送移位寄存器的速率是可編程的,可以通過SCIFFCT 寄存器的位 FFTXDLY(7-0)設置發送數據間的延遲。FFTXDLY(7-0)確定延遲的SCI波特率時鐘周期數,
34、8位寄存器可以定義0個波特率時鐘周期的最小延遲到256個波特率始終周期的最大延遲。當使用0延遲時,SCI模塊的 FIFO數據移出時數據沒有延時,一位緊接一位地從FIFO移出,實現數據的連續發送。當選擇256個波特率時鐘延遲時,SCI模塊工作在最大延遲模式,FIFO移出的每個數據字之間有256個波特率時鐘延遲。在慢速SCI/UART的通信時,可編程延遲減少CPU對SCI通信的開銷。 8.FIFO狀態位:發送和接收 FIFO都有狀態位TXFFST或RXFFST(位12-0),這些狀態位顯示當前FIFO內有用數據的個數。當發送FIFO復位位TXFIFO和接收復位位RXFIFO將FIFO指針復位為0時
35、,狀態位清零。一旦這些位被設置為1,則FIFO從開始運行。 9.可編程的中斷級:發送和接收FIFO都能產生CPU中斷,只要發送FIFO狀態位TXFFST(位 12-8)與中斷觸發優先級位TXFFIL(位 4-0)相匹配,就能產生一個中斷觸發,從而為SCI的發送和接收提供了一個可編程的中斷觸發邏輯。接收FIFO的默認觸發優先級為0x11111,發送FIFO的默認觸發優先級為0x00000。0x00000 。FIFO模式下SCI中斷的操作和配置如圖10所示: 圖10 SCI FIFO 中斷標志和使能邏輯位大多數的SCI硬件模塊不支持自動波特率檢測,而在TMS320F2812處理器上, 增強功能的S
36、CI模塊硬件支持自動波特率檢測邏輯和發送/接受FIFO操作。自動波特率檢測邏輯主要解決中斷過程中波特率的確定問題。16字的FIFO可極大減少通信中斷次數以提高通信速率。通過設置SCIHBAUD, SCILBAUD 的值可到64K種不同的波特率,本系統的外部晶振 20MHz 經過 PLL5 倍頻后達100MHz, 該系統中的PC 與 DSP 的通信速率設置為19 200 bps, 通過對SCI 的進行初始化即可。計算機端利用串口調試助手實現接收顯示, 將其設置成與DSP 相同的波特率、有無校驗位、數據位長度、停止位長度以及數據位數即可正常顯示收/ 發數據。在兩個不同時鐘域中傳送數據時,異步先進先
37、出( FIFO, First In FirstOut)通常被用來保證數據傳送的安全性。將某一個時鐘域中的數據安全地傳送到另一個時鐘域中 ,需要多異步時鐘設計技術。1、在同步FIFO中的應用 設計同步FIFO時 ,首先要充分認識到它的特點 所謂“同步”是指讀寫時鐘是同步的。根據這個特點 ,設計者可以使用一個計數器來記錄FIFO的使用情況 ,并把計數器的值作為產生FIFO狀態信號的判據。當計數器的值為0時 , EMPTY信號有效;當計數器的值達到FIFO的最大深度時 , FULL信號有效。2、在異步FIFO中的應用 在異步 FIFO的設計中,由于FIFO兩端的時鐘不是同步的,上面介紹的設計方法就行
38、不通了。異步FIFO的空滿信號只有通過比較讀寫指針來生成。通常使用“超前”的指針工作方式,即讀寫指針指向的是下一個應該被讀或應該被寫的地址。當FIFO執行寫操作的時候,首先,將數據寫入指針指向的存儲地址;隨后 ,寫指針增加 ,指針指向下一個寫操作時數據需要存放的地址。為了保證異步FIFO設計的安全性和正確性 ,需要注意以下幾點: (1) 在設計指針控制邏輯的時候 ,所設計出的指針控制邏輯能夠保證讀寫操作的絕對正確和安全;能夠保證讀寫邏輯同存儲器通信時,能及時、高效地傳輸數據;能夠對亞穩態的出現有一定抑制作用。 (2) 對讀寫指針、握手信號進行比較的時候 ,必須保證信號是在同一個時鐘域中進行比較
39、 (可以是寫時鐘域同步到讀 ,也可以是讀時鐘域同步到寫 );也必須保證數據同步所引入的延時對FIFO狀態信號的正確性沒有影響。只有嚴格把握上面幾點 ,才有可能設計出符合要求的異步 FIFO。 第三章 串口通信硬件與軟件設計 3.1 基于TMS320F2812的DSP最小系統設計 一個典型的DSP最小系統如圖11所示,包括了復位電路、時鐘電路及JTAG接口電路等等。 圖11 DSP最小系統3.1.1電源及復位電路的設計 DSP系統一般都采用多電源系統 ,電源及復位電路的設計對于系統性能有重要影響。TMS320F2812是一個較低功耗芯片 ,核電壓為1.8V , IO電壓為3.3V。本設計采用TI
40、公司的 TPS767D318電源芯片。該芯片屬于線性降壓型DC/DC變換芯片 ,可以由5V電源同時產生兩種不同的電壓( 3.3V、1.8V 或2.5V ) ,其最 大 輸出電流為1000mA ,可以同時滿足一片DSP芯片和少量外圍電路的供電需要 ,如圖12所示。該芯片自帶電源監控及復位管理功能 ,可以方便地實現電源及復位電路設計。復位電路原理圖如圖13所示。 圖12 電源電路原理圖 圖13 復位電路原理圖3.1.2 時鐘電路設計 TMS320F2812 DSP的時鐘可以有兩種連接方式,即外部振蕩器方式和諧振器方式。如果使用內部振蕩器,則必須在X1/XCL KIN和X2兩個引腳之間連接一個石英晶
41、體。如果采用外部時鐘,可將輸入時鐘信號直接連到X1/CL KIN 引腳上,X2 懸空。本設計采用的是外部有源時鐘方式,直接選擇一個3.3V 供電的30MHz有源晶振實現。系統工作是通過編程選擇5倍頻的PLL功能,可實現F2812的最高工作頻率(150MHz) 。晶振電路如圖14所示: 圖14 晶振電路原理圖3.1.3 DSP與JTAG接口設計 DSP仿真器通過DSP芯片上提供的掃描仿真引腳實現仿真功能,掃描仿真消除了傳統電路仿真存在的電纜過長會引起的信號失真及仿真插頭的可靠性差等問題。采用掃描仿真,使得在線仿真成為可能,給調試帶來極大方便。JTAG接口電路如圖15所示: 圖15 JTAG電路原
42、理圖 3.2 串口通信硬件設計串行通信是指使用一條數據線(另外需要地線,可能還需要控制線),將數據一位一位地依次傳輸,每一位數據占據一個固定的時間長度。其只需要少數幾條線就可以在系統間交換信息,特別使用于計算機與計算機、計算機與外設之間的遠距離通信。使用串口通信時,發送和接收到的每一個字符實際上都是一次一位的傳送的,每一位為1或者為0。如圖16所示: 圖16 串口通信 TMS320F2812芯片內部集成了一個串行通信接口(SCI)模塊,該模塊是一個標準的通用異步接收/發送(UART)通信接口,通信接口有SCITXD(SCI發送輸出引腳)和SCIRXD(SCI接收輸入引腳)兩個外部引腳,引腳的信
43、號電平為TTL類型。而DSP串口的異步串行通信基于RS232C標準,兩者的信號邏輯電平不一致,必須進行信號電平轉換。TMS320F2812接口電路如圖17所示: 圖17 TMS320F2812 接口電路 -以RS232C通信標準進行通信,在保證通信準確性的前提下,通信距離一般以不超過12m為宜,在工業控制現場很受限制。為保證硬件設計的兼容性和易擴展性,能夠應用于不同場合,在DSP硬件電路板端還采用了一個MAX489芯片,添加了一個RS485/RS422通信接口。因為MAX489芯片功耗低,集成度高,+5V供電,具有兩個接收和發送通道。由于TMS320LF2812采用+3.3V供電,所以在MAX
44、489與TMS320LF2812之間必須加電平轉換電路。 實際使用過程中,系統在選擇不同的通信標準時,切換十分方便。如圖6所示,當跳線端子JUMP2與JUMP3的2、3腳短接時,SCITXD接通MAX232芯片的T1I引腳,SCIRXD接通MAX232芯片的R1O引腳,即DSP的通信接口與MAX232芯片相連,此時系統采用RS232C的通信標準。當跳線端子JUMP2與JUMP3的1、2腳短接時,SCITXD接通MAX489芯片的DI引腳,SCIRXD接通MAX489芯片的RO引腳,即DSP的通信接口與MAX489芯片相連,此時系統采用RS485/422的通信標準,DSP端只需添加一個RS232
45、C/RS485轉換器即可進行通信接口電平轉換。3.3 串口通信軟件設計- 在DSP端的軟件程序設計中,通過中斷方式接收發送端發送過來的數據包,并校驗確認后接收有效數據,再將發送端所需的數據打包回送。基于DSP功能模塊化的特點,其串行通信匯編程序的編制主要分三個步驟:(1)初始化設置時鐘源模塊,得到所需的CPUCLK和SYSCLK(因為計算波特率時與之有關); (2)設置SCI模塊,初始化各SCI控制寄存器; (3)編寫串行通信中斷服務子程序,即可完成DSP發送端與接收端之間的串行通信。 SCI模塊采用了一個比較經典的通信類模型,很好的體現了分層結構,應用層調接口函數對緩沖區進行操作,不直接操作
46、硬件。應用層只需 要將需要發送的字節送入緩沖區,驅動程序會自行判斷是否啟動首次發送,啟動首次發送后,應用程序不再需要參與發送流程,驅動會自動完成全部的工作,直到緩沖區為空。當SCI接受到數據后,會觸發接收中斷,由接收中斷負責將收到的數據送入到緩沖區。在串行通信中斷服務子程序的編制過程中,參考圖18所示的DSP串行通信流程圖 接線引腳(RxD) 發送引腳(TxD)發送移位寄存器接收移位寄存器 SCI數據寄存器MCU內部總線SCI狀態寄存器SCI波特率寄存器SCI控制寄存器 圖 18 SCI程序流程圖 而通常使用的有兩種方式:一種是查詢方式,另一種是中斷方式。 1、查詢方式,就是程序不斷去查詢狀態
47、標志位,看看SCI是不是已經做好了數據發送或者接收的準備。 當數據發送時,需要查詢的是位于SCI控制寄存器2(SCICTL2)的第7位TXREADY,發送緩沖寄存器就緒標志。當這個位為1的時候,表明發送數據緩沖寄存器SCITXBUF已經準備好開始接收并發送下一個數據了。當數據寫入SCITXBUF,TXREADY自動會清零,如果TXENA使能了,發送移位寄存器TXSHF就會把SCITXBUF里面的數據發送出去。當數據接收時,需要查詢的是SCI接收狀態寄存器(SCIRXST)中的RXRDY,接收器就緒標志。當從SCIRXBUF寄存器中已經準備好一個字符的數據,等待CPU去讀時,RXRDY位就會置1
48、。當數據被CPU從SCIRXBUF 讀出后,或者系統復位,都可以使RXRDY清0。其流程圖如圖20所示。 2、中斷方式,根據前面所學的三級中斷的知識,必須使能外設自己的中斷、PIE中斷和CPU中斷。SCIA的發送和接收中斷分別位于PIE模塊第9組的第1和第2 位,同時對應于CPU中斷的INT9。前面所述的TXRDY是中斷標志位,當該位置1時,就會產生發送中斷事件,如果各級中斷都已經使能,則會響應SCI的發送中斷函數。當接收中斷標志位RXRDY置1時,就會產生接收中斷標志。如果各級中斷已經使能,則會響應SCI的接收中斷。其流程圖如21所示。 特別注意:外設中斷的標志位一定要手動復位,在這里SCI
49、是個例外,原因如下:當發送器緩沖寄存器SCITXBUF做好準備發送數據時,TXRDY置1,但是當CPU將數據寫入SCITXBUF的時候,TXRDY自動會清0。而當接收器緩沖寄存器已經準備好數據等待CPU去讀取時,RXRDY置1,當CPU將數據從SCIRXBUF讀出時,RXRDY也會自動清0。這是和其他外設中斷不一樣的地方。 圖20 查詢方式流程圖 圖21 中斷方式流程圖1、使用查詢方式發送或者接收數據的程序結構如下:調用主程序:/發送程序If (SciaTx_Ready() = 1) SciaRegs.SCITXBUF =SCI_Senddata; /SCI_senddata 為需要發送的數據
50、/接收程序if(SciaRx_Ready() = 1) Sci_Receivedata = SciaRegs.SCIRXBUF.all; /SCI_Receivedata 用于存放 接收的數據/發送就緒標志狀態查詢函數int SciaTx_Ready(void) unsigned int i; if(SciaRegs.SCICTL2.bit.TXRDY = 1) i = 1;/返回 1 說明發送器已經準備就緒,可以接收新的數據進行發送 Else i = 0; return(i);/接收就緒標志狀態查詢函數int SciaRx_Ready(void) unsigned int i; if(SciaRegs.SCIRXST.bit.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有關小學研究工作計劃(3篇)
- 廣告行業創意合同范本3篇
- 合同的信息化管理3篇
- 新正電工技術服務有限公司招聘筆試真題2024
- 2024年柳州市城中區委社會工作部招聘專職化城市社區工作者考試真題
- 煉鐵過程中的風險管理與安全控制考核試卷
- 燈具行業知識產權保護與侵權防范考核試卷
- 2024年惠州市博羅縣工交實業投資有限公司管理崗位遴選考試真題
- 2024年河南科技職業大學心理健康教育中心招聘教師考試真題
- 2024年白沙黎族自治縣城鄉建設投資有限公司招聘考試真題
- 雙全日培訓課件
- 甲油膠行業報告
- 醫務人員職業暴露與防護講課
- 山東省萊西市2024-2025學年高一語文下學期3月月考試題含解析
- 康復科人員崗位考核制度(3篇)
- 實驗動物生物樣本質量控制規范
- 智能機器人配送行業現狀分析及未來三至五年行業發展報告
- 炎癥性腸病的外科治療
- 復變函數與積分變換課程教案講義
- BEC商務英語初級考試歷年真題及答案6套
- 消除“艾梅乙”醫療歧視-從我做起
評論
0/150
提交評論