SuperIC社区_

标题: IR遥控转码功能 [打印本页]

作者: AlexWeng    时间: 2017-3-30 23:57
标题: IR遥控转码功能
IR遥控转码功能
关键字:IR 转码 DVD 遥控
适用机种:MIPS架构平台所有机型
以下为遥控转码(NEC码)功能的参考代码,使用1个IO口来模拟IR波形给DVD或其它后端设备。
现只是使用延时而没有使用中断的方式来做,因为现系统中的MsOS_DelayTaskUs函数实际时间不准确,需加入修正值,具体的可通过
示波器测量波形来验证。
#if (ENABLE_DVD_IR_SEND_FUNCTION)
#define FIX_MUL_VAL     0.66

#define IR_LEADER_LOW      5940 //(9000*FIX_MUL_VAL)    // us
#define IR_LEADER_HIGH    3000 //(4500*FIX_MUL_VAL)    // us
#define IR_LOGIC_HIGH       385 //(560*FIX_MUL_VAL)     // us
#define IR_LOGIC0_LOW       385 //(560*FIX_MUL_VAL) //1120    // us
#define IR_LOGIC1_LOW       1155 //(1680*FIX_MUL_VAL) //2240    // us

#define IR_HEADCODE          0xBF00
U32 u32_SendIRtimerCounter;

#define IR_DELAY(X)  {MsOS_DelayTaskUs(X);}//{u32_SendIRtimerCounter = MsOS_GetSystemTime();while(MsOS_Timer_DiffTimeFromNow(u32_SendIRtimerCounter) >= X);}

void SendIRCode(U8 Datecode)
{
   U8 i;
   U32 j = 0x01;
   U32 SendDATA; //, HeadCode;

   //HeadCode = IR_HEADCODE;
   SendDATA = IR_HEADCODE |  (Datecode << 16) | ((~Datecode)<<24) ;

    // putstr("\r\n Set P0_6");
    printf("\r\n DATA = %x",SendDATA);

     DVD_IR_LOW();   

     IR_DELAY(IR_LEADER_LOW);

     DVD_IR_HIGH();  

     IR_DELAY(IR_LEADER_HIGH);

     for(i=0;i<32;i++)
     {

        DVD_IR_LOW();              
        IR_DELAY(IR_LOGIC_HIGH);
        DVD_IR_HIGH();  

         if(SendDATA&j)         
         {
            IR_DELAY(IR_LOGIC1_LOW);
         }
         else
         {
            IR_DELAY(IR_LOGIC0_LOW);   
         }      
          j <<=1;

       }
/*
       j = 0x01;
       for(i=0;i<16;i++)
       {
        DVD_IR_LOW();              
        IR_DELAY(IR_LOGIC_HIGH);
        DVD_IR_HIGH();  

         if(SendDATA&j)         
         {
           j <<=1;
            IR_DELAY(IR_LOGIC1_LOW);
         }
         else
         {
            j <<=1;
            IR_DELAY(IR_LOGIC0_LOW);   
         }      
        }
*/
        DVD_IR_LOW();      
        IR_DELAY(IR_LOGIC_HIGH);
        DVD_IR_HIGH();  


        printf("\r\n ONE BYTE SEND");
        //putstr("\r\n - ");  putstr(" - ");  putstr(" - ");
        MsOS_DelayTask(10);
        DVD_IR_HIGH();   
        return;
}

#endif



作者: xuludestiny    时间: 2017-4-5 14:12
IO口来模拟IR波形给DVD或其它后端设备。谢谢
作者: 高天凡1993    时间: 2017-4-8 17:40
上海衡海投资管理有限公司。谢谢楼主,楼主太好人了
作者: fanwhu    时间: 2017-6-1 14:57
不错的方法,谢谢。
作者: chen472015439    时间: 2017-7-27 14:23
留名备用参考,谢谢!
作者: Jack.Lin    时间: 2017-12-31 23:49
这种应用给客户有一定参考价值。




欢迎光临 SuperIC社区_ (/) Powered by Discuz! X3.3