1.7. IR_DECODER
红外接收解码驱动,该驱动仅支持 NEC格式
1.7.1. ir_decoder_init
红外接收解码功能初始化。
原型:
void ir_decoder_init(const struct gptimer_config *gt_cfg);
参数:
gt_cfg
接收解码配置
返回值
无
1.7.2. ir_decoder_deinit
红外接收解码功能释放。
原型:
void ir_decoder_deinit();
参数:
返回值
无
1.7.3. ir_decoder_get_data
获取红外原始数据,未校验。
原型:
u32 ir_decoder_get_data(void);
参数:
返回值
data 4*8bit = (命令反码 + 命令码 + 地址反码 +地址码)
1.7.4. ir_decoder_get_command_value
获取红外命令码,已校验。
原型:
u32 ir_decoder_get_command_value(void);
参数:
返回值
ir_command
1.7.5. ir_decoder_get_command_value_uncheck
获取红外命令码,无校验。
原型:
u32 ir_decoder_get_command_value_uncheck(void);
参数:
返回值
ir_command
1.7.6. ir_decoder_get_address_value
获取红外地址码,已校验。
原型:
u32 ir_decoder_get_address_value(void);
参数:
返回值
ir_address
1.7.7. ir_decoder_get_address_value_uncheck
获取红外地址码,无校验。
原型:
u32 ir_decoder_get_address_value_uncheck(void);
参数:
返回值
ir_address
1.7.8. get_new_irkey_value
获取对应的键值。
原型:
u32 get_new_irkey_value(void);
参数:
返回值
键值 key
1.7.9. ir_decoder参考demo,也可参考 ir_encoder_decoder_demo.c 文件
const struct gptimer_config ir_decode_config = {
.capture.filter = 0,//38000, //一般的红外接收模块,硬件自带滤波
.capture.max_period = 110 * 1000, //110ms
.capture.port = PORTA,
.capture.pin = BIT(1),
.irq_cb = NULL,
.irq_priority = 3,
//根据红外模块的 idle 电平状态,选择边沿触发方式
/* .mode = GPTIMER_MODE_CAPTURE_EDGE_FALL, */
.mode = GPTIMER_MODE_CAPTURE_EDGE_RISE,
};
void ir_decoder_demo()
{
printf("ir_decoder_demo()\n");
ir_decoder_init(&ir_decode_config); //红外信号接收IO_PORTA_O1
u32 ir_key; //接收到的红外码
while (1) {
ir_key = ir_decoder_get_data();
if (ir_key != (u32) - 1) {
printf("ir_key:0x%x\n", ir_key);
}
udelay(5 * 100 * 1000);
wdt_clear();
}
}