Edit online

关键流程设计

4 Dec 2024

初始化流程

CIR 模块的初始化流程如下:

  1. 释放 clock 和 reset 信号

  2. 设置噪声阈值,激活阈值,空闲阈值等底层配置

  3. 设置 TX-FIFO 和 RX-FIFO 的阈值

  4. 将所选择的 CIR 协议注册到 cir_raw_handler_list 链表

中断处理流程

CIR 模块使能 RX 的溢出中断、RXFIFO 可用中断、接收完成中断。

中断执行流程如下:


interrupt_flow1

1. 中断执行流程

CIR 协议注册

CIR 的 driver 层驱动定义了一个全局链表 cir_raw_handler_list,在系统启动时,会根据 menuconfig 中所选择的红外协议进行注册,实际就是将红外协议添加到链表 cir_raw_handler_list,可将 NEC 和 RC5 协议同时注册到链表。应用层的代码通过 rt_device_control 设置将要使用的红外协议。在对数据进行编解码时,会查找 cir_raw_handler_list 链表上是否已注册要使用的红外协议,如已注册,则调用协议的编解码函数。