红外收发器(IR)

支持的芯片[ RTL8721Dx ][ RTL8730E ][ RTL8721F ][ RTL8720F ]

概述

红外辐射(Infrared Radiation, IR)模块是一个用于红外发送和接收的控制器。它支持半双工通信,并具备红外信号的硬件调制和自动捕获功能。

工作模式

发送模式:基于硬件调制,通过 TX 端发送红外信号,可编程控制载波参数。

接收模式:支持 学习模式普通接收模式 两种工作方式,分别对应 红外二极管红外接收模块 作为硬件前端。

工作原理

信号模型

为简化红外信号的理解,将其分为以下符号类型:

  • 载波符号

    • 描述:在一定时间内包含 若干载波时钟周期 的信号。

    • 特性:在物理介质中 实际传播 的调制信号。

  • 空间符号

    • 描述:在一定时间内保持 连续高电平或低电平 的信号。

    • 特性:代表 调制前或解调后 的数字信号。

../../_images/ir_signal_model.svg

IR 信号模型

发送模式

信号发送原理

在发送模式中,通过以下配置确保信号的准确调制与传输:

  • 载波频率配置 :

    • 设定信号调制的基础频率,以提供稳定的传输性能。

  • 空间符号配置 :

    • 通过写入 TX FIFO 控制信号的高低电平持续时间,定义信号的空间符号。

两者共同决定最终的 信号输出波形 ,如图所示:

../../_images/ir_tx_flow.svg

TX 工作流程示意图

解析 TX FIFO 数据

TX FIFO 的数据为 32 位宽,包含以下信息:

字段

描述

参数含义

BIT[31]

是否发送载波

1:发送

0:不发送

BIT[30]

数据发送结束标志

1:最后一笔包

0:正常包

BIT[29:28]

补偿模式

0:不发送载波阶段

用系统时钟计算周期数

3:不发送载波阶段

使用指定的补偿频率计算周期数

1,2:不建议使用

BIT[27:0]

载波/无载波的周期数

按载波频率或补偿频率计数

其中,字段 BIT[27:0] 计算方式:

BIT[27:0] = fcarrier * Tduration

参数含义:

fcarrier:

载波频率(单位:赫兹)

Tduration:

载波或无载波符号的持续时间(单位:秒)

备注

  • 补偿机制:仅对 TX 计数 无载波阶段 有效

  • 补偿模式:不建议使用 mode1 或 mode2

组织 TX FIFO 数据

NEC 编码协议简介

NEC 编码协议格式由 2 个起始符号、64 个数据符号和 1 个停止符号组成。其中,

  • 逻辑 1 : 由 560us 的高电平信号与 (2250-560)us 的低电平信号构成

  • 逻辑 0 : 由 560us 的高电平信号与 (1120-560)us 的低电平信号构成

../../_images/ir_nec_protocol.svg

NEC 调制

下面以 NEC 编码协议,38KHz 的载波频率,补偿模式为 0 的设定为例,介绍如何组织写入 TX FIFO 的数据。

  • 传输逻辑 1

    应向 TX FIFO 写入以下两组数据:

Entry

BIT[31]

BIT[30]

BIT[29:28]

BIT[27:0]

First

1

0

0

38 * 560 / 1000 = 21

Second

0

0

0

38 * (1690 - 560) / 1000 = 63

  • 传输逻辑 0

    应向 TX FIFO 写入以下两组数据:

Entry

BIT[31]

BIT[30]

BIT[29:28]

BIT[27:0]

First

1

0

0

38 * 560 / 1000 = 21

Second

0

0

0

38 * (1120 - 560) / 1000 = 21

  • 停止传输

    为停止数据传输,应向 TX FIFO 的最后一个包中设置 BIT[30]=1,当前数据包仍会被发送。

Entry

BIT[31]

BIT[30]

BIT[29:28]

BIT[27:0]

First

1

1

0

38 * 560 / 1000 = 21

接收模式

信号接收原理

接收模块监测输入的高/低电平信号所持续的采样周期数,并存储在 RX FIFO 中供软件使用。

RX FIFO 的内容解析会因接收模式的不同而有所变化:

  • 学习模式

    • 输入信号包含载波。

    • IR 内核捕获 载波符号

    • 软件 需进行解调和解码 ,以提取信息,如载波频率和占空比。

  • 普通接收模式

    • 前端滤除了载波。

    • IR 内核 捕获空间符号

    • 无需进行软件解调 ,方便后续解析处理。

../../_images/ir_rx_modules.svg

RX 工作流程示意图——学习模式与普通接收模式对比

解析 RX FIFO 数据

RX FIFO 的数据为 32 位宽,包含以下两部分信息:

字段

描述

BIT[31]

接收到信号的电平状态

  • 1:高电平

  • 0:低电平

BIT[30:0]

信号在当前电平状态下,持续的采样时钟周期数

  • 与采样频率有关

例如,在采样率为 10MHz(时钟周期为 100ns)的条件下:

数据

RX FIFO 值

含义

Data 1

0X10001000

表示检测到约 409.6 μs 的高电平信号

Data 2

0X00A1644

表示检测到约 66.106 ms 的低电平信号

接收启动条件

  • 手动接收 : 允许手动控制接收过程。

  • 自动接收 :

    • 触发条件配置:

      • 上升沿、下降沿或任何信号变化。

    • 功能:

      • 在 RX 输入信号检测到配置的触发器时,硬件会自动开始接收过程。

接收终止条件

在满足预设的条件后,RX 模块将触发特定中断事件。

根据系统设计,可以在中断处理函数中直接关闭 IR,或者释放信号量以通知相应的线程完成对 IR 的关闭。

相关设置包括:

  • 终止接收信号的电平状态:

    明确哪些电平状态会触发接收停止。

  • 电平状态的持续时间要求:

    定义电平状态需要保持的最短时间以触发中断。

  • 启用 RX 计数器阈值中断:

    确保当检测到指定电平和持续时间后,RX 模块可以触发 IR_BIT_RX_CNT_THR_INT_STATUS 中断。

例如,以下配置会使得 RX 模块在检测到输入信号为 低电平状态持续时间不小于约 66.1ms 时,产生该中断事件

      /* 10MHz 的采样率 */
IR_InitStruct.IR_Freq = 10000000;

      /* 条件 1:电平信号状态 */
IR_InitStruct.IR_RxCntThrType = IR_RX_COUNT_LOW_LEVEL;

      /* 条件 2:电平信号持续时间的阈值,设置为 66.1ms 左右 */
IR_InitStruct.IR_RxCntThr = 0xa1644;

      /* 条件 3:使能 RX Counter 阈值中断 */
IR_INTConfig(IR_DEV, IR_BIT_RX_CNT_THR_INT_EN, ENABLE);

接收端载波问题

由于晶体管特性,在深度饱和区工作时响应速度会降低。

载波频率过高时,接收端可能无法正确接收载波波形。

接收学习中,最大可实现载波频率取决于接收电路和晶体管选择。

我们在 红外收发电路 中推荐的电路可支持最高 70kHz 载波频率,但可选用更优晶体管以获得更高支持频率。

原理图设计指南

漏电

为避免漏电问题,我们建议使用以下红外电路。

../../_images/circuit_of_ir.png

红外电路图

开发流程

发送

  1. 设置引脚

    • 详细参考 功能复用 部分,以确保正确的引脚连接

  2. 配置载波频率和占空比

    • 根据通信协议的需求等,进行正确配置

  3. 配置 TX FIFO

    • 用于控制空间符号的持续时间,用于硬件调制。

接收

  1. 设置引脚

    • 详细参考 功能复用 部分,以确保正确的引脚连接

  2. 配置采样频率

    • 以确保接收模块能够准确记录输入信号到 RX FIFO 中。

  3. 配置触发接收的方式

  4. 配置停止接收的条件

  5. 选择 RX FIFO 处理策略

  6. 关闭 IR

    • 在满足 step4 定义的终止接收条件时,关闭 IR 接收器。

应用示例

SDK 提供了以下功能示例,帮助开发者了解和使用 IR 功能:

