digital signal processing tms320f2812 เบื้องต้น by mr.rungwicha chaiyot
DESCRIPTION
Digital Signal Processing TMS320F2812 เบื้องต้น By Mr.Rungwicha Chaiyot. TMS320F2812 เป็นผลิตภัณฑ์ของบริษัทเทคซัสอินสตรูเมนท์ ( Texas Instrument ) มีอุปกรณ์รอบข้างที่เหมาะสำหรับประยุกต์ใช้ในงานควบคุมมอเตอร์ โดยเฉพาะดังนี้ -Two event-manager modules (EVA,EVB) - PowerPoint PPT PresentationTRANSCRIPT
Digital Signal ProcessingTMS320F2812
เบื้��องต้�น
By Mr.Rungwicha Chaiyot
TMS320F2812
เป็�นผลิ�ต้ภั�ณฑ์�ของบื้ริ�ษั�ทเทคซั�สอ�นสต้ริ�เมนท� (Texas Instrument)
ม�อ�ป็กริณ�ริอบื้ข�างท�!เหมาะส$าหริ�บื้ป็ริะยุ�กต้�ใช้�ในงานควบื้ค�มมอเต้อริ�โดยุเฉพาะด�งน��-Two event-manager modules (EVA,EVB)
-Enhanced analog-to-digital converter (ADC) module
-Digital I/O and shared pin function
EVENT MANAGER (EV) Module
ม�ค�ณสมบื้�ต้�ในการิป็ริะยุ�กต้�ใช้�ในงานควบื้ค�มการิเคลิ�!อนท�!แลิะควบื้ค�มมอเต้อริ�โดยุเฉพาะ ป็ริะกอยุด�วยุ EVA,EVB น$าไป็ป็ริะยุ�กต้�ใช้�ในงานแบื้บื้ multi-axis/motion control เช้0น-ควบื้ค�มมอเต้อริ�สองต้�ว-ควบื้ค�มอ�นเวอริ�เต้อริ�แบื้บื้สามริะด�บื้แต้0ลิะ EV Module ม� full compare unit 3 หน0วยุ ให�ก$าเน�ด PWM ได�โมด�ลิลิะ 6 ส�ญญาณพริ�อมท��ง dead band โดยุท�!ค0าdead band ท�!ต้�องการิสามาริถโป็ริแกริมเข�าไป็ยุ�ง Compare Register ได�
EV แต้0ลิะต้�วจะใช้� General-Purpose (GP) Timers เพ�!อเป็�น
Time base ให�ก�บื้ Compare unit ซั5!งเก�!ยุวข�องก�บื้การิให�ก$าเน�ดส�ญญาณ PWM ด�งริ�ป็ท�! 1
GP Timer 1
EVA Compare Unit
Compare 1
Compare 2
Compare 3
PWM1PWM2PWM3PWM4
PWM5PWM6
GP Timer 3
EVB Compare Unit
Compare 4
Compare 5
Compare 6
PWM7PWM8PWM9PWM10
PWM11PWM12
ริ�ป็ท�! 1 โมด�ลิก$าเน�ดส�ญญาณ PWM
GP Timer Counting Operation
Compare output ของ GP Timer สามาริถก$าหนด
active high,active low force high,force low ได�
GP Timer แต้0ลิะต้�วม�โหมดการิท$างานท�!เป็�นไป็ได� 4 แบื้บื้-Stop/Hold mode-Continuous Up-Counting mode-Directional Up-/Down-Counting mode-Continuous Up-/Down-Counting mode
โดยุแต้0ลิะแบื้บื้สามาริถก$าหนดได�โดยุใช้� timer control register
(TxCON) บื้�ต้ท�! 11-12
Stop/Hold Mode
ในโหมดน�� GP Timer จะหยุ�ดท$างานแลิะคงอยุ�0ท�!สถานะป็6จจ�บื้�น ต้�ว timer counter,compare output จะไม0ม�การิเป็ลิ�!ยุนแป็ลิง
Continuous Up-Counting mode
GP Timer ในโหมดน��จะท$าการิน�บื้ข5�นจนกริะท�!ง timer counter
ม�ค0าเท0าก�บื้ Period registerซั5!งต้ริงก�บื้ขอบื้ขาข5�นของ input clock
พอด� ค0า GP Timer จะริ�เซัต้เป็�น 0 แลิะเริ�!มน�บื้ใหม0อ�กคริ��งหน5!ง ด�งริ�ป็ท�! 2
ริ�ป็ท�! 2 GP Timer Continuous Up-Counting mode
GP Timer ท�!น�บื้แบื้บื้ Continuous Up-Counting mode
ป็ริะโยุช้น�ค�อน$าไป็สริ�าง PWM แบื้บื้ Asynchronous
Directional Up-/Down-Counting mode
ในโหมดน�� GP Timer จะน�บื้ข5�นแลิะน�บื้ลิง ต้ามอ�นพ�ต้ท�!ขา
TDIRA/B ของ GPIO PORT
-TDIRA/B เป็�น high GP Timer จะน�บื้ข5�นจนม�ค0าเท0าก�บื้ Period register
Timer จะริ�เซัต้เป็�น 0 แลิะน�บื้ข5�นใหม0อ�กคริ��ง-TDIRA/B เป็�น low GP Timer จะน�บื้ลิงจนม�ค0าเท0าก�บื้ 0 ค0า Timer
จะ reloads ใหม0ให�เท0าก�บื้Period register แลิะน�บื้ลิงใหม0อ�กคริ��งด�งริ�ป็ท�! 3
GP Timer ท�!น�บื้แบื้บื้ Up-/Down-Counting mode ใช้�ในกริณ�ม�เหต้การิณ�จากภัายุนอกเป็ลิ�!ยุนไป็ในงานควบื้ค�มแลิะ power electronicsapplication
ริ�ป็ท�! 3 Directional Up-/Down-Counting mode
Continuous Up-/Down-Counting mode
ในโหมดน��การิท$างานจะเหม�อนก�บื้ Direction Up-/Down-Counting
mode แต้0 PIN TDIRA/B ไม0ม�ผลิต้0อท�ศทางการิน�บื้
-ท�ศทางการิน�บื้จะเป็ลิ�!ยุนจาก up to down เม�!อ timer counter
ม�ค0าเท0าก�บื้ Period register
-ท�ศทางการิน�บื้จะเป็ลิ�!ยุนจาก down to up เม�!อ timer counter
ม�ค0าเท0าก�บื้ 0
ด�ริ�ป็ท�! 4
ริ�ป็ท�! 4 Continuous Up-/Down-Counting mode
Continuous Up-/Down-Counting mode ใช้�สริ�าง PWM แบื้บื้ Symmetric แลิะ period ของ timer ในโหมดน��ม�ค0าเป็�นสองเท0าของPeriod register (TxPR)
Asymmetric/Symmetric Waveform Generation
asymmetric /symmetric PWM wave form สามาริถก$าหนดได�โดยุ counting mode ท�!อยุ�0ภัายุใน GP TimerAsymmetric Waveform Generation
เม�!อ GP Timer อยุ�0ใน continuous up-counting mode.
output waveform (PWM) จะม�การิเป็ลิ�!ยุนแป็ลิงด�งน��-ม�ค0า 0 ก0อน timer counter จะท$างาน-ม�ค0าคงท�!จนกริะท�!งเก�ดการิ compare math (timer counter=compare register)
-Toggle เม�!อเก�ดการิ compare math
-ม�ค0าคงท�!จนกริะท�!งส��นส�ด period
-ริ�เซัต้เป็�น 0 เม�!อจบื้ period
ริ�ป็ท�! 5 GP Timer Compare/PWM Output in Up-Counting Mode
Symmetric Waveform Generation
เม�!อ GP Timer อยุ�0ใน continuous up-/down counting mode.
output waveform (PWM) จะม�การิเป็ลิ�!ยุนแป็ลิงด�งน��-ม�ค0า 0 ก0อน timer counter จะท$างาน-ม�ค0าคงท�!จนกริะท�!งเก�ดการิ compare math (timer counter=compare register)
-Toggle เม�!อเก�ดการิ compare math
-ม�ค0าคงท�!จนกริะท�!งเก�ดการิ compare math คริ��งท�!สอง
-Toggle เม�!อเก�ดการิ compare math คริ��งท�!สอง-ม�ค0าคงท�!จนกริะท�!งส��นส�ด period
-ริ�เซัต้เป็�น 0 เม�!อจบื้ period
ริ�ป็ท�! 6 GP Timer Compare/PWM Output in Up-/Down Counting Mode
PWM Output สามาริถท�!จะก$าหนด active high,active low,
force low,force high ได�โดยุก$าหนดค�ณสมบื้�ต้�ใน ACTRA/Bregister
Compare Unit1= Bit0-3 =PWM1,PWM2Compare Unit2= Bit 4-7=PWM3,PWM4Compare Unit3= Bit 8-11=PWM5,PWM6ACTRA=0999
1 0 0 11 0 0 1
1 0 0 10 0 0 0
PWM1=ALPWM2=AHPWM3=ALPWM4=AH
PWM5=ALPWM6=AH
PWM2 AHPWM1 AL
ริ�ป็ท�! 7 ACTRA
ริ�ป็ท�! 8 Symmetrical PWM1,PWM2
ม� register อ�กหลิายุต้�วท�!เก�!ยุวข�องก�บื้การิใช้�งาน PWM ศ5กษัาเพ�!มเต้�มได�จาก litrrature number SPRU065
General-Purpose Input/Output (GPIO)
GPIO MUX register ใช้�เลิ�อกค�ณสมบื้�ต้�การิท$างานให�ก�บื้ PIN
ในต้�วป็ริะมวลิผลิซั5!งสามาริถก$าหนดให�เป็�นการิท$างานแบื้บื้ต้0างๆได�ด�งน�� -Digital I/O หริ�อ Peripheral โดยุ GPxMUX registers
-ถ�าเป็�น Digital I/O ก$าหนดให�เป็�น Input/Output โดยุ GPxDIR registers
แต้0ลิะ Port ของ GPIO จะถ�กควบื้ค�มโดยุ MUX, Direction, Data, Set, Clear, Toggle Registers
GPxMUX Registers
แต้0ลิะ Port ของ GPIO ค�อ MUX registers ใช้�ในการิเลิ�อกริะหว0างการิท$างานเป็�นอ�ป็กริณ�ริอบื้ข�างหริ�อเป็�นDigital I/O
IF GPxMUX.bit=0 Pin ถ�กก$าหนดเป็�น Digital I/O
IF GPxMUX.bit=1 Pin ถ�กก$าหนดเป็�นอ�ป็กริณ�ริอบื้ข�างGPxDIR Register
แต้0ลิะ Port ของ GPIO ค�อ GPxDIR registers ใช้�ในการิเลิ�อกริะหว0างการิท$างานเป็�น Input หริ�อเป็�น Output
IF GPxDIR.bit=0 Pin ถ�กก$าหนดเป็�น Input
IF GPxDIR.bit=1 Pin ถ�กก$าหนดเป็�น Output
X=PORT A,B,D,E,F,G
GPxDAT Registers
แต้0ลิะ Port ของ GPIO ค�อ GPxDAT registers ใช้�ในการิสะท�อนสถานะป็6จจ�บื้�นของ I/OIF GPxDAT.bit=0, PIN ก$าหนดเป็�น Output เม�!อน��น PIN
ถ�กเป็ลิ�!ยุนเป็�น Low
IF GPxDAT.bit=1, PIN ก$าหนดเป็�น Output เม�!อน��น PIN
ถ�กเป็ลิ�!ยุนเป็�น High
GPxSET Register
แต้0ลิะ Port ของ GPIO ค�อ GPxSET registers โดยุ PIN
น��นต้�องถ�กก$าหนดเป็�น OutputIF GPxSET.bit=0, ignored (no effect)
IF GPxSET.bit=1, PIN ก$าหนดเป็�น Output เม�!อน��น PIN
ถ�กเป็ลิ�!ยุนเป็�น High
GPxCLEAR Registers
แต้0ลิะ Port ของ GPIO ค�อ GPxCLEAR registers โดยุ PIN
น��นต้�องถ�กก$าหนดเป็�น OutputIF GPxCLEAR.bit=0, ignored (no effect)
IF GPxCLEAR.bit=1, PIN ก$าหนดเป็�น Output เม�!อน��น PIN
ถ�กเป็ลิ�!ยุนเป็�น Low
GPxTOGGLE Registers
แต้0ลิะ Port ของ GPIO ค�อ GPxToggle registers โดยุ PIN
น��นต้�องถ�กก$าหนดเป็�น OutputIF GPxToggle.bit=0, ignored (no effect)
IF GPxToggle.bit=1, PIN ก$าหนดเป็�น Output เม�!อน��น PIN
ถ�กเป็ลิ�!ยุนเป็�นค0าต้ริงก�นข�าม
GPIO AGPIOA0 / PWM1GPIOA1 / PWM2GPIOA2 / PWM3GPIOA3 / PWM4GPIOA4 / PWM5GPIOA5 / PWM6GPIOA6 / T1PWM_T1CMPGPIOA7 / T2PWM_T2CMPGPIOA8 / CAP1_QEP1GPIOA9 / CAP2_QEP2GPIOA10 / CAP3_QEPI1GPIOA11 / TDIRAGPIOA12 / TCLKINAGPIOA13 / C1TRIPGPIOA14 / C2TRIPGPIOA15 / C3TRIP
GPIO BGPIOB0 / PWM7GPIOB1 / PWM8GPIOB2 / PWM9GPIOB3 / PWM10GPIOB4 / PWM11GPIOB5 / PWM12GPIOB6 / T3PWM_T3CMPGPIOB7 / T4PWM_T4CMPGPIOB8 / CAP4_QEP3GPIOB9 / CAP5_QEP4GPIOB10 / CAP6_QEPI2GPIOB11 / TDIRBGPIOB12 / TCLKINBGPIOB13 / C4TRIPGPIOB14 / C5TRIPGPIOB15 / C6TRIP
GPIO DGPIOD0 / T1CTRIP_PDPINTAGPIOD1 / T2CTRIP / EVASOCGPIOD5 / T3CTRIP_PDPINTBGPIOD6 / T4CTRIP / EVBSOC
GPIO EGPIOE0 / XINT1_XBIOGPIOE1 / XINT2_ADCSOCGPIOE2 / XNMI_XINT13
GPIO FGPIOF0 / SPISIMOAGPIOF1 / SPISOMIAGPIOF2 / SPICLKAGPIOF3 / SPISTEAGPIOF4 / SCITXDAGPIOF5 / SCIRXDAGPIOF6 / CANTXAGPIOF7 / CANRXAGPIOF8 / MCLKXAGPIOF9 / MCLKRAGPIOF10 / MFSXAGPIOF11 / MFSRAGPIOF12 / MDXAGPIOF13 / MDRAGPIOF14 / XF
GPIO GGPIOG4 / SCITXDBGPIOG5 / SCIRXDB
C28x GPIO Pin AssignmentC28x GPIO Pin Assignment
BIT ท�!เหลิ�อ GPIO D,E,G,F ค�อ Reserved
ต้$าแหน0งของ PIN บื้น eZDSP_TMS320F2812
board ด�ได�จาก 2812_ezdsp_TechRef_F.pdf
ต้าริางท�! 1 PIN Assigment บื้น P4 แลิะ P8 ของ DSP board
Ex. Example_281xEvPwm.c
//Description#include “header_file”
//ป็ริะกาศ function ท�!ใช้�ในโป็ริแกริมvoid init_eva(void)void init_evb(void)//void main(void) { init_eva( ); init_evb( );
for(; ;);
}void init_eva( )
{
}
void init_evb( ) {
}
(generate PWM1-12)
(ป็ริะกาศค0าต้�นแบื้บื้ให�ก�บื้โป็ริแกริม)(function ช้�!อ init_eva/b แบื้บื้ไม0ม�การิส0งต้�วแป็ริเข�า/ออกจากโป็ริแกริม=void)
(โป็ริแกริมหลิ�กเริ�!มด�วยุค$าส�!ง main)
(เริ�ยุกใช้� function init_eva )(เริ�ยุกใช้� function init_eva )
(Idle Loop)
(สริ�าง function ช้�!อ init_eva() )
(สริ�าง function ช้�!อ init_eva() )
การิสริ�าง project
1. Menu Project->New
Project Name: ProjectPwm
Location: c:\Project
Project Type: Executable(.out)
Target: TMS320C28XX
Click: Finish
NOTE:ใน Folder Project สร้�าง header file และ C Source code
ส�าหร้�บกำ�าหนดค่�า Default ของ DSPไว้�เร้�ยบร้�อยแล�ว้
Menu File->New->Source File
2.เข�ยุน C-Source Code
Menu:File->Save as
Save in: projectFilename:ProjectPwmSave as type: C Source FilesClick: Save
3. Add code file to the project
Menu Project->Add files to project
ไป็ท�! Folder Project
: projectPwm.c:DSP281x_Codestartbranch.asm:DSP281x_Defaultsisr.c:DSP281x_Globalvariabledef.c:DSP281x_PieCtrl.c:DSP281x_PieVect.c:DSP281x_SysCtrl.c:DSP281x_header_nonBIOS.cmd:EzDSP_RAM_INK.cmd
ก$าเน�ด PWM
กำ�าหนดค่�า Default ของ
register ให� DSP
Link Command File
Link Command File : จองพื้��นที่� ในหน�ว้ยค่ว้ามจ�าให�กำ�บตั�ว้ปร้ะมว้ลผล
4. Add the C-runtime-library to Project
Project->Build Option
Linker->Library Search PatchType:C:\Ti\c2000\cgtools\libLinker->Include LibrariesType:rts2800_ml.lib
Add the stack-size of 0x400Linker->Stack Size(-Stack)Type: 0x400
Close Build Option Click OK
5. Menu Project->Build
6. Load File projectPwm.out and run Program
Menu File->Load Program ->projectPwm.out ->Click Open
Run Program
Halt Program
REFERENCE
1.Texas Instrument “TMS320x281x DSP Event Manager (EV) Referencre Guide.” (SPRU065d) November2004
2.Texas Instrument “TMS320x281x DSP System Control and Interrupts ReferEnce Guide.” (SPRU078C) March20053.Texas Instrument “ACI3_1For TMS320F281X Setup Company.” (SPRC130)