⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example_full.lst

📁 用于DRX3973或DRX39系列的芯片的控制
💻 LST
📖 第 1 页 / 共 3 页
字号:
 377   1         /* program channel using desired frequency and bandwidth */
 378   1         if ( DRX_Ctrl( &demod, DRX_CTRL_SET_CHANNEL, &channelParams ) != DRX_STS_OK )
 379   1         {
 380   2            XERROR("failure: error programming desired channel\n");
 381   2         }
 382   1         XPRINTF("channel programmed... waiting for lock\n");
 383   1      
 384   1         /* wait for the system to achieve MPEG lock */
 385   1         start      = DRXBSP_HST_Clock();
 386   1         everLocked = FALSE;
 387   1         do
 388   1         {
 389   2            if ( DRX_Ctrl( &demod, DRX_CTRL_LOCK_STATUS, &lockStatus ) != DRX_STS_OK )
 390   2            {
 391   3               XERROR("error retrieving lock status\n");
 392   3            }
 393   2            
 394   2            /* check for any type of lock */
 395   2            if ( lockStatus != DRX_NOT_LOCKED )
 396   2            {
 397   3               everLocked = TRUE;
 398   3            }
 399   2            
 400   2            /* update time passed */
 401   2            delta =  DRXBSP_HST_Clock() - start;
 402   2            
 403   2            /* check for timeouts */
 404   2            if ( delta > LOCK_TIMEOUT_MPEG )
 405   2            {
 406   3               break; /* total timeout */
 407   3            }
 408   2            if ( (delta > LOCK_TIMEOUT_ANY) && (everLocked == FALSE) )
 409   2            {
 410   3               break; /* no lock to be expected */
C51 COMPILER V8.02   EXAMPLE_FULL                                                          02/11/2009 09:41:00 PAGE 8   

 411   3            }
 412   2         } while( lockStatus != DRX_LOCKED );
 413   1      
 414   1         if ( lockStatus != DRX_LOCKED )
 415   1         {
 416   2            XERROR("cannot lock to signal\n");
 417   2         }
 418   1         XPRINTF("lock achieved\n");
 419   1      
 420   1         XPRINTF("\n");
 421   1      
 422   1         /*-----------------------------------------------------------------------*/
 423   1         /* (5) Retrieve channel parameters                                       */
 424   1         /*-----------------------------------------------------------------------*/
 425   1      
 426   1         /* let system stabilize */
 427   1         XWAITMSECS( 1000 );
 428   1      
 429   1         XPRINTF("retrieving channel parameters...");
 430   1         /* channel parameters found by the system are stored in channelParams */
 431   1         if ( DRX_Ctrl( &demod, DRX_CTRL_GET_CHANNEL, &channelParams) != DRX_STS_OK )
 432   1         {
 433   2            XERROR("error retrieving channel parameters\n");
 434   2         }
 435   1         
 436   1         /* print channel parameters */
 437   1         XPRINTF( "\nDetected channel parameters:\n" );
 438   1         XPRINTF( "Frequency      : %d kHz\n" , channelParams.frequency );
 439   1         XPRINTF( "Bandwidth      : %s\n" , DRX_STR_BANDWIDTH(     channelParams.bandwidth     ) );
 440   1         XPRINTF( "FFT mode       : %s\n" , DRX_STR_FFTMODE(       channelParams.fftmode       ) );
 441   1         XPRINTF( "Guard interval : %s\n" , DRX_STR_GUARD(         channelParams.guard         ) );
 442   1         XPRINTF( "Constellation  : %s\n" , DRX_STR_CONSTELLATION( channelParams.constellation ) );
 443   1         XPRINTF( "Code rate      : %s\n" , DRX_STR_CODERATE(      channelParams.coderate      ) );
 444   1         XPRINTF( "Hierarchy      : %s\n" , DRX_STR_HIERARCHY(     channelParams.hierarchy     ) );
 445   1         XPRINTF( "Priority       : %s\n" , DRX_STR_PRIORITY(      channelParams.priority      ) ); 
 446   1         XPRINTF( "Mirroring      : %s\n" , DRX_STR_MIRROR(        channelParams.mirror        ) );  
 447   1         XPRINTF( "\n" );   
 448   1      
 449   1         /* channel parameters according to the TPS info are stored in TPSInfo */
 450   1         if ( DRX_Ctrl( &demod, DRX_CTRL_TPS_INFO, &TPSInfo) != DRX_STS_OK )
 451   1         {
 452   2            XERROR("error retrieving TPS info\n");
 453   2         }
 454   1      
 455   1         XPRINTF("\n");
 456   1      
 457   1         /*-----------------------------------------------------------------------*/
 458   1         /* (6) Show signal quality and strength                                  */
 459   1         /*-----------------------------------------------------------------------*/
 460   1      
 461   1         /* Let system stabilize */
 462   1         XWAITMSECS( 200 );
 463   1      
 464   1         XPRINTF( "Measuring signal quality...\n" );
 465   1         if ( DRX_Ctrl( &demod, DRX_CTRL_SIG_QUALITY, &sigQuality ) != DRX_STS_OK )
 466   1         {
 467   2            XERROR("error retrieving signal quality (possibly demod out of lock)\n");
 468   2         }
 469   1         if ( DRX_Ctrl( &demod, DRX_CTRL_SIG_STRENGTH, &sigStrength ) != DRX_STS_OK )
 470   1         {
 471   2            XERROR("error retrieving signal strength\n");
 472   2         }
