1.6. IR_ENCODER

红外编码发送驱动,该驱动仅支持 NEC格式

1.6.1. ir_encoder_init

红外发送功能初始化。

原型:

void ir_encoder_init(u32 gpio, u32 freq, u32 duty);

参数:

gpio

输出IO

freq

载波频率

duty

占空比,满量程10000, 例如5123, 51.23%

返回值

1.6.2. ir_encoder_deinit

红外发送功能释放。

原型:

void ir_encoder_deinit();

参数:

返回值

1.6.3. ir_encoder_tx

启动发送。

原型:

u32 ir_encoder_tx(u8 ir_addr, u8 ir_cmd, u8 repeat_en);

参数:

ir_addr

地址码

ir_cmd

命令码

repeat_en

1:使能重复码发送 0:只发送一次数据

返回值

1.6.4. ir_encoder_repeat_stop

重复码发送关闭,和 ir_encoder_tx(addr, cmd, 1) 配套使用。

原型:

void ir_encoder_repeat_stop();

参数:

返回值

1.6.5. ir_encoder参考demo,也可参考 ir_encoder_decoder_demo.c 文件

void ir_encoder_demo()
{
    printf("ir_encoder_demo()\n");
    ir_encoder_init(IO_PORTA_01, 38000, 3000); //红外信号输出IO_PORTA_01, 频率38000, 占空比30.00%
    /* ir_encoder_init(IO_PORTA_00, 38000, 10000); //红外信号输出IO_PORTA_00, 频率38000, 占空比100.00% */

    u8 addr = 0x4c; //设置红外地址 0x4c
    u8 cmd = 0x4a; //设置红外命令 0x4a
    u8 repeat_en = 1; //重复发送使能
    ir_encoder_tx(addr, cmd, repeat_en);
    udelay(2 * 1000 * 1000);
    ir_encoder_repeat_stop(); //停止发送
    gptimer_dump();
    while (1) {
        wdt_clear();
    }
}