[DSP280x-M EVM] 보드 테스트 - ADC, PWM 테스트(eCAP PWM)
TMS320F2808의 ADC값을 읽어 PWM으로 출력하는 테스트.
[DSP280x-M EVM]에는 PWM0~PWM3의 PWM을 할당해 두었다. 확장보드의 PWM3은 TMS320F2808의 P11에 연결되어 있고 가각 PWM6B/eCAP4/RXDB 기능을 가지고 있다.
그중에서 확장보드의 LED2에 연결되어 있는 PWM3을 이용하여 ADC값에 따라 PWM출력을 제어 하고 이 출력이 고휘도 LED의 밝기를 설정하는 예제를 작성하기 위해 32bit 분해능의 eCAP4로 PWM을 출력해 보았다.
확장 테스트 보드에서 PWM3은 CN40, LED2에 연결되어 있다.
TMS210F2808 PWM테스트 동영상
- 가변 저항값에 따라 PWM출력을 변경하고 이에 따라 PWM을 이용한 고휘도 LED출력
TMS320F2808 eCAP을 이용한 PWM테스트 예제소스
P11(eCAP4) 초기화 설정
pwm.c 함수
main 함수
void main(void)
{
unsigned int pwm_period = 50;
unsigned int temp = 0;
//DSP System Initialize
SystemInit();
Led1Init();
Led1On();
DebugInit(BAUD_57600);
DebugPrint("ePWM Test Program\r\n");
//Init PWM
InitPwm();
//ADC Init
AdcInit();
while(1)
{
temp = ((float)AdcRead(8)/4095.0*100.0);
PwmSet3(temp);
U0_PutInt(temp);
Delay(50);
}
}
TMS320F2808의 ADC값을 읽어 PWM으로 출력하는 테스트.
[DSP280x-M EVM]에는 PWM0~PWM3의 PWM을 할당해 두었다. 확장보드의 PWM3은 TMS320F2808의 P11에 연결되어 있고 가각 PWM6B/eCAP4/RXDB 기능을 가지고 있다.
그중에서 확장보드의 LED2에 연결되어 있는 PWM3을 이용하여 ADC값에 따라 PWM출력을 제어 하고 이 출력이 고휘도 LED의 밝기를 설정하는 예제를 작성하기 위해 32bit 분해능의 eCAP4로 PWM을 출력해 보았다.
확장 테스트 보드에서 PWM3은 CN40, LED2에 연결되어 있다.
TMS210F2808 PWM테스트 동영상
- 가변 저항값에 따라 PWM출력을 변경하고 이에 따라 PWM을 이용한 고휘도 LED출력
TMS320F2808 eCAP을 이용한 PWM테스트 예제소스
P11(eCAP4) 초기화 설정
#if _ENABLE_ECAP4
#define PwmSetEcap4(Period) ECap4Regs.CAP2 = (ECap4Regs.CAP1-(ECap4Regs.CAP1*Period/100))
#define PwmSetPeriodEcap4(Freq, Period) ECap4Regs.CAP1 = 100000000/(Freq);PwmSetEcap4(Period)
void Ecap4_Config(unsigned long Freq)
{
EALLOW;
// P11 풀업 설정
GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pull-up on GPIO11 (CAP4)
// SYSCLKOUT와 동기화된 입력으로 설정
GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 0; // Synch to SYSCLKOUT GPIO11 (CAP4)
// P11을 eCAP-4으로 설정
GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 3; // Configure GPIO11 as CAP4
EDIS;
:
}
#define PwmSetEcap4(Period) ECap4Regs.CAP2 = (ECap4Regs.CAP1-(ECap4Regs.CAP1*Period/100))
#define PwmSetPeriodEcap4(Freq, Period) ECap4Regs.CAP1 = 100000000/(Freq);PwmSetEcap4(Period)
void Ecap4_Config(unsigned long Freq)
{
EALLOW;
// P11 풀업 설정
GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pull-up on GPIO11 (CAP4)
// SYSCLKOUT와 동기화된 입력으로 설정
GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 0; // Synch to SYSCLKOUT GPIO11 (CAP4)
// P11을 eCAP-4으로 설정
GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 3; // Configure GPIO11 as CAP4
EDIS;
:
}
pwm.c 함수
void InitPwm(void)
{
Ecap4_Config(50); //50Hz, duty 50%
}
void PwmSet3(unsigned int Period)
{
PwmSetEcap4(Period);
}
{
Ecap4_Config(50); //50Hz, duty 50%
}
void PwmSet3(unsigned int Period)
{
PwmSetEcap4(Period);
}
main 함수
void main(void)
{
unsigned int pwm_period = 50;
unsigned int temp = 0;
//DSP System Initialize
SystemInit();
Led1Init();
Led1On();
DebugInit(BAUD_57600);
DebugPrint("ePWM Test Program\r\n");
//Init PWM
InitPwm();
//ADC Init
AdcInit();
while(1)
{
temp = ((float)AdcRead(8)/4095.0*100.0);
PwmSet3(temp);
U0_PutInt(temp);
Delay(50);
}
}
반응형