You are on page 1of 39

DSP 處理器 理論 與 實作 筆記

電機
TU
0621307
翁祥瑀
Clh 、 1 LED 驅動

kli DSP 架構

RDSP
3.3 V LED

wr.TN
⼀ 此

ā 毖點 䯁

3 3V
.
→ 提供 給 DSP Ilo 使⽤

1 8V
.
→ 提供 給 DSP 核⼼ 處理器 使⽤

DSP 使⽤ T T MS 320 F 2833 5

1 -2 i Include Options

(l) 對欲選取的資料夾按右鍵 選取Properties 選取Build

(2) 選取C2000 Compiler 選取Include Opetions

(3) 將資料匯入,其路徑如下:

C:\ti\controlSUITE\device_support\f2833x\v140\DSP2833x_common\include
{ C:\ti\controlSUITE\device_support\f2833x\v140\DSP2833x_headers\include

Pl
1 3 i LED 閃 火樂 ( 利⽤ Delay.MS 實現 )
-

開始

初始 時脈
IN

設定

LED ON

Delay 0.5s

LED OFF

Delay 0.5s

Delay 0.5秒程式:
int DelayLoop=0;
for( DelayLoop=0 ; DelayLoop<500 ; DelayLoop++ )
DELAY_US(1000);
Delay 0 m秒 ( 即 Delaylnn )
1 00 秒

DELAY.US 執⾏ 5 0 0 次 => Delayin 5 00 秒 ( 即 Delayas 秒 )

PZ
時脈、I/O初始化及設定

⽅法 1
|
⽅法 2 1

⽅法 3
|
LED閃爍0.5秒程式
P3
1 -4 i LED 閃 以樂 ( 利⽤ Timer 實現 )

(主 程式 ) ( 中斷 程式 )

開始 中斷開始
,

0寺 脈
初始 IIO I/O Toggle
中斷
觸發 歭 問
設定 中斷結束

等待
2

1 等待 = > 利⽤while迴圈實現

當時間還未到達觸發時間時,程式將在while迴圈循環。

2 中斷程式

當時間到達觸發時間時,將從主程式將進入中斷程式,
中斷程式執⾏完畢後,便回到while迴圈繼續等待下⼀
個觸發時間到達。

Toggle程式:
GpioDataRegs.GPATOGGLE.bit.GPIO1=1;

TOGGLETOGGLE
TOGGLE -1 表⽰ 啟⽤
功能 : 在 0 跟 11 之間 做 切換
P4
3

1
2

CPU Timers

圖片來源:TMS320x2833x, 2823x System Control and Interrupts P55

1 SYSCLKOUT

系統的振盪頻率為150MHz,經由SYSCLKOUT送入
( ⽯英 振盪 器 )

2 TCR . 4 -> 當 TCR .


4 = 0 0年 , c.LK 使 進入 PSCHIPSC

設定TCR

TDDRHITDDR and PRD Hi PRD


3

動作流程:
TDDRH:TDDR的值會送入PSCH:PSC,PRDH:PRD的值會送入TIMH:TIM
PSCH:PSC計數⼀到會送出⼀個pulse給TIMH:TIM
TIMH:TIM計數⼀到會送出⼀個pulse給TINT(中斷)

設定TDDRH:TDDR及PRDH:PRD的值

ps
圖片來源:TMS320x2833x, 2823x System Control and Interrupts P124

6 7

36

3a

圖片來源:TMS320x2833x, 2823x System Control and Interrupts P114

由上⽅的表格得知,若要啟⽤Timer功能來觸發中斷就必須將INTx.7以及
INT1.y的開關閉合
由上⽅的圖片得知,若要啟⽤Timer功能來觸發中斷還需要將INTM的開關
閉合。且觸發中斷完畢後還必須利⽤PIEACK清除中斷,避免觸發時間還沒
到達就再次觸發中斷。
• * ☆ 以上代號可搭配P7的架構圖及程式做對應
P6
圖片來源:TMS320x2833x, 2823x System Control and Interrupts P122

i
6

寫在中斷程式裡⾯:
36

P7
養成良好的寫程式習慣:
中斷寫在主程式的上⽅
函式寫在主程式的下⽅

中斷程式

·

主程式

P8
1 -5 i
, 霹靂 燈

(主 程式 ) ( 中斷 程式 )

開始 中斷開始
,

0寺 脈
初始 IIO
中斷 LED左移 LED右移
觸發 歭 問
設定

中斷結束
等待


X X

X X

LED左移 LED右移

P9
變數宣告及定義新的型態

中斷程式

PIO
主程式

Pll
Ch .
2 PWM 控制

z -
1 : PWM 桂 組 架構

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P20

PWM模組可分為以下幾個⼦模組:
1.Time Base (TB)模組
2.Counter Compare (CC)模組
3.Actino Qualifire (AQ)模組
4.Dead Band (DB)模組
5.PWM-chopper (PC)模組
6.Trip-Zone (TZ)模組
7.Event Trigger and Interrupt (ET)模組

PIZ
22 i Time -
Base CTB ) 模組