备注

要了解示例支持的芯片,请查看示例路径下的 README.md 文件。

Raw API

IR Exported Types

struct IR_InitTypeDef

IR Init Structure Definition.

Public Members

u32 IR_Clock

Specifies the IR IP core Input clock.

u32 IR_Freq

Specifies the clock frequency. This parameter is IR carrier frequency whose unit is Hz. This parameter can be a value of IR Carrier Frequency

u32 IR_DutyCycle

Specifies the IR duty cycle.

u32 IR_Mode

Specifies the IR mode. This parameter can be a value of IR Mode

u32 IR_TxIdleLevel

Specifies the IR output level in Tx mode This parameter can be a value of IR Idle Level

u32 IR_TxInverse

Specifies inverse FIFO data or not in TX mode This parameter can be a value of IR Tx Data Level

u32 IR_TxFIFOThrLevel

Specifies TX FIFO interrupt threshold in TX mode. When TX FIFO depth <= threshold value, trigger interrupt. This parameter can be a value of IR Tx Threshold

u32 IR_TxCOMP_CLK

Specifies TX compensation clk. This CLK used when IR_Tx_DATA_TYPE = IR_TX_CLK_Self_Def.

u32 IR_RxStartMode

Specifies Start mode in RX mode This parameter can be a value of IR Rx Start Control

u32 IR_RxFIFOThrLevel

Specifies RX FIFO interrupt threshold in RX mode. When RX FIFO depth > threshold value, trigger interrupt. This parameter can be a value of IR Rx Threshold

u32 IR_RxFIFOFullCtrl

Specifies data discard mode in RX mode when RX FIFO is full and receiving new data This parameter can be a value of IR Rx FIFO Discard

u32 IR_RxTriggerMode

Specifies trigger in RX mode This parameter can be a value of IR Rx Auto Trigger Type

u32 IR_RxFilterTime

Specifies filter time in RX mode This parameter can be a value of IR Rx Filter Time

u32 IR_RxCntThrType

Specifies counter level type when trigger IR_INT_RX_CNT_THR interrupt in RX mode This parameter can be a value of IR Rx Count Level

u32 IR_RxCntThr

Specifies counter threshold value when trigger IR_INT_RX_CNT_THR interrupt in RX mode

typedef struct IR_InitTypeDef *PIR_InitTypeDef

IR Exported Constants

IR Carrier Frequency

/* Minimum IR carrier frequency in Hz. */
#define IR_TX_FREQ_HZ_MIN (25000)

/* Check if IR carrier frequency is valid. */
#define IS_IR_FREQUENCY ((F) >= IR_TX_FREQ_HZ_MIN)

IR Idle Level

/* TX idle output level is low. */
#define IR_IDLE_OUTPUT_LOW (0)

/* TX idle output level is high. */
#define IR_IDLE_OUTPUT_HIGH (1)

IR Mode

/* IR transmit mode. */
#define IR_MODE_TX (0)

/* IR receive mode. */
#define IR_MODE_RX (1)

/* Set IR mode field. */
#define IR_MODE ((MODE) & IR_BIT_MODE_SEL)

IR Rx Auto Trigger Type

/* RX triggered on falling edge. */
#define IR_RX_FALL_EDGE (0)

/* RX triggered on rising edge. */
#define IR_RX_RISING_EDGE (1)

/* RX triggered on both edges. */
#define IR_RX_DOUBLE_EDGE (2)

/* Check if IR Rx trigger edge value is valid. */
#define IS_IR_RX_TRIGGER_EDGE (((TRIGGER) == IR_RX_FALL_EDGE) || \
    ((TRIGGER) == IR_RX_RISING_EDGE) || \
    ((TRIGGER) == IR_RX_DOUBLE_EDGE))

IR Rx Count Level

/* Count threshold triggered on low level. */
#define IR_RX_COUNT_LOW_LEVEL (0)

/* Count threshold triggered on high level. */
#define IR_RX_COUNT_HIGH_LEVEL (1)

IR Rx FIFO Discard

/* Discard newest data when RX FIFO full. */
#define IR_RX_FIFO_FULL_DISCARD_NEWEST (1)

/* Discard oldest data when RX FIFO full. */
#define IR_RX_FIFO_FULL_DISCARD_OLDEST (0)

IR Rx INT Operation

/* Enable bits for all RX interrupts. */
#define IR_RX_INT_ALL_EN ((u32)0x0000003F)

/* Clear bits for all RX interrupts. */
#define IR_RX_INT_ALL_CLR ((u32)0x0000003F)

/* Mask bits for all RX interrupts. */
#define IR_RX_INT_ALL_MASK ((u32)0x000FC000)

/* Check if RX interrupt mask value is valid. */
#define IS_RX_INT_MASK (((MASK) & (~IR_RX_INT_ALL_MASK)) == 0)

/* Check if RX interrupt enable value is valid. */
#define IS_RX_INT (((MASK) & (~IR_RX_INT_ALL_EN)) == 0)

/* Check if RX interrupt clear value is valid. */
#define IS_RX_INT_CLR (((MASK) & (~IR_RX_INT_ALL_CLR)) == 0)

IR Rx Start Control

/* RX manual start mode. */
#define IR_RX_MANUAL_MODE (0)

/* RX auto trigger start mode. */
#define IR_RX_AUTO_MODE (1)

IR Rx Threshold

/* IR RX FIFO depth in entries. */
#define IR_RX_FIFO_SIZE (32)

IR Tx Data Level

/* Normal data, normal carrier output. */
#define IR_TX_DATA_NORMAL_CARRIER_NORMAL (0)

/* Normal data, inverted carrier output. */
#define IR_TX_DATA_NORMAL_CARRIER_INVERSE (1)

/* Inverted data, normal carrier output. */
#define IR_TX_DATA_INVERSE_CARRIER_NORMAL (2)

/* Inverted data, inverted carrier output. */
#define IR_TX_DATA_INVERSE_CARRIER_INVERSE (3)

/* Set TX data type and carrier inversion bits. */
#define IR_TX_DATA_TYPE_SET ((u32)(((x) << 13) & (IR_BIT_TX_OUTPUT_INVERSE | IR_BIT_TX_DE_INVERSE)))

IR Tx INT Operation

/* Mask bits for all TX interrupts. */
#define IR_TX_INT_ALL_MASK ((u32)0x0000002C)

/* Enable bits for all TX interrupts. */
#define IR_TX_INT_ALL_EN ((u32)0x00000013)

/* Clear bits for all TX interrupts. */
#define IR_TX_INT_ALL_CLR ((u32)0x0000000E)

/* Check if TX interrupt mask value is valid. */
#define IS_TX_INT_MASK (((MASK) & (~IR_TX_INT_ALL_MASK)) == 0)

/* Check if TX interrupt enable value is valid. */
#define IS_TX_INT (((MASK) & (~IR_TX_INT_ALL_EN)) == 0)

/* Check if TX interrupt clear value is valid. */
#define IS_TX_INT_CLR (((MASK) & (~IR_TX_INT_ALL_CLR)) == 0)

IR Tx Threshold

/* IR TX FIFO depth in entries. */
#define IR_TX_FIFO_SIZE (32)

IR Rx Filter Time

RTL8721Dx:
/* RX glitch filter time 50 ns. */
#define IR_RX_FILTER_TIME_50NS (0)

/* RX glitch filter time 75 ns. */
#define IR_RX_FILTER_TIME_75NS (1)

/* RX glitch filter time 100 ns. */
#define IR_RX_FILTER_TIME_100NS (2)

/* RX glitch filter time 125 ns. */
#define IR_RX_FILTER_TIME_125NS (3)

/* RX glitch filter time 150 ns. */
#define IR_RX_FILTER_TIME_150NS (4)

/* RX glitch filter time 175 ns. */
#define IR_RX_FILTER_TIME_175NS (5)

/* RX glitch filter time 200 ns. */
#define IR_RX_FILTER_TIME_200NS (6)

/* RX glitch filter time 225 ns. */
#define IR_RX_FILTER_TIME_225NS (7)