C51 COMPILER V8.02   EXAMPLE_FULL                                                          02/11/2009 09:41:00 PAGE 9   

 473   1      
 474   1      #if ( SHOW_SIGNAL_QUALITY_AS_FLOATS )
 475   1         XPRINTF( "\nMeasured values (floats) : \n" ); 
 476   1         XPRINTF( "BER(PreViterbi)  = %f\n" , 
 477   1                         ( (float) sigQuality.preViterbiBER  / (float) sigQuality.scaleFactorBER ) );
 478   1         XPRINTF( "BER(PostViterbi) = %f\n" , 
 479   1                         ( (float) sigQuality.postViterbiBER  / (float) sigQuality.scaleFactorBER ) );
 480   1         XPRINTF( "Packet Errors    = %d\n" , 
 481   1                         ( sigQuality.packetError ) );
 482   1         XPRINTF( "MER              = %f dB\n" , 
 483   1                         ( (float) sigQuality.MER / 10.0 ) );
 484   1         XPRINTF( "Signal Strength  = %f %%\n" ,
 485   1                         ( (float) sigStrength * 100.0 / 1023.0 ) );
 486   1      #endif
 487   1      
 488   1      #if ( SHOW_SIGNAL_QUALITY_AS_INTEGERS )
 489   1         XPRINTF( "\nMeasured values (integers) : \n" );
 490   1         XPRINTF( "BER(PreViterbi)  = %d.%6.6d\n" , 
 491   1                         (sigQuality.preViterbiBER/sigQuality.scaleFactorBER) ,
 492   1                         (sigQuality.preViterbiBER%sigQuality.scaleFactorBER) );
 493   1         XPRINTF( "BER(PostViterbi) = %d.%6.6d\n" ,
 494   1                         (sigQuality.postViterbiBER/sigQuality.scaleFactorBER) ,
 495   1                         (sigQuality.postViterbiBER%sigQuality.scaleFactorBER) );
 496   1         XPRINTF( "Packet Errors    = %d\n"           , sigQuality.packetError ); 
 497   1         XPRINTF( "MER              = %3d.%1.1d dB\n" , 
 498   1                         (sigQuality.MER/10) ,
 499   1                         (sigQuality.MER%10) );
 500   1         XPRINTF( "Signal Strength  = %4d (range 0 to 1023)\n" , 
 501   1                         sigStrength );
 502   1      #endif
 503   1      
 504   1      #if ( SHOW_SIGNAL_QUALITY_AS_INDICATORS )
 505   1         {
 506   2            u16_t indicatorQuality, indicatorStrength;
 507   2            
 508   2            /* map signal quality to a useful range from 0 to 100           */
 509   2            /* In this case, MER range from 8- to 28+ dB range is mapped    */
 510   2            indicatorQuality = 0;
 511   2            if ( sigQuality.MER > 80 )
 512   2            {
 513   3               indicatorQuality  = (sigQuality.MER - 80) / 2;
 514   3               if ( indicatorQuality > 100 )
 515   3               {
 516   4                  indicatorQuality = 100;
 517   4               }
 518   3            }
 519   2            
 520   2            /* map signal strength to a useful range from 0 to 100          */
 521   2            /* Depending on the hardware, this might need some midification */
 522   2            indicatorStrength = 100;
 523   2            if ( sigStrength < 1000 )
 524   2            {
 525   3               indicatorStrength = sigStrength/10;
 526   3            }
 527   2      
 528   2            XPRINTF("\nMeasured values (indicator mapping) : \n");
 529   2            XPRINTF( ("Signal Quality   = %3d %%\n") , indicatorQuality  );
 530   2            XPRINTF( ("Signal Strength  = %3d %%\n") , indicatorStrength );
 531   2         }
 532   1      #endif
 533   1      
 534   1         XWAITKEYPRESSED( "\nPress enter to terminate system.\n" );
C51 COMPILER V8.02   EXAMPLE_FULL                                                          02/11/2009 09:41:00 PAGE 10  

 535   1      
 536   1         /*-----------------------------------------------------------------------*/
 537   1         /* (7) Terminate system                                                  */
 538   1         /*-----------------------------------------------------------------------*/
 539   1      
 540   1         /* close demodulator */
 541   1         if ( DRX_Close( &demod ) != DRX_STS_OK )
 542   1         {
 543   2            XERROR("failure: error closing demodulator instance\n");
 544   2         }
 545   1         XPRINTF("DRX demodulator instance closed\n");
 546   1      
 547   1         /* terminate driver */
 548   1         if ( DRX_Term() != DRX_STS_OK )
 549   1         {
 550   2            XERROR("failure: error terminating DRX driver\n");
 551   2         }
 552   1         XPRINTF("DRX driver terminated\n");
 553   1      
 554   1         if ( DRXBSP_HST_Term() != DRX_STS_OK )
 555   1         {
 556   2            XERROR("failure: error terminating host bsp\n");
 557   2         }
 558   1         XPRINTF("Host bsp terminated\n");
 559   1      
 560   1         if ( DRXBSP_I2C_Term() != DRX_STS_OK )
 561   1         {
 562   2            XERROR("failure: error terminating i2c\n");
 563   2         }
 564   1         XPRINTF("I2C terminated\n");
 565   1      
 566   1         XWAITKEYPRESSED( "\nPress enter to quit.\n" );
 567   1         return 0;
 568   1      }
 569          
 570          
 571          /*============================================================================*/
 572          /* END OF FILE */
 573          

C51 COMPILATION COMPLETE.  0 WARNING(S),  2 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -