Edit online

功能描述

典型应用

1. CIR 接收器典型应用
2. CIR 发送器典型应用

功能实现

CIR 模块可以实现以下功能:
  • CIR_RX 接收器
    • 可视为具有捕获功能的定时器。以 NEC 编码协议为例,当 CIR_RX 信号输入,若脉冲(高电平脉冲或低电平脉冲)宽度小于噪声阈值(NOSIE_THRES)则将其忽略;脉冲保持某一电平持续时间满足启动阈值时(ACTIVE_THRES),开始数据接收、存储;当脉冲保持某一电平持续时间满足空闲阈值时(IDLE_THRES),本次接收结束,接收器产生 RXEND_INT 中断,并返回 Idle 空闲状态。
    • 在捕获过程中,CIR_RX 信号的每个有效高低电平脉冲,都将按照游程编码方式(RLC,Run-Length Code),以 Byte 为单位缓存到 RX_FIFO。RLC-Byte(8 位)编码方式为,MSB 位表示信号电平(高电平表示 1、低电平表示 0),其余 7 位以采样时钟(Sample Clock)为基本单位,表示脉冲宽度。当电平发生变化或脉冲宽度计数溢出时,RLC-Byte 将被缓存到 RX_FIFO,脉冲宽度计数最大 128,超出 128 时使用另一字节缓存。
    3. NEC 协议
  • CIR_TX 发送器
    • CIR 发送器可看作是具有载波调制功能的任意宽度波形发生器。发送器从 TX_FIFO 中读取连续的数据码(数据码可编程,以游程编码 RLC-byte 方式存储于 FIFO 中),通过格式及逻辑转换,数据码可变成特定宽度的数字脉冲序列。

    • 载波发生器默认生成 38KHz 载波,与转换得到的数字脉冲序列进行调制,输出调制信号 CIR_TX。载波发生器时钟源选择 APB_CLK,可通过高电平脉冲周期数(CARRIER_HIGH)和低电平脉冲周期数(CARRIER_LOW)配置载波频率和占空比,生成任意频率与宽度的数字波形,通过 TX_OUT_MODE(Transmit Out Mode),选择发送输出模式(默认为 0,调制输出)。

操作模式

采样时钟(Sample_CLK),APB 时钟经过 CIR_CLK 时钟寄存器分频配置得出,用于 RLC-Byte 表示脉冲宽度的基本单位。

  • CIR_RX 接收器

    • 举例 1:假设采样时钟 38KHz,即采样周期为 1/38KHz=26.3us。对于 NEC 协议逻辑 0,高低电平都持续 21 cycles,采样得到 2 个 RLC-Byte 分别为高电平 1001 0101(0x95)、低电平 0001 0101(0x15);对于 NEC 协议逻辑 1,高电平持续 21 cycles,低电平持续 64 cycles,采样得到 2 个 RLC-Byte 分别为高电平 1001 0101(0x95)、低电平 0100 0000(0x40),其中高位 bit7 表示电平极性,bit6: 0 表示脉冲宽度。

    • 举例 2:假设采样时钟 36KHz,即采样周期为 1/36KHz=27.778us。对于 RC-5 协议逻辑 0,高低电平都持续 32 cycles,采样得到 2 个 RLC-Byte 分别为高电平 1010 0000(0xA0)、低电平 0010 0000(0x20);对于 RC-5 协议逻辑 1,采样得到 2 个 RLC-Byte 分别为低电平 0010 0000(0x20)、高电平 1010 0000(0xA0),其中高位 bit7 表示电平极性,bit6: 0 表示脉冲宽度。

    • ACTIVE_THRES(Active Threshold,启动阈值):当 CIR 接收器模块处于 Idle 空闲状态,若 CIR_RX 信号电平发生变化,且持续时间达到该阈值,CIR 接收器模块认为这是一个有效激活码,将转变为 Active 状态,开始捕获 CIR_RX 信号。

    • NOISE_THRES(Noise Threshold,噪声阈值):CIR_RX 信号输入时,宽度小于该阈值的脉冲信号,被当作是无效短脉冲,都将被忽略。

    • IDLE_THRES(Idle Threshold,空闲阈值):若 CIR_RX 信号保持某一电平无变化,且持续时间达到该阈值,CIR 接收器模块进入 Idle 空闲状态并结束本次捕获。

    • RX_LEVEL:定义 RX 输入信号电平,默认 RX_LEVEL =0 表示信号空闲状态下为低电平、激活状态下为高电平;RX_LEVEL =1 表示信号空闲状态下为高电平、激活状态下为低电平。

    • RX_INVERT:RX 输入信号可配置是否翻转反相,默认 RX_INVERT=0,不反相

4. NEC 协议逻辑‘0’和逻辑‘1’
5. RC-5 协议逻辑‘0’和逻辑‘1’
6. Active Threshold 启动阈值
7. Noise Threshold 噪声阈值
8. Idle Threshold 空闲阈值
9. RX 输入信号电平选择
  • CIR_TX 发送器

    • TX_OUT_MODE:Transmit Out Mode,发送输出模式。选择是否调制输出。

    • CARRIER_HIGH 载波高电平脉冲周期数;CARRIER_LOW 载波低电平脉冲周期数;以 APB_CLK 为时钟,用于配置载波频率及占空比。

    • TX_MODE:Transmit Mode,发送模式。CIR 发送器有两种发送模式,一种是非循环发送,另一种是循环发送。

      • 当 TX_EN 置为 1 使能发送器时,发生器内部的时钟分频逻辑等开始动作,但只有 TX_START 为 1 时,发送器才会开始从 TX_FIFO 中读取数据。每读取一次 TX_FIFO,可以获得一字节数据。

      • 非循环发送,是将 TX_FIFO 中的数据全部发送出去,直至 FIFO 空。发送过程中,反馈 TX FIFO 空、满状态,软件可以在检测空满状态后是否继续往 FIFO 中填充数据。发送器结束工作产生发送结束中断,然后返回空闲状态,空闲状态默认发送的电平为最后数据脉冲电平。

      • 循环发送,是将 FIFO 中的数据全部发送出去,发送完之后等待一定时间之后恢复 FIFO 中的数据然后再次发送(即从第一个数据发送到最后一个数据,再从第一个发送到最后一个,依此类推)。

      • 在循环发送模式下,第 N 次和第 N+1 次之间会有空闲持续时间(即发送间隔时间,IDC_THRES)。

      • 直至检测到循环发送停止信号(CYC_TX_CTRL=0,循环发送停止,由开始到停止,FIFO 中所有数据必须被发送完,完成后产生发送结束中断。其中恢复 FIFO 中的数据是通过将 TX_FIFO 的读指针清零实现。

    • TX_STOP:Transmit Stop Control,发送停止控制。TX_STOP =1,循环发送停止,由开始到停止,FIFO 中所有数据必须被发送完。硬件发送完 FIFO 的数据后自动将该 bit 清 0。

    • IDC_THRES:Idle Duration Counter Threshold,空闲持续时间计数阈值(0~4095)。用于循环发送模式,当发送完 FIFO 中所有数据后,间隔多长时间才再次发送。循环发送间隔时间= IDC_THRES*128*Ttx_clk。

10. 数据定义