IR Exported Functions

void IR_ClearINTPendingBit(IR_TypeDef *IRx, u32 IR_CLEAR_INT)

Clear the IR interrupt pending bits.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • IR_CLEAR_INT --

    Specifies the interrupt pending bit to clear. This parameter can be any combination of the following values:

    • IR_TX_FIFO_EMPTY_INT_CLR: Clear TX FIFO empty interrupt.

    • IR_TX_FIFO_LEVEL_INT_CLR: Clear TX FIFO threshold interrupt.

    • IR_TX_FIFO_OVER_INT_CLR: Clear TX FIFO overflow interrupt.

    • IR_RX_FIFO_FULL_INT_CLR: Clear RX FIFO full interrupt.

    • IR_RX_FIFO_LEVEL_INT_CLR: Clear RX FIFO threshold interrupt.

    • IR_RX_CNT_OF_INT_CLR: Clear RX counter overflow interrupt.

    • IR_RX_FIFO_OF_INT_CLR: Clear RX FIFO overflow interrupt.

    • IR_RX_CNT_THR_INT_CLR: Clear RX counter threshold interrupt.

    • IR_RX_FIFO_ERROR_INT_CLR: Clear RX FIFO error read interrupt. Trigger when RX FIFO empty and read RX FIFO.

void IR_ClearRxFIFO(IR_TypeDef *IRx)

Clear IR RX FIFO.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

void IR_ClearTxFIFO(IR_TypeDef *IRx)

Clear IR TX FIFO.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

void IR_Cmd(IR_TypeDef *IRx, u32 mode, u32 NewState)

Enable or disable the selected IR mode.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • mode --

    Selected IR operation mode. This parameter can be the following values:

    • IR_MODE_TX: Transmission mode.

    • IR_MODE_RX: Receiving mode.

  • NewState -- New state of the operation mode. This parameter can be: ENABLE or DISABLE.

void IR_DeInit(void)

Deinitialize the IR peripheral registers to their default values.

u32 IR_FSMRunning(IR_TypeDef *IRx)

Get the specified IR FSM status.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

返回:

The current state of the FSM:

  • TRUE: RUN

  • FALSE: IDLE

u32 IR_GetIMR(IR_TypeDef *IRx)

Get the IR interrupt mask status.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

返回:

The interrupt mask register value.

u32 IR_GetINTStatus(IR_TypeDef *IRx)

Get the IR interrupt status.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

返回:

The interrupt status register value.

u32 IR_GetRxDataLen(IR_TypeDef *IRx)

Get data size in RX FIFO.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

返回:

Current data size in RX FIFO.

u32 IR_GetTxFIFOFreeLen(IR_TypeDef *IRx)

Get free size of TX FIFO.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

返回:

The free size of TX FIFO

void IR_INTConfig(IR_TypeDef *IRx, u32 IR_INT, u32 newState)

Enable or disable the specified IR interrupts.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • IR_INT --

    Specifies the IR interrupts sources to be enabled or disabled. This parameter can be the following values:

    • IR_TX_FIFO_EMPTY_INT_EN: TX FIFO empty interrupt.

    • IR_TX_FIFO_LEVEL_INT_EN: TX FIFO threshold interrupt.

    • IR_TX_FIFO_OVER_INT_EN: TX FIFO overflow interrupt.

    • IR_RX_FIFO_FULL_INT_EN: RX FIFO full interrupt.

    • IR_RX_FIFO_LEVEL_INT_EN: RX FIFO threshold interrupt.

    • IR_RX_CNT_OF_INT_EN: RX counter overflow interrupt.

    • IR_RX_FIFO_OF_INT_EN: RX FIFO overflow interrupt.

    • IR_RX_CNT_THR_INT_EN: RX counter threshold interrupt.

    • IR_RX_FIFO_ERROR_INT_EN: RX FIFO error read interrupt. Trigger when RX FIFO empty and read RX FIFO.

  • newState -- New state of the specified IR interrupts. This parameter can be: ENABLE or DISABLE.

void IR_Init(IR_TypeDef *IRx, IR_InitTypeDef *IR_InitStruct)