1. 架構 及 動作 說明 :


aoee

i
圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P21

SYSCLKOUT為系統振盪頻率150MHz

P 13
2 . 計算 PWM 週期 和 頻率

上數模式

下數模式

上下數模式
FTBELK
TBPRD =

FPWMTPWM
2 x

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P23

: 系統的切換週期[即系統切換頻率的倒數]

TTBCLKETBPRD
系統的振盪週期[即系統振盪頻率(150MHz)的倒數]

三⾓波的⾼度[即三⾓波的峰值]

:P 14
3. PWM 模組 設定
1

TBCLKSYNC的作⽤為同步所有已啟⽤的PWM模組
中的Time-Base Clock(TBCLK)。
在設定PWM模組的過程中,必須遵循以下的步驟:

PWM模組設定步驟:
1.將TBCLK設為0
2.對PWM模組進⾏設定
3.將TBCLK設為1

Pls
23 : Counter Compare Ccc ) 模組

架構 及 動作 說明 :

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P32

1 將TB模組產⽣的三⾓波送入TBCTR Bus

z 選擇要在[三⾓波的峰值]或是[三⾓波等於0]的位置將Shadow暫存器
的值更新⾄Active暫存器

Plb
2 -
4 : Action Qualifier IAQ) 模組

架構 及 動作 說明 :

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P39

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P40

P17
TTR

n.mil
1 1
CMPAECMPB
1 1 1 1
1 1 1 1

i i i i >
1 1 1 1
1 1 1 1
1 1 1 1

EPWMXA

>
1 1 1 ,
1 1 1 1

EPWMXB
1 1 i i

>

PWMA信號和PWMB信號的動作模式為互補

P 18
2 -5 i Dead Band CDB) 模組

架構 及 動作 說明 :

2 1
3

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P52

啟⽤Daed time > sl → t.co → 1


