內容簡介
《手把手教你學DSP:基於TMS320X281x(第2版)》以TMS320X281xDSP的開發為主綫,采用生動的語言深入淺齣地介紹與DSP開發相關的方方麵麵,包括DSP開發環境的搭建、新工程的建立、CCS3.3的使用、GEL文件與CMD文件的編寫、硬件電路的設計、存儲器的映像、三級中斷係統以及TMS320X281x的各個外設模塊的功能和使用。每部分內容都結閤應用實例,手把手地講解例程的編寫過程,所有代碼都標注有詳細的中文注釋,為讀者快速熟悉並掌握DSP的開發方法和技巧提供瞭方便。相比第1版,《手把手教你學DSP:基於TMS320X281x(第2版)》主要更新瞭DSP仿真器在WIN7環境下的安裝方麵的內容。.
《手把手教你學DSP:基於TMS320X281x(第2版)》共享相關的資料,包括:所有實例的C語言程序代碼、Flash燒寫所需資源以及常用的一些調試工具軟件,可以在HELLODSP論壇下載。
《手把手教你學DSP:基於TMS320X281x(第2版)》可供高等院校電子、通信、計算機、自動控製和電力電子技術等專業的本科和研究生作為“數字信號處理原理與應用”相關課程的教材或參考書,也可以作為數字信號處理器應用開發人員的參考書。
內頁插圖
目錄
第1章如何開始DSP的學習和開發1
1.1DSP基礎知識1
1.1.1什麼是DSP1
1.1.2DSP的特點2
1.1.3DSP與MCU、ARM、FPGA的區彆2
1.1.4學習開發DSP所需要的知識3
1.2如何選擇DSP4
1.2.1DSP廠商介紹4
1.2.2TI公司各個係列DSP的特點5
1.2.3TI DSP具體型號的含義6
1.2.4C2000係列DSP選型指南7
1.3DSP開發所需要準備的工具以及開發平颱的搭建9
1.3.1CCS的版本10
1.3.2CCS3.3的安裝10
1.3.3仿真器的安裝15
1.3.4Setup Code Composer Studio v3.3的配置23
1.3.5基於HDSPSuper2812開發平颱的搭建25
1.4如何學好DSP26
1.4.1眾多工程師的討論和經驗27
1.4.2作者的建議33
1.5C2000助手軟件介紹34
第2章TMS320X2812的結構、資源及性能36
2.1TMS320X2812的片內資源36
2.1.1TMS320X2812的性能38
2.1.2TMS320X2812的片內外設39
2.2TMS320X2812的引腳分布及引腳功能41
2.2.1TMS320X2812的引腳分布41
2.2.2TMS320X2812的引腳功能42
第3章TMS320X281x的硬件設計51
3.1如何保證X2812係統的正常工作51
3.2常用硬件電路的設計52
3.2.1TMS320X2812最小係統設計52
3.2.2電源電路的設計52
3.2.3復位電路及JATG下載口電路的設計52
3.2.4外擴RAM的設計53
3.2.5外擴Flash的設計55
3.2.6PWM電路的設計56
3.2.7串口電路的設計56
3.2.8A/D保護及校正電路的設計57
3.2.9CAN電路的設計58
3.3D/A電路的設計以及波形發生器的實現59
第4章如何構建一個完整的工程61
4.1一個完整的工程由哪些文件構成61
4.1.1頭文件63
4.1.2庫文件67
4.1.3源文件69
4.1.4CMD文件69
4.2通用擴展語言GEL69
4.2.1GEL語法71
4.2.2GEL函數71
4.2.3GEL語句73
4.2.4加載或卸載GEL函數75
4.2.5使用關鍵字在GEL菜單中添加GEL函數76
4.2.6CCS自帶的GEL函數79
4.2.7解讀c2812.gel文件88
4.2.8體驗有趣的GEL函數90
4.3手把手教你創建新的工程92
第5章CCS3.3的常用操作97
5.1瞭解CCS3.3的布局和結構97
5.2編輯代碼時的常用操作98
5.2.1創建新的工程99
5.2.2打開已存在的工程100
5.2.3新建一個文件101
5.2.4嚮工程添加文件102
5.2.5移除工程中的文件103
5.2.6給工程添加庫文件104
5.2.7查找變量105
5.2.8替換變量106
5.2.9查看源碼107
5.3編輯完成後常用的操作107
5.3.1生成可執行代碼107
5.3.2鏈接目標闆上的DSP108
5.3.3將可執行文件下載入DSP109
5.3.4運行、暫停程序110
5.4調試時常用的操作111
5.4.1添加、移除斷點111
5.4.2單步調試112
5.4.3使用Watch Window觀察變量114
5.4.4保存並導齣變量的值116
5.4.5觀察指定存儲空間內的數據118
5.4.6統計代碼的運行時間119
5.4.7在CCS3.3中顯示圖形121
第6章使用C語言操作DSP的寄存器127
6.1寄存器的C語言訪問127
6.1.1瞭解SCI的寄存器127
6.1.2使用位定義的方法定義寄存器129
6.1.3聲明共同體131
6.1.4創建結構體文件132
6.2寄存器文件的空間分配134
第7章存儲器的結構、映像及CMD文件的編寫137
7.1存儲器相關的總綫知識137
7.2F2812的存儲器139
7.2.1F2812存儲器的結構139
7.2.2F2812存儲器映像139
7.2.3F2812的各個存儲器模塊的特點143
7.3CMD文件146
7.3.1COFF格式和段的概念146
7.3.2C語言生成的段147
7.3.3CMD文件的編寫149
7.4外部接口XINTF155
7.4.1XINTF的存儲區域156
7.4.2XINTF的時鍾159
7.5手把手教你訪問外部存儲器159
7.5.1外部RAM空間數據讀/寫160
7.5.2外部Flash空間數據讀/寫163
第8章X281x的時鍾和係統控製172
8.1振蕩器OSC和鎖相環PLL172
8.2X2812中各種時鍾信號的産生173
8.3看門狗電路174
8.4低功耗模式176
8.5時鍾和係統控製模塊的寄存器176
8.6手把手教你寫係統初始化函數181
第9章通用輸入/輸齣多路復用器GPIO184
9.1GPIO多路復用器184
9.1.1GPIO的寄存器184
9.1.2GPIO寄存器位與I/O引腳的對應關係189
9.2手把手教你使用GPIO引腳控製LED燈閃爍193
第10章CPU定時器198
10.1CPU定時器工作原理198
10.2CPU定時器寄存器200
10.3分析CPU定時器的配置函數203
第11章X2812的中斷係統206
11.1什麼是中斷206
11.2X2812的CPU中斷207
11.2.1CPU中斷的概述207
11.2.2CPU中斷嚮量和優先級208
11.2.3CPU中斷的寄存器210
11.2.4可屏蔽中斷的響應過程212
11.3X2812的PIE中斷213
11.3.1PIE中斷概述214
11.3.2PIE中斷寄存器215
11.3.3PIE中斷嚮量錶218
11.4X281x的三級中斷係統分析223
11.5成功實現中斷的必要步驟226
11.6手把手教你使用CPU定時器0的周期中斷來控製LED燈的閃爍228
第12章事件管理器EV233
12.1事件管理器的功能233
12.2通用定時器236
12.2.1通用定時器的時鍾238
12.2.2通用定時器的計數模式239
12.2.3通用定時器的中斷事件242
12.2.4通用定時器的同步243
12.2.5通用定時器的比較操作和PWM波244
12.2.6通用定時器的寄存器247
12.3比較單元與PWM電路252
12.3.1全比較單元253
12.3.2帶有死區控製的PWM電路254
12.3.3比較單元的中斷事件257
12.3.4比較單元的寄存器257
12.4捕獲單元263
12.4.1捕獲單元的結構264
12.4.2捕獲單元的操作264
12.4.3捕獲單元的中斷事件266
12.4.4捕獲單元的寄存器267
12.5正交編碼電路270
12.6事件管理器的中斷及其寄存器273
12.7手把手教你産生PWM波形280
12.7.1輸齣占空比固定的PWM波形280
12.7.2輸齣占空比可變的PWM波形286
第13章模/數轉換器ADC291
13.1X281x內部的ADC模塊291
13.1.1ADC模塊的特點293
13.1.2ADC的時鍾頻率和采樣頻率295
13.2ADC模塊的工作方式297
13.2.1雙序列發生器模式下順序采樣299
13.2.2雙序列發生器模式下並發采樣302
13.2.3級聯模式下的順序采樣304
13.2.4級聯模式下的並發采樣307
13.2.5序列發生器連續自動序列化模式和啓動/停止模式308
13.3ADC模塊的中斷309
13.4ADC模塊的寄存器312
13.5手把手教你寫ADC采樣程序320
13.6ADC模塊采樣校正技術324
13.6.1ADC校正的原理325
13.6.2ADC校正的措施326
13.6.3手把手教你寫ADC校正的軟件算法327
第14章串行通信接口SCI335
14.1SCI模塊的概述335
14.1.1SCI模塊的特點336
14.1.2SCI模塊信號總結337
14.2SCI模塊的工作原理337
14.2.1SCI模塊發送和接收數據的工作原理338
14.2.2SCI通信的數據格式339
14.2.3SCI通信的波特率340
14.2.4SCI模塊的FIFO隊列341
14.2.5SCI模塊的中斷342
14.3SCI多處理器通信模式344
14.3.1地址位多處理器通信模式345
14.3.2空閑綫多處理器通信模式345
14.4SCI模塊的寄存器346
14.5手把手教你寫SCI發送和接收程序356
14.5.1查詢方式實現數據的發送和接收357
14.5.2中斷方式實現數據的發送和接收363
14.5.3采用FIFO來實現數據的發送和接收368
第15章串行外設接口SPI375
15.1SPI模塊的通用知識375
15.2X281x SPI模塊的概述377
15.2.1SPI模塊的特點378
15.2.2SPI的信號總結378
15.3SPI模塊的工作原理379
15.3.1SPI主從工作方式380
15.3.2SPI數據格式382
15.3.3SPI波特率383
15.3.4SPI時鍾配置384
15.3.5SPI的FIFO隊列385
15.3.6SPI的中斷386
15.4SPI模塊的寄存器387
15.5手把手教你寫SPI通信程序395
第16章增強型控製器局域網通信接口eCAN401
16.1CAN總綫的概述401
16.1.1什麼是CAN401
16.1.2CAN是怎樣發展起來的402
16.1.3CAN是怎樣工作的402
16.1.4CAN有哪些特點403
16.1.5什麼是標準格式CAN和擴展格式CAN404
16.2CAN2.0B協議404
16.2.1CAN總綫幀的格式和類型404
16.2.2CAN總綫通信錯誤處理410
16.2.3CAN總綫的位定時要求411
16.2.4CAN總綫的位仲裁412
16.3X281x eCAN模塊的概述413
16.3.1eCAN模塊的結構413
16.3.2eCAN模塊的特點415
16.3.3eCAN模塊的存儲空間415
16.3.4eCAN模塊的郵箱416
16.4X281x eCAN模塊的寄存器419
16.5X281x eCAN模塊的配置434
16.5.1波特率的配置434
16.5.2郵箱初始化的配置435
16.5.3消息的發送操作437
16.5.4消息的接收操作437
16.6eCAN模塊的中斷439
16.7手把手教你實現CAN通信442
16.7.1手把手教你實現CAN消息的發送442
16.7.2手把手教你實現CAN消息的接收(中斷方式)447
第17章基於HDSPSuper2812的開發實例451
17.1談談通常項目的開發過程451
17.2設計一個有趣的時鍾日期程序452
17.2.1硬件設計453
17.2.2軟件設計(含I2C接口程序)453
17.3設計一個SPWM程序464
17.3.1原理分析464
17.3.2軟件設計466
17.4代碼燒寫入Flash固化470
參考文獻473
前言/序言
手把手教你學DSP-基於TMS320X281x(第2版)自2011年4月齣版第1版以來,轉眼過瞭4年時間,今天迎來瞭改版,心裏很是高興,首先非常感謝北京航空航天大學齣版社給瞭我這次機會,能讓我有機會把所學的知識通過書本的形式與大傢分享。
《手把手教你學DSP:基於TMS320X281x(第2版)》齣版後,我陸續錄製瞭與本書配套的教學視頻,4年時間裏,在優酷上的播放量已超過50萬。看到本書能夠受到大傢的喜愛,我感到非常欣慰,同時也感到慚愧,因為自己水平有限,難免在書中齣現一些小的錯誤,在讀者的指正下,在第2版中做瞭更正。為瞭幫助讀者能夠更好地使用本書,能夠更快地掌握TMS320F2812的相關知識,我開發瞭“C2000助手”軟件。讀者使用此軟件,可以方便地查詢到TMS320F2812的各個寄存器,不用再為查找寄存器而前後翻書。與本書相關的資源也都可以在此軟件中找到。
《手把手教你學DSP:基於TMS320X281x(第2版)》的再版需要感謝編輯的辛勤付齣,感謝東南大學博士生導師林明耀教授的悉心指導,需要感謝我的兒子顧徐晨小朋友、我的妻子徐丹以及所有關愛我的親人和朋友。最後,感謝所有關心和支持南京傅立葉電子技術有限公司發展的用戶、朋友和閤作者們,正是有瞭你們的幫助,纔有瞭我的成長。
顧衛鋼
2015年5月於南京
理論之基,實踐之橋:解鎖數字信號處理的奧秘 數字信號處理(DSP)作為一門深刻影響現代科技發展的核心學科,其應用已滲透到通信、音頻、圖像、控製、醫療等各個領域。從智能手機中的語音識彆,到高清電視的畫質增強,再到無人駕駛汽車的精準導航,DSP技術的身影無處不在。掌握DSP,意味著掌握瞭理解和塑造數字世界的力量。 本書旨在為廣大讀者,特彆是對DSP技術充滿熱情卻缺乏係統入門途徑的學習者,搭建一座從理論到實踐的堅實橋梁。我們將帶領您深入探索DSP的精髓,從最基礎的概念入手,循序漸進地構建完整的知識體係,最終能夠獨立地分析和解決實際的DSP問題。 第一部分:DSP理論基石——構建堅實的數學與算法框架 DSP的強大能力源於其深厚的數學理論基礎。在本部分,我們將從最核心的數學工具開始,為您的DSP學習之旅奠定堅實的地基。 信號與係統——萬物皆可數,萬象皆可理: 我們將首先介紹離散時間信號和係統的基本概念,包括信號的分類(能量信號、功率信號、周期信號、非周期信號等),以及係統的性質(綫性、時不變、因果性、穩定性)。理解這些基本屬性,是分析和處理信號的前提。您將學會如何用數學語言描述信號的演變,以及係統如何對信號進行變換。 傅裏葉變換——時間域到頻率域的魔術師: 傅裏葉變換是DSP中最強大、最核心的工具之一。我們將詳細講解離散時間傅裏葉變換(DTFT)、離散傅裏葉級數(DFS)和離散傅裏葉變換(DFT)的概念及其相互關係。您將理解信號在頻域中的錶現形式,學會如何通過頻率分析來理解信號的特性,例如識彆信號中的噪聲成分,提取特定頻率的有用信息。 Z變換——係統分析的利器: Z變換是分析離散時間綫性時不變(LTI)係統的有力工具,它能夠將時域的差分方程轉化為域的代數方程,極大地簡化瞭係統分析過程。我們將深入講解Z變換的定義、性質,以及如何利用它來分析係統的穩定性、頻率響應等關鍵特性。通過Z變換,您將能夠更直觀地理解係統的工作原理。 捲積——係統響應的本質: 捲積是描述LTI係統如何響應輸入信號的核心運算。我們將詳細闡述捲積的定義、計算方法,並探討其在係統分析和濾波設計中的重要作用。通過理解捲積,您將能夠預測係統對任意輸入信號的輸齣,這是設計各種信號處理算法的基礎。 采樣定理——模擬與數字世界的橋梁: 模擬信號到數字信號的轉換是DSP的起點。我們將詳細闡述采樣定理,即奈奎斯特-香農采樣定理,解釋采樣率如何決定信號能否被無失真地恢復。您將理解過采樣和欠采樣的危害,以及抗混疊濾波的重要性,從而掌握正確進行模數轉換的關鍵技術。 有限脈衝響應(FIR)濾波器——精確控製頻率的利器: FIR濾波器是DSP中應用最廣泛的濾波器類型之一。我們將深入講解FIR濾波器的基本原理、設計方法(如窗函數法、頻率采樣法、最優設計法)以及在實際中的應用。您將學會如何設計各種類型的FIR濾波器,如低通、高通、帶通和帶阻濾波器,以滿足特定的信號處理需求。 無限脈衝響應(IIR)濾波器——高效實現頻率響應的秘訣: IIR濾波器以其較低的階數即可實現陡峭的頻率選擇性而著稱。我們將詳細介紹IIR濾波器的原理、設計方法(如雙綫性變換法、脈衝不變法)以及與FIR濾波器的對比分析。您將理解IIR濾波器在追求性能的同時,也需要注意其穩定性問題,並學會如何選擇最適閤的濾波器類型。 第二部分:DSP硬件實現——TMS320X281x的實踐之路 理論的深度最終需要通過實踐來體現。本部分將以德州儀器(TI)強大的TMS320X281x係列DSP芯片為載體,將抽象的DSP理論轉化為具體的硬件實現,讓您親手體驗DSP的強大力量。 TMS320X281x架構解析——硬件的奧秘: 我們將深入剖析TMS320X281x係列DSP的微處理器架構,包括其CPU核心、存儲器組織、外圍設備接口(如GPIO、ADC、DAC、SPI、SCI、I2C、PWM等)以及高效的指令集。您將瞭解芯片內部的各個組成部分是如何協同工作的,為後續的程序開發打下堅實的基礎。 開發環境搭建與基礎操作——動手實踐的起點: 我們將指導您完成TMS320X281x開發環境的搭建,包括CCS(Code Composer Studio)集成開發環境的安裝與配置。您將學會如何創建新項目、編寫C/C++代碼、進行交叉編譯、下載程序到目標闆,並掌握基本的調試技巧(如設置斷點、單步執行、查看變量)。 ADC與DAC的應用——模擬世界的數字化與復原: ADC(模數轉換器)和DAC(數模轉換器)是DSP係統與真實世界交互的關鍵。我們將詳細講解TMS320X281x的ADC和DAC的工作原理、配置方法以及實際應用。您將學會如何采集模擬傳感器數據,如何將處理後的數字信號輸齣為模擬電壓,從而實現對物理世界的控製和監測。 GPIO控製——萬能的數字開關: GPIO(通用輸入/輸齣)引腳是DSP與外部器件進行數字信號交互的接口。我們將講解GPIO的配置、讀寫操作,以及如何利用GPIO實現LED驅動、按鍵檢測、簡單邏輯控製等功能。 定時器與中斷——精細的時間控製與事件響應: 定時器是實現精確時間測量、周期性任務調度和PWM信號生成的重要模塊。中斷機製則允許DSP在特定事件發生時立即響應,提高係統的實時性和效率。我們將詳細講解TMS320X281x的定時器工作模式、中斷嚮量錶、中斷服務程序的編寫與配置,讓您掌握如何實現精確的時序控製和高效的事件驅動。 通信接口的應用——互聯互通的樞紐: TMS320X281x提供瞭多種通信接口,如SPI、SCI、I2C等,用於與其他芯片或設備進行數據交換。我們將講解這些通信協議的基本原理、TMS320X281x在這些接口上的具體實現和配置方法,幫助您實現DSP與其他微控製器、傳感器、通信模塊的無縫連接。 PWM(脈衝寬度調製)的應用——精細的模擬控製: PWM技術是實現對模擬器件(如電機、LED亮度)進行精確控製的關鍵。我們將深入講解PWM的生成原理、TMS320X281x的PWM模塊配置,以及如何通過改變脈衝寬度來控製輸齣電壓或電流的大小,例如用於電機速度控製、LED調光等。 DSP算法的硬件實現——將理論付諸實踐: 在掌握瞭硬件基礎和開發流程後,我們將結閤前麵理論部分講解的DSP算法,指導您如何在TMS320X281x平颱上實現這些算法。例如,您將學習如何高效地實現FIR和IIR濾波器、FFT(快速傅裏葉變換)等核心算法,並理解DSP芯片在執行這些算法時所具備的特殊指令和優化技巧。 第三部分:進階應用與實戰案例——拓展您的DSP視野 在紮實的理論基礎和豐富的硬件實踐經驗之上,我們將帶領您探索更廣泛的DSP應用領域,並通過具體的實戰案例來鞏固和提升您的技能。 FFT(快速傅裏葉變換)——頻率分析的高效利器: FFT是DFT的高效計算算法,在頻譜分析、信號識彆等領域至關重要。我們將講解FFT的原理、算法流程,以及如何在TMS320X281x上高效實現FFT,例如分析音頻信號的頻譜特徵。 數字濾波器設計與實現——滿足多樣化的信號處理需求: 除瞭基本的FIR和IIR濾波器,我們將介紹更高級的濾波器設計技術,如切比雪夫濾波器、巴特沃斯濾波器等,並探討不同濾波器的優缺點及其適用場景。您將學會如何根據具體的應用需求,選擇和設計最優的數字濾波器。 音頻信號處理——聲波的數字化與重塑: 從簡單的音頻采集與播放,到復雜的音頻濾波、降噪、迴聲消除,DSP在音頻處理領域扮演著舉足輕重的角色。我們將通過具體的案例,讓您瞭解如何利用DSP技術處理音頻信號,例如實現一個簡單的音頻均衡器。 圖像處理基礎——像素的魔術: 雖然DSP芯片在通用性上不如專用圖像處理器,但其強大的計算能力也足以應對許多基本的圖像處理任務,如圖像濾波、邊緣檢測、灰度化等。我們將介紹如何利用DSP芯片實現這些基本的圖像處理操作。 控製係統中的DSP應用——穩定與高效的閉環: DSP在現代控製係統中發揮著核心作用,例如在電機控製、伺服係統、機器人等領域。我們將探討DSP在數字PID控製、狀態空間控製等方麵的應用,讓您理解如何利用DSP實現精確、穩定的閉環控製。 案例分析與項目實踐——綜閤能力的提升: 我們將提供一係列精心設計的實戰案例,涵蓋上述各個方麵,並引導您一步一步完成從需求分析、算法設計到硬件實現的全過程。這些案例將幫助您將所學知識融會貫通,並鍛煉您獨立解決實際DSP問題的能力。 本書不僅僅是一本技術手冊,更是一位經驗豐富的嚮導,將帶領您踏上一段充滿發現與創造的DSP學習旅程。無論您是電子工程專業的學生,還是在職的工程師,亦或是對數字信號處理充滿好奇的愛好者,本書都將成為您通往DSP世界的理想起點。通過理論的學習和實踐的探索,您將深刻理解數字信號處理的強大魅力,並能夠將其應用於您所感興趣的任何領域,創造屬於自己的數字奇跡。