본문 바로가기

[DSP]/DSP28335

[DSP28335 EVM] 로터리 엔코더 테스트 - TMS320F28335 QEP

[DSP28335 EVM] 로터리 엔코더 테스트 - TMS320F28335  QEP


TMS320F28335는 2채널의 EQEP 모듈이 있어 엔코더를 쉽게 연결 할 수 있다.

[DSP28335 EVM] EQEP 핀맵







[EXP-ALL EVM] 보드를 이용하면 로터리 엔코더를 이용하여 간단히 TMS320F28335의 EQEP를 테스트 해 볼 수 있다.
로터리 엔코더는  EQEP 채널 1에 연결되어 있다.
GPIO50/EQEP1A <- GPIO0/EPWM1A (simulates EQEP Phase A signal)    
GPIO51/EQEP1B <- GPIO1/EPWM1B (simulates EQEP Phase B signal)    
GPIO23/EQEP1I <- GPIO4 (simulates EQEP Index Signal)


[EXP-ALL EVM]보드의 로터리 엔코더 회로도








TMS320F28355 QEP 테스트 동영상





TMS320F28335 EQEP 를 이용한 로터리 엔코더 테스트 소스코드
QEP 레지스터에서 로터리 엔코더 값을 읽어와 FND에 출력하는 예제 코드 이다. 테스트를 위해 최대 QEP값은 100으로 설정했다.
void main(void)
{
 unsigned long cnt = 0;
 unsigned long old_cnt = 0;

 //DSP System Initialize
 SystemInit();

 Led1Init();
 Led1On();

 DebugInit(BAUD_115200);
 DebugPrint("DSP28335 QEP Test\r\n");

//FND 초기화
 FndInit();
 FndOut(10);

  //QEP1 초기화
   InitQep1();

 while(1)
 {

   //QEP 데이터 카운트값 읽어와서
  cnt = EQep1Regs.QPOSLAT;

  if(old_cnt != cnt)
  {
   Led1Toggle();
   FndOut((unsigned char)cnt);
   DebugPrint("cnt=%ld\r\n", cnt);
  }

 old_cnt = cnt;
  Delay(1);
 }
}  



반응형