This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2533:用于学习的红外信号捕获

Guru**** 2507495 points
Other Parts Discussed in Thread: CC2533

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/709717/cc2533-ir-signal-capture-for-learning

器件型号:CC2533

您好!

我正在使用 cc2533进行红外学习。 但我没有成功捕获任何数据…

我的 IR_IN 位于端口1引脚0上。

以下是我的初始化代码:

"

void initIR_Reception (void)(空)

//外设 I/O 控制

PERCFG |= 0x40;//P1.1 Timer1替代方法2

 

//第一优先级:定时器1通道0-1

P2DIR!= 0x80;

P2DIR &=~0x40;

  

//端口1功能选择

P1SEL |= BV (0);//外设

//端口1方向寄存器

P1DIR &=~(0x01);

//将定时器1的通道1设置为捕获模式4

T1CCTL1 |= BV (6);//在定时器1通道1上启用中断

T1CCTL1 &=~BV (2);//捕捉模式

T1CCTL1 |= BV (1)|BV (0);//在所有边沿上进行捕捉

P1IEN |= BV (0);//在 P1_1处启用中断

T1IE =1;

//清除计时器

//这将激活输出引脚,以便立即启动计时器。

T1CNTL = 0;

//防止睡眠

OSAL_pwrmgr_task_state (hal_taskID、1);

//(void) osal_set_event (hal_taskID、HAL_PWRMGR_HOLD_event);

//(void) osal_set_event (hal_taskID、HAL_PWRMGR_SAVE_EVENT);

我在进入 osal_start_system()之前调用此函数。

当出现中断时,应该调用 halProcessIrInterrupt()。

"

HAL_ISR_function (halKeyPort1Isr、P1INT_vector)

HAL_ENTER_ISR ();

disableKeypadInt();

if (((P1IFG & HAL_KEY_P1_INTERRUPT_Pins)!= 0x00)

     halProcessKeyInterrupt();

 

  #if HAL_KEY

    //清除中断标志

    P1IFG=(uint8)(~HAL_key_p1_interrupt_pins);//清除中断标志

    P1IF=0x00;

  #endif

否则(((P1IFG & HAL_IR_P1_INTERRUPT_Pins)!= 0x00)

     halProcessIrInterrupt();

 

  #if HAL_IR

    P1IFG =(uint8)(~HAL_IR_P1_INTERRUPT_Pins);

    P1IF = 0;

  #endif   

    

  //T1STAT =~0x02;//清除计时器1通道1

    //清除中断标志

    P1IFG=0x00;

    P1IF=0x00;

 

HAL_EXIT_ISR();

"

但它根本不起作用。

有人可以帮我吗?

提前感谢  您!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Emmanuelle、

    我们将对此进行研究。 由于假期、响应时间可能比平时长。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Emmanuelle、

    很抱歉耽误你的回答。  

    您可以使用随附的文件来开发您的项目。 (您可以将它们添加到 RemoTI-CC253xDK-1.3.1/Components/hal/target/CC2533ARC_RTM/ 文件夹中)。

    以下是一些代码片段可帮助您:

    1) 1)初始化:

    //“…”
    HIL_Init()
    HIT_Init()
    //…”
    

    2) 2)发送(来自存储器):

    //“…”
    //检查是否为此键存储了 IR 信号
    if (osal_SNV_read (nvItemId、sizeof (irSignalCompressed_t)、(uint8*) irSignal)== RTI_Success)
    {
    uint8全长= HIL_SizeOfCommedSignal (irSignal);
    //现在我们有了长度,用适当的长度读取它
    if (osal_SNV_read (nvItemId、长度、(uint8*) irSignal)== RTI_Success)
    {
    //解压缩信号
    IF (HIL_UncompresssSignal (irSignal)== true)
    {
    //发送此信号。
    HIT_transmit ((irSignal_t *) irSignal、state);
    }
    }
    
    //…” 

    3) 3)学习红外信号并将其存储在以下位置:

    //“…”
    //调用 HIL_块。
    HIL_GetSignalFromCarrier (irSignal、maximum_number_for_timing_pairs_TO_collect);
    
    HIL_ConsolidateSignal (irSignal);
    
    //压缩信号。 类型将从 irSignal_t 更改为 irSignalCompressed_t
    uint8 RetVal = HIL_CompressSignal (irSignal);
    
    if (RetVal = true)
    {
    uint8全长= HIL_SizeOfCommedSignal ((irSignalCompressed_t *) irSignal);
    
    //如果信号有效,则存储该信号。
    IF (长度> 0)
    {
    OSAL_SNV_WRITE (nvItemId、sizeof (irSignal_t)+长度、(uint8*) irSignal);
    }
    }
    否则
    {
    //失败,请重试。
    asm ("NOP");
    
    
    
    
    
    …#if (定义 HAL_IR_REUGENT)&&(定义 HAL_IR_transmit)&&(HAL_IR_transmit = true)//(重新)初始化用于 IR 生成的硬件*/ HIT_Init();#endif //(定义 HAL_IR_REGENT)&&(定义 HAL_IR_transmit)”/“”
    

    e2e.ti.com/.../hal_5F00_ir_5F00_learner.ce2e.ti.com/.../hal_5F00_ir_5F00_learner.he2e.ti.com/.../hal_5F00_ir_5F00_transmit.ce2e.ti.com/.../hal_5F00_ir_5F00_transmit.he2e.ti.com/.../hal_5F00_ir_5F00_common.h