1 { 不啟⽤Dead time s s , → o.co → 0

反向 → s2 → 1
PWMA > { 不反向
2
{ PWMB >
反向
{ 不反向
→ sz → o
→ 53 → 1
→ s3 → 0

各別啟⽤PWMA及PWMB > 54 → 0 ss → 1

{
.

3 只啟⽤PWMA s s4 → o ss → 0 .

只啟⽤PWMB > s4 → 1 ss → 1 .

P19
2 -
6 : 程式 實現
規格:
三⾓波峰值=7500[數位值]、切換頻率=10kHz
動作說明:
LED由暗慢慢變亮(重複循環)

> PWM的命令值由0慢慢上升⾄7500 > 到達7500後降為0

-3,1
戲硬體接線圖:
本次實驗:
PWM的觸發腳位設定在GPIO-00及GPIO-01

杜邦線

PZO
變數宣告

中斷程式

P2 1
主程式

pzz
PWM程式

P 23
觀察Duty的動作:

1.在執⾏程式之後,對著Duty點擊滑鼠右鍵,選擇Add Watch Expression

2.在程式上⽅選擇Expressions,點擊Continouos Refresh來觀察Duty的變化

Dvihlgl
P 24
Ch 3 、
ADC 控制

3 -
1 : ADC 桂 組 架構

3 3

圖片來源:TMS320x2833x, 2823x Analog-to-Digital Converter(ADC) Module P11

1 利⽤Sample and Hold將信號擷取後送入ADC做轉換


(轉換的過程有順序)

2 將ADC轉換的結果儲存⾄Result Registers(結果暫存器)

3 ADC的觸發:
[ 1 1 S/W (軟體觸發)

ePWMx SOCA、ePWMx SOCB (PWM觸發)


筒 GPIO/XINT2_ADCSOC (外部中斷觸發)
pzs
3 -
2 : ADC 取樣 模式

cascade 榁 式 ( 串 列 模式 ) :

圖片來源:TMS320x2833x, 2823x Analog-to-Digital Converter(ADC) Module P15

P2 6
Dual sequencers 榁 式 ( 雙 序列 模式 ) :

圖片來源:TMS320x2833x, 2823x Analog-to-Digital Converter(ADC) Module P16

pz7
3 -
3 : ADC 功能 設定

1、 開啟 ADC 功能 :

圖片來源:TMS320x2833x, 2823x System Control and Interrupts P124

P28
2 .
設定 ADC 頻率 :

ISOMHZ

圖片來源:TMS320x2833x, 2823x Analog-to-Digital Converter(ADC) Module P26

3
4

注意:在設定任意暫存器之前,都必須將暫存器做初始化的動作!

P 29
3 .
設定 ADC 取樣 模式 及 觸發 腳 位 :

3 -
4 : ADC 轉換 原 王⾥

1. ADC 右 移 4 位元

Result Register為16位元,⽽28335的ADC模組為12位元。
在Cascade模式中,⼀般是從0x7108-0x7117位址讀取(peripheral frame 2),
也就是採⽤左對⿑的⽅式,故前4個位元是保留的,所以需要右移4個位元才能
得到實際值

ADCRESULTn(0x7108~0x7117)暫存器信息

圖片來源:TMS320x2833x, 2823x Analog-to-Digital Converter(ADC) Module P45

P 30
2、 Q 格式

數位值與類比電壓的轉換

圖片來源:TMS320x2833x, 2823x Analog-to-Digital Converter(ADC) Module P10

由上⽅數位值與類比電壓的轉換得知,數位值最⼤為4095
假設比較器命令的最⼤值為7500[數位值]
兩者之間的倍率轉換為7500/4095=1.83

Q格式步驟如下:
1.先將1.83放⼤2的任意次⽅,假設放⼤2^10 > 1.83*1024=1873
2.將欲轉換的值先乘上1873再除以1024便可得到1.83的倍率轉換
[注意:變數宣告必須要⽤long,不能⽤int!]
˙
·

理論上來說,Duty/1024與Duty >> 10是等價的,但在MCU的處理上是不同的


Duty/1024是利⽤運算,⽽Duty >> 10 是利⽤右移
在MCU的處理上,Duty >> 10的處理速度會比Duty/1024來得快
[對於邏輯處理來說,右移是最快的!]

P3 1
3 -
5 : Event -

Trigger ( ET ) 模組

架構 及 動作 說明 :

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P65

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P67

P3 2
2

圖片來源:TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module P67

在Event-Trigger模組中,有SOCA以及SOCB兩組pulse,
本次實驗利⽤SOCB這組pluse來觸發ADC的功能。

1
2

P 33
3 -
6 : 程式 實現
規格:
三⾓波峰值=7500[數位值]、切換頻率=10kHz
動作說明:
利⽤可變電組(VR)控制PWM的命令值。PWM的命令值可以由0[數位值]
提升⾄7500[數位值]或由7500[數位值]降⾄0[數位值],
⽽ADC的命令值可以由0[數位值]提升⾄4095[數位值]或由4095[數位值]
降⾄0[數位值]

硬體接線圖:
本次實驗:
PWM的觸發腳位設定在GPIO-00及GPIO-01
ADC的觸發腳位設定在A3

可變電阻

nt
杜邦線
杜邦線

P 34
變數宣告

中斷程式

P3 5
主程式

P3 6
PWM程式

P 37
觀察Duty及ADCDuty的動作:

1.將可變電阻(VR)之阻值調整⾄最⼩

不 等於 0
Duty及ADCDuty的值會非常⼩ 羅 比 轉 數位 的 話 差

2.將可變電阻(VR)之阻值調整⾄最⼤

Duty的值會趨近於7500 不等於 7500


ADCDuty的值會趨近於4095 Q 格式 轉換 的 話 差

P 38

You might also like