Initialize the IR peripheral according to the specified parameters in the IR_InitStruct.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • IR_InitStruct -- Pointer to a IR_InitTypeDef structure that contains the configuration information for the specified IR peripheral

void IR_MaskINTConfig(IR_TypeDef *IRx, u32 IR_INT, u32 newState)

Mask or unmask the specified IR interrupts.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • IR_INT --

    Specifies the IR interrupts sources to be mask or unmask. This parameter can be the following values:

    • IR_BIT_TX_FIFO_EMPTY_INT_MASK: TX FIFO empty interrupt mask.

    • IR_BIT_TX_FIFO_LEVEL_INT_MASK: TX FIFO threshold interrupt mask.

    • IR_BIT_TX_FIFO_OVER_INT_MASK: TX FIFO overflow interrupt mask.

    • IR_BIT_RX_FIFO_FULL_INT_MASK: RX FIFO full interrupt mask.

    • IR_BIT_RX_FIFO_LEVEL_INT_MASK: RX FIFO threshold interrupt mask.

    • IR_BIT_RX_CNT_OF_INT_MASK: RX counter overflow interrupt mask.

    • IR_BIT_RX_FIFO_OF_INT_MASK: RX FIFO overflow interrupt mask.

    • IR_BIT_RX_CNT_THR_INT_MASK: RX counter threshold interrupt mask.

    • IR_BIT_RX_FIFO_ERROR_INT_MASK: RX FIFO error read interrupt mask. Trigger when RX FIFO empty and read RX FIFO.

  • newState -- New state of the specified IR interrupts. This parameter can be: ENABLE or DISABLE.

void IR_ReceiveBuf(IR_TypeDef *IRx, u32 *pBuf, u32 len)

Read data From RX FIFO.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • pBuf -- Buffer address to receive data.

  • len -- Read data length.

u32 IR_ReceiveData(IR_TypeDef *IRx)

Read one data.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

返回:

Data which is read from RX FIFO.

void IR_SendBuf(IR_TypeDef *IRx, u32 *pBuf, u32 len, u32 IsLastPacket)

Send data.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • pBuf -- Data buffer to send.

  • len -- Buffer length.

  • IsLastPacket --

    This parameter can be the following values:

    • ENABLE: The last data in IR packet and there is no continous data.In other words, An infrared data transmission is completed.

    • DISABLE: There is data to be transmitted continuously.

void IR_SendData(IR_TypeDef *IRx, u32 data)

Send one data.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • data -- Send data.

void IR_SetRxCounterThreshold(IR_TypeDef *IRx, u32 IR_RxCntThrType, u32 IR_RxCntThr)

Configure counter threshold value in receiving mode.You can use it to stop receiving IR data.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • IR_RxCntThrType --

    This parameter can be the following values:

    • IR_RX_COUNT_LOW_LEVEL: Low level counter value >= IR_RxCntThr, trigger IR_INT_RX_CNT_THR interrupt.

    • IR_RX_COUNT_HIGH_LEVEL: High level counter value >= IR_RxCntThr, trigger IR_INT_RX_CNT_THR interrupt.

  • IR_RxCntThr -- Configure IR Rx counter threshold value which can be 0 to 0x7fffffffUL.

void IR_SetRxThreshold(IR_TypeDef *IRx, uint8_t thd)

Set Rx threshold. When RX FIFO depth > threshold value, trigger interrupt.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • thd -- Rx threshold.

void IR_SetTxThreshold(IR_TypeDef *IRx, uint8_t thd)

Set Tx threshold. When TX FIFO depth <= threshold value, trigger interrupt.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

  • thd -- Tx threshold.

void IR_StartManualRxTrigger(IR_TypeDef *IRx)

Start trigger only in manual receive mode.

参数:
  • IRx -- Pointer to an IR peripheral instance, can be IR_DEV

void IR_StructInit(IR_InitTypeDef *IR_InitStruct)

Fill each IR_InitStruct member with its default value.

参数:
  • IR_InitStruct -- Pointer to an IR_InitTypeDef structure which will be initialized.