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();
}
}