Edit online

功能描述

9 Aug 2024
Read time: 3 minute(s)

典型应用



1. CIR 接收器典型应用


2. CIR 发送器典型应用

功能实现

CIR 模块可以实现以下功能:
  • CIR_RX 接收器,可视为具有捕获功能的定时器。

    以 NEC 编码协议为例说明如下,当 CIR_RX 信号输入:

    • 若脉冲(高电平脉冲或低电平脉冲)宽度小于噪声阈值(NOSIE_THRES),则忽略 CIR_RX 信号。
    • 当脉冲保持某一电平持续时间满足启动阈值时 (ACTIVE_THRES),开始数据接收和存储。
    • 当脉冲保持某一电平持续时间满足空闲阈值时 (IDLE_THRES),本次接收结束,接收器产生 RXEND_INT 中断,并返回 Idle 空闲状态。
    • 在捕获过程中,CIR_RX 信号的每个有效高低电平脉冲,都将按照游程编码方式 (Run-Length Code, RLC)),以 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 中。

    • 载波发生器默认生成 38 KHz 载波,与转换得到的数字脉冲序列进行调制,输出调制信号 CIR_TX。

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

操作模式

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

CIR_RX 接收器操作模式
  • CIR_RX 接收器采样说明,以 NEC 协议、RC-5 协议为例:

    举例 1:假设采样时钟 38 KHz,即采样周期为 1/38 KHz = 26.3 us。
    • 对于 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:假设采样时钟 36 KHz,即采样周期为 1/36 KHz = 27.778 us。
    • 对于 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 =1 表示信号空闲状态下为高电平、激活状态下为低电平。RX_LEVEL =0 表示信号空闲状态下为低电平、激活状态下为高电平。

  • 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 发送器有两种发送模式,一种是非循环发送,另一种是循环发送。

    • 当 CIR_EN 置为 1 使能 CIR 模块时,发生器内部的时钟分频逻辑等开始动作,但只有 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. 数据定义