本書主要介紹微芯公司dsPIC30F系列通用數(shù)字信號(hào)控制器的基本原理和工程應(yīng)用方面的知識(shí)。書中除介紹通用數(shù)字信號(hào)控制器的結(jié)構(gòu)、工作原理和基本使用方法外,還介紹了大量應(yīng)用例程及編程有關(guān)的知識(shí),幾乎涉及dsPIC30F系列數(shù)字信號(hào)控制器的幾乎所有功能模塊的編程應(yīng)用,給出了典型應(yīng)用實(shí)例的電路原理圖和匯編源程序、C語(yǔ)言源程序清單,并將這些程序放在書中所附光盤中。本書是一本很好的掌握數(shù)字信號(hào)控制器應(yīng)用設(shè)計(jì)和工程開發(fā)編程入門與提高的參考書,適用于開發(fā)者和初學(xué)者;也可作為大學(xué)本科學(xué)生或研究生數(shù)字信號(hào)控制器原理及應(yīng)用課程或嵌入式系統(tǒng)課程的教材使用。
第1章 概述
第2章 CPU結(jié)構(gòu)
2.1 概述6
2.2 編程模型7
2.3 軟件堆棧指針/結(jié)構(gòu)指針11
2.3.1 軟件堆棧指針示例11
2.3.2 W14軟件堆棧指針13
2.3.3 堆棧指針上溢13
2.3.4 堆棧指針下溢13
2.4 除法支持13
2.5 DSP引擎14
2.5.1 乘法器15
2.5.2 數(shù)據(jù)累加器加法器/減法器16
2.5.3 桶形移位寄存器20
2.6 CPU寄存器描述20
2.6.1 CPU狀態(tài)寄存器SR20
2.6.2 內(nèi)核控制寄存器CORCON23
2.6.3 其他CPU控制寄存器24
2.7 指令流水線類型28
2.8 地址寄存器相依性29
第3章 存儲(chǔ)器結(jié)構(gòu)
3.1 程序地址空間32
3.1.1 程序計(jì)數(shù)器32
3.1.2 用表讀表寫指令訪問放在程序空間中的數(shù)據(jù)34
3.1.3 用程序空間的可視性訪問程序存儲(chǔ)器中的數(shù)據(jù)36
3.1.4 寫程序存儲(chǔ)器38
3.2 數(shù)據(jù)地址空間38
3.2.1 數(shù)據(jù)空間存儲(chǔ)器映射39
3.2.2 數(shù)據(jù)空間40
3.2.3 數(shù)據(jù)空間寬度41
3.2.4 數(shù)據(jù)對(duì)齊41
3.2.5 Near數(shù)據(jù)空間42
3.2.6 軟件堆棧42
第4章 尋址方式
4.1 地址產(chǎn)生單元44
4.2 指令尋址模式45
4.2.1 文件寄存器指令45
4.2.2 MCU指令45
4.2.3 移動(dòng)和累加器指令46
4.2.4 MAC指令46
4.2.5 其他指令47
4.3 模尋址47
4.3.1 起始和結(jié)束地址47
4.3.2 W地址寄存器的選擇48
4.3.3 模尋址的應(yīng)用48
4.4 位反轉(zhuǎn)尋址49
4.5 尋址寄存器51
第5章 MPLAB IDE7.xx及MPLABC30安裝及使用簡(jiǎn)介
5.1 MPLAB IDE 7.xx的安裝56
5.2 MPLAB C30的安裝60
5.3 MPLAB IDE及MPLAB C18的使用簡(jiǎn)介64
第6章 dsPIC30F6014快速入門
6.1 生成源程序文件77
6.1.1 在MPLAB IDE軟件環(huán)境下編輯源程序文件77
6.1.2 在VC下編輯源程序文件80
6.2 生成新項(xiàng)目80
6.2.1 利用MPLAB IDE向?qū)?chuàng)建新項(xiàng)目81
6.2.2 直接新建項(xiàng)目85
6.3 編譯項(xiàng)目87
6.4 修改項(xiàng)目編譯的語(yǔ)法錯(cuò)誤90
6.5 調(diào)試程序92
6.5.1 調(diào)試程序方式92
6.5.2 設(shè)置斷點(diǎn)93
6.5.3 單步運(yùn)行95
6.6 固化程序95
6.7 編寫程序中應(yīng)注意的問題97
第7章 dsPIC30F601x實(shí)驗(yàn)開發(fā)系統(tǒng)介紹
7.1 dsPIC30F601x實(shí)驗(yàn)開發(fā)系統(tǒng)介紹99
7.1.1 結(jié)構(gòu)簡(jiǎn)介99
7.1.2 主要功能及結(jié)構(gòu)特點(diǎn)99
7.1.3 可在實(shí)驗(yàn)?zāi)繕?biāo)板上做的實(shí)驗(yàn)100
7.2 dsPIC30F601x實(shí)驗(yàn)?zāi)繕?biāo)板各模塊功能介紹100
7.2.1 實(shí)驗(yàn)?zāi)繕?biāo)板概述100
7.2.2 人機(jī)交換接口100
7.2.3 串行通信接口(SCI)101
7.2.4 控制器區(qū)域網(wǎng)絡(luò)(CAN)101
7.2.5 串行外設(shè)接口(SPI)101
7.2.6 用I2C總線實(shí)現(xiàn)的EEPROM和日歷時(shí)鐘電路101
7.2.7 實(shí)驗(yàn)?zāi)繕?biāo)板的硬件設(shè)置102
7.3 dsPIC30F601x使用中的幾個(gè)建議106
7.3.1 MCLR主清0和編程信號(hào)輸入引腳106
7.3.2 上電/手動(dòng)復(fù)位電路106
7.3.3 關(guān)于運(yùn)行頻率106
7.3.4 關(guān)于EMU引腳107
7.3.5 調(diào)試時(shí)的內(nèi)存情況107
7.3.6 MPLAB IDE調(diào)試時(shí)的幾個(gè)問題107
第8章 系統(tǒng)設(shè)置
8.1 概述108
8.2 振蕩器系統(tǒng)概述109
8.3 振蕩器配置111
8.3.1 初始時(shí)鐘源的選擇111
8.3.2 振蕩器控制寄存器111
8.3.3 主振蕩器112
8.3.4 晶體振蕩器/陶瓷諧振器113
8.3.5 C1、C2和RS值的確定115
8.3.6 振蕩器起振定時(shí)器116
8.3.7 外部RC振蕩器116
8.3.8 鎖相環(huán)117
8.3.9 LP振蕩器117
8.3.10 快速RC振蕩器118
8.3.11 低功耗的RC振蕩器118
8.3.12 故障保護(hù)時(shí)鐘監(jiān)視器119
8.3.13 可編程振蕩器后分頻器119
8.3.14 時(shí)鐘切換原理120
8.4 復(fù)位122
8.4.1 上電復(fù)位123
8.4.2 可編程掉電復(fù)位125
8.5 看門狗定時(shí)器127
8.5.1 看門狗定時(shí)器操作127
8.5.2 使用和禁止WDT127
8.5.3 WDT定時(shí)器周期選擇128
8.5.4 WDT預(yù)分頻器128
8.5.5 復(fù)位看門狗定時(shí)器128
8.5.6 WDT在休眠或空閑模式的工作129
8.6 電壓過低檢測(cè)129
8.6.1 LVD初始化129
8.6.2 LVD運(yùn)行時(shí)的電流消耗130
8.6.3 在休眠和空閑模式下工作130
8.7 低功耗模式130
8.7.1 休眠模式130
8.7.2 空閑模式131
8.8 外設(shè)模塊禁止寄存器132
8.9 在線調(diào)試器132
8.10 寄存器133
8.10.1 振蕩器控制寄存器133
8.10.2 復(fù)位控制寄存器135
8.10.3 器件配置寄存器137
第9章 I/O端口
9.1 并行I/O端口143
9.1.1 I/O端口控制寄存器143
9.1.2 外設(shè)復(fù)用144
9.2 模擬端口引腳配置149
9.3 輸入電平變化中斷模式149
9.3.1 輸入電平變化中斷控制寄存器150
9.3.2 輸入電平變化中斷配置和操作150
9.3.3 休眠和空閑模式下的輸入電平變化中斷工作150
9.3.4 輸入電平變化中斷控制寄存器150
9.4 I/O端口編程152
第10章 中斷
10.1 概述163
10.2 中斷優(yōu)先級(jí)165
10.3 復(fù)位順序165
10.4 陷阱166
10.4.1 陷阱源166
10.4.2 硬件及軟件陷阱167
10.5 中斷序列167
10.6 備用中斷向量表168
10.7 快速上下文保存168
10.8 外部中斷請(qǐng)求169
10.9 從休眠和空閑狀態(tài)喚醒169
10.10 中斷處理時(shí)序169
10.10.1 單周期指令的中斷延遲169
10.10.2 雙周期指令的中斷延遲170
10.10.3 從中斷返回171
10.10.4 中斷延遲的特殊條件171
10.11 中斷寄存器171
10.12 中斷編程198
第11章 程序存儲(chǔ)器
11.1 在線串行編程199
11.2 運(yùn)行時(shí)自編程199
11.3 表讀表寫指令199
11.4 運(yùn)行時(shí)自編程200
11.5 控制寄存器200
11.6 自編程操作201
11.6.1 Flash程序存儲(chǔ)器的編程規(guī)則201
11.6.2 擦除程序存儲(chǔ)器一行202
11.6.3 裝載寫鎖存器202
11.6.4 啟動(dòng)編程序列203
11.7 控制寄存器204
第12章 非易失數(shù)據(jù)存儲(chǔ)器
12.1 讀非易失數(shù)據(jù)存儲(chǔ)器206
12.2 擦除非易失數(shù)據(jù)存儲(chǔ)器207
12.2.1 擦除非易失數(shù)據(jù)存儲(chǔ)器的一個(gè)區(qū)域207
12.2.2 擦除非易失數(shù)據(jù)存儲(chǔ)器的一個(gè)字207
12.3 寫非易失數(shù)據(jù)存儲(chǔ)器208
12.3.1 寫非易失數(shù)據(jù)存儲(chǔ)器一個(gè)字209
12.3.2 寫非易失數(shù)據(jù)存儲(chǔ)器的一個(gè)區(qū)域209
12.4 寫校驗(yàn)211
12.5 誤寫操作保護(hù)211
12.6 非易失數(shù)據(jù)存儲(chǔ)器編程211
第13章 定時(shí)器1模塊
13.1 Timer1模塊簡(jiǎn)介214
13.2 門控定時(shí)器215
13.3 定時(shí)器預(yù)分頻器215
13.4 休眠模式下的定時(shí)器操作216
13.5 定時(shí)器中斷方式216
13.6 實(shí)時(shí)時(shí)鐘217
13.6.1 RTC振蕩器217
13.6.2 實(shí)時(shí)時(shí)鐘中斷219
13.7 秒表顯示程序219
第14章 定時(shí)器2/3和4/5模塊
14.1 Timer2/3模塊226
14.2 定時(shí)器門控方式229
14.3 ADC事件觸發(fā)方式229
14.4 定時(shí)器預(yù)分頻器229
14.5 Timer3定時(shí)器比較結(jié)束時(shí)啟動(dòng)A/D轉(zhuǎn)換例程232
14.6 定時(shí)器Timer4/5模塊236
第15章 輸入捕捉模塊
15.1 概述237
15.2 簡(jiǎn)單的捕捉事件模式238
15.2.1 預(yù)分頻器捕捉事件238
15.2.2 捕捉緩沖操作238
15.2.3 Timer2和Timer3的選擇模式238
15.2.4 邊沿檢測(cè)模式239
15.3 在休眠和空閑狀態(tài)下的輸入捕捉操作239
15.3.1 休眠模式下的輸入捕捉操作239
15.3.2 空閑模式下的輸入捕捉操作239
15.4 輸入捕捉中斷239
15.5 輸入捕捉編程241
第16章 輸出比較模塊
16.1 輸出比較模塊245
16.2 Timer2和Timer3選擇模式246
16.3 單輸出比較匹配模式246
16.3.1 單比較模式驅(qū)動(dòng)為高電平246
16.3.2 單比較模式輸出驅(qū)動(dòng)為低電平247
16.3.3 單比較模式電平交替翻轉(zhuǎn)輸出248
16.4 雙輸出比較匹配模式249
16.4.1 單脈沖輸出模式249
16.4.2 連續(xù)脈沖輸出模式250
16.5 簡(jiǎn)單PWM 模式252
16.5.1 帶故障保護(hù)輸入的PWM模式252
16.5.2 PWM周期252
16.5.3 PWM占空比253
16.6 在CPU休眠模式下的輸出比較操作254
16.7 在CPU空閑模式下輸出比較操作254
16.8 輸出比較中斷254
16.9 輸出比較編程256
第17章 SPI模塊
17.1 概述264
17.2 操作功能描述265
17.3 字和字節(jié)通信265
17.4 關(guān)閉SDOx(SPI僅啟動(dòng)接收功能)265
17.5 主控模式和從動(dòng)模式266
17.5.1 主控模式266
17.5.2 從動(dòng)模式268
17.6 SPI錯(cuò)誤的處理272
17.7 串行通信的幀支持272
17.7.1 在SPI 幀模式下的SCKx273
17.7.2 在SPI 幀模式下的SPIx 緩沖寄存器273
17.7.3 SPI主控模式和幀主控模式273
17.7.4 SPI 主控模式和幀從動(dòng)模式274
17.7.5 SPI從動(dòng)模式和幀主控模式275
17.7.6 SPI從動(dòng)模式和幀從動(dòng)模式276
17.8 SPI主控模式時(shí)鐘頻率276
17.9 CPU休眠模式下SPI操作277
17.10 CPU空閑模式下SPI操作277
17.11 SPI狀態(tài)和控制寄存器277
17.12 SPI編程281
第18章 I2C模塊
18.1 概述287
18.2 操作功能描述287
18.2.1 I2C操作模式287
18.2.2 I2C模式下的引腳設(shè)置287
18.2.3 I2C寄存器288
18.3 I2C模塊地址289
18.4 I2C的7位從動(dòng)模式操作289
18.4.1 從動(dòng)發(fā)送289
18.4.2 從動(dòng)接收290
18.5 I2C的10位地址從動(dòng)模式操作291
18.6 自動(dòng)時(shí)鐘延長(zhǎng)292
18.7 軟件控制時(shí)鐘延長(zhǎng)293
18.8 中斷293
18.9 波形邊沿斜率控制293
18.10 IPMI支持294
18.11 通用地址尋址294
18.12 I2C主控方式支持294
18.13 I2C主控模式操作294
18.13.1 產(chǎn)生啟動(dòng)總線事件295
18.13.2 I2C主控方式發(fā)送296
18.13.3 I2C主動(dòng)方式接收297
18.13.4 應(yīng)答產(chǎn)生298
18.13.5 產(chǎn)生停止總線事件299
18.13.6 重復(fù)啟動(dòng)產(chǎn)生300
18.13.7 波特率發(fā)生器300
18.13.8 時(shí)鐘仲裁301
18.13.9 多主機(jī)通信、總線沖突和總線仲裁301
18.14 休眠和空閑模式下的I2C總線操作301
18.15 I2C模塊編程306
18.15.1 I2C模塊擴(kuò)展片外的串行EEPROM編程306
18.15.2 I2C模塊擴(kuò)展片外的日歷時(shí)鐘模塊309
第19章 通用異步收發(fā)器模塊
19.1 UART模塊特性319
19.2 UART設(shè)置319
19.2.1 UART使能320
19.2.2 關(guān)閉UART320
19.2.3 設(shè)置數(shù)據(jù)、奇偶和停止位320
19.3 發(fā)送數(shù)據(jù)320
19.3.1 8位數(shù)據(jù)發(fā)送方式321
19.3.2 9位數(shù)據(jù)發(fā)送方式322
19.3.3 發(fā)送緩沖器(UxTXB)322
19.3.4 發(fā)送中斷322
19.3.5 設(shè)置UART發(fā)送323
19.3.6 發(fā)送中止323
19.4 接收數(shù)據(jù)324
19.4.1 8位或9位數(shù)據(jù)接收方式324
19.4.2 接收緩沖器(UxRXB)325
19.4.3 接收中斷325
19.4.4 設(shè)置UART接收325
19.5 處理接收錯(cuò)誤326
19.6 地址檢測(cè)模式327
19.7 自檢模式327
19.8 波特率發(fā)生器328
19.9 自動(dòng)波特率328
19.10 休眠和空閑模式下的UART操作329
19.10.1 休眠模式下的UART操作329
19.10.2 空閑模式下的UART操作329
19.11 USART編程332
第20章 CAN模塊
20.1 概述341
20.2 幀類型343
20.3 CAN操作模式349
20.3.1 配置模式349
20.3.2 禁止模式349
20.3.3 正常工作模式350
20.3.4 監(jiān)聽模式350
20.3.5 監(jiān)聽所有報(bào)文模式350
20.3.6 自檢模式350
20.3.7 錯(cuò)誤識(shí)別模式350
20.4 報(bào)文接收351
20.4.1 接收緩沖器351
20.4.2 報(bào)文接收過濾器351
20.4.3 報(bào)文接收屏蔽器352
20.4.4 接收溢出354
20.4.5 接收錯(cuò)誤354
20.4.6 接收中斷354
20.5 報(bào)文發(fā)送355
20.5.1 發(fā)送緩沖器355
20.5.2 發(fā)送報(bào)文優(yōu)先級(jí)355
20.5.3 發(fā)送序列356
20.5.4 發(fā)送報(bào)文中止356
20.5.5 發(fā)送錯(cuò)誤358
20.5.6 發(fā)送中斷358
20.6 波特率設(shè)置359
20.6.1 位時(shí)序359
20.6.2 預(yù)分頻設(shè)置359
20.6.3 傳輸時(shí)間段360
20.6.4 相位緩沖段360
20.6.5 采樣點(diǎn)361
20.6.6 同步時(shí)間段361
20.7 CAN模塊在低功耗模式下工作361
20.7.1 CAN模塊在休眠模式下工作361
20.7.2 CAN模塊在空閑模式下的工作362
20.8 CAN模塊的寄存器362
20.8.1 CAN控制狀態(tài)寄存器362
20.8.2 CAN發(fā)送緩沖器364
20.8.3 CAN接收緩沖器367
20.8.4 報(bào)文接收過濾器370
20.8.5 接收過濾器屏蔽寄存器372
20.8.6 CAN波特率寄存器373
20.8.7 CAN模塊錯(cuò)誤計(jì)數(shù)寄存器375
20.8.8 CAN中斷寄存器375
20.9 CAN總線編程378
第21章 12位模/數(shù)轉(zhuǎn)換器
21.1 概述383
21.2 A/D轉(zhuǎn)換結(jié)果緩沖寄存器384
21.3 轉(zhuǎn)換過程384
21.4 A/D模塊配置386
21.4.1 參考電壓源的選擇386
21.4.2 A/D轉(zhuǎn)換時(shí)鐘的選擇386
21.4.3 模擬輸入通道的選擇387
21.5 采樣/轉(zhuǎn)換的控制388
21.5.1 模塊使能388
21.5.2 采樣開始388
21.5.3 停止采樣并開始轉(zhuǎn)換389
21.5.4 采樣/轉(zhuǎn)換的編程393
21.6 轉(zhuǎn)換結(jié)果寫入緩沖器394
21.7 A/D采樣要求395
21.8 輸出格式395
21.9 連接注意事項(xiàng)396
21.10 復(fù)位的影響396
21.11 配置模擬引腳396
21.12 轉(zhuǎn)換異常中斷397
21.13 A/D初始化及轉(zhuǎn)換過程示例397
21.13.1 A/D初始化397
21.13.2 轉(zhuǎn)換過程示例398
21.14 在休眠和空閑模式下的A/D操作400
21.15 控制寄存器400
21.16 A/D編程406
第22章 數(shù)據(jù)傳輸接口模塊
22.1 概述410
22.2 DCI引腳410
22.3 編解碼器接口411
22.4 DCI模塊操作413
22.5 使用DCI緩沖器、狀態(tài)位及中斷發(fā)送和接收數(shù)據(jù)421
22.5.1 DCI 起動(dòng)和數(shù)據(jù)緩沖422
22.5.2 DCI禁止423
22.6 多通道工作424
22.7 ACLink工作425
22.8 I2S工作427
22.9 DCI模塊低功耗模式430
22.10 DCI寄存器430
第23章 匯編指令集與C語(yǔ)言庫(kù)函數(shù)概述
23.1 匯編指令概述436
23.2 DSP函數(shù)庫(kù)443
23.2.1 DSP函數(shù)庫(kù)的使用444
23.2.2 矢量(數(shù)組)函數(shù)445
23.2.3 窗函數(shù)447
23.2.4 矩陣函數(shù)447
23.2.5 濾波函數(shù)448
23.2.6 變換函數(shù)450
23.3 dsPIC外設(shè)函數(shù)庫(kù)451
23.3.1 dsPIC 外設(shè)函數(shù)庫(kù)的使用451
23.3.2 外部LCD函數(shù)451
23.3.3 CAN函數(shù)452
23.3.4 ADC12函數(shù)453
23.3.5 ADC10函數(shù)453
23.3.6 定時(shí)器函數(shù)454
23.3.7 復(fù)位/控制函數(shù)455
23.3.8 I/O端口函數(shù)455
23.3.9 輸入捕捉函數(shù)456
23.3.10 輸出比較函數(shù)456
23.3.11 UART函數(shù)457
23.3.12 DCI函數(shù)458
23.3.13 SPI函數(shù)458
23.3.14 QEI函數(shù)459
23.3.15 PWM函數(shù)459
23.3.16 I2C函數(shù)460
23.4 標(biāo)準(zhǔn)C函數(shù)庫(kù)和數(shù)學(xué)函數(shù)461
23.4.1 使用標(biāo)準(zhǔn)C函數(shù)庫(kù)461
23.4.2
診斷461
23.4.3 字符處理462
23.4.4 錯(cuò)誤462
23.4.5 浮點(diǎn)特征463
23.4.6 實(shí)現(xiàn)定義的限制464
23.4.7 語(yǔ)言環(huán)境465
23.4.8 與語(yǔ)言環(huán)境無(wú)關(guān)的跳轉(zhuǎn)465
23.4.9 信號(hào)處理466
23.4.10 可變參數(shù)列表466
23.4.11 公共定義467
23.4.12 輸入和輸出467
23.4.13 實(shí)用函數(shù)470
23.4.14 字符串函數(shù)471
23.4.15 日期和時(shí)間函數(shù)472
23.4.16 數(shù)學(xué)函數(shù)473
23.4.17 PIC30函數(shù)庫(kù)474
23.5 MPLAB C30內(nèi)建函數(shù)476
23.5.1 內(nèi)建函數(shù)列表476
23.5.2 內(nèi)建函數(shù)錯(cuò)誤消息477
參考文獻(xiàn)478