关键流程设计
4 Dec 2024
初始化流程
CIR 模块的初始化流程如下:
-
释放 clock 和 reset 信号
-
设置噪声阈值,激活阈值,空闲阈值等底层配置
-
设置 TX-FIFO 和 RX-FIFO 的阈值
-
将所选择的 CIR 协议注册到 cir_raw_handler_list 链表
中断处理流程
CIR 模块使能 RX 的溢出中断、RXFIFO 可用中断、接收完成中断。
中断执行流程如下:
CIR 协议注册
CIR 的 driver 层驱动定义了一个全局链表 cir_raw_handler_list,在系统启动时,会根据 menuconfig 中所选择的红外协议进行注册,实际就是将红外协议添加到链表 cir_raw_handler_list,可将 NEC 和 RC5 协议同时注册到链表。应用层的代码通过 rt_device_control 设置将要使用的红外协议。在对数据进行编解码时,会查找 cir_raw_handler_list 链表上是否已注册要使用的红外协议,如已注册,则调用协议的编解码函数。