Camera | 2.MIPI、CSI基础

这篇具有很好参考价值的文章主要介绍了Camera | 2.MIPI、CSI基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

瑞芯微专栏

上一篇我们讲解了camera的一些基础概念和知识。
我们说了,现在的手机由于高分辨率的要求,现在基本上都是基于MIPI、CSI协议来实现的,
本篇讲解MIPI、CSI的一些基础知识。
spi camera,瑞芯微,原创,linux,camera

摄像头常用术语

下面这些术语是camera驱动中经常用到的缩略语。

AE(Auto Exposure):自动曝光。
AF(Auto Focus)   :自动对焦。
AWB(Auto White Balance):自动白平衡。
3A  :指自动曝光(AE)、自动对焦(AF)和自动白平衡(AWB)算法。
Async Sub Device:在Media Controller结构下注册的V4L2异步子设备,例:Sensor、MIPI DPHY。
Bayer Raw(或Raw Bayer)  :Bayer是相机内部的原始图片,一般后缀为.raw。.raw格式内部的存储方式有:RGGB、BGGR、GRBG等。
CIF     :Rockchip芯片中的VIP模块,接收Sensor数据并保存到内存中,仅转存数据,无ISP功能。
DVP(Digital Video Port)  :一种并行数据传输接口。
Entity  :Media Controller架构下的各节点。
Frame   :帧。
HSYNC   :行同步信号,HSYNC有效时,接收到的信号属于同一行。
IOMMU(Input Output Memory Management Unit):Rockchip芯片中的IOMMU模块,用于将物理上分散的内存页映射成CIF、ISP可见的连续内存。
IQ(Image Quality) :指为Bayer Raw Camera调试的IQ xml,用于3A tunning。
ISP(Image Signal Processing) :图像信号处理。
Media Controller :Linux内核中的一种媒体框架,用于拓扑结构的管理。
MIPI-DPHY     :Rockchip芯片中符合MIPI-DPHY协议的控制器。
MP(Main Path):Rockchip芯片ISP驱动的一个输出节点,一般用来拍照和抓取Raw图。
PCLK(Pixel Clock) :指Sensor输出的Pixel Clock。
Pipeline          :Media Controller架构的各Entity之间相互连接形成的链路。
SP(Self Patch)    :Rockchip芯片ISP驱动的一个输出节点。
V4L2(Video4Linux2)   :指Linux内核的视频处理模块。
VICAP(Video Capture) :视频捕获。
VIP(Video Input Processor):在Rockchip芯片中,曾作为CIF的别名
VSYNC  :场同步信号,VSYNC有效时,接收到的信号属于同一帧。

一、基础概念

1. MIPI

MIPI:移动产业处理器接口(Mobile Industry Processorinterface)
是MIPI联盟发起的为移动应用处理器制定的开放标准。
spi camera,瑞芯微,原创,linux,camera
MIPI官网

https://www.mipi.org

MIPI联盟
即移动产业处理器接口(MIPI)联盟,由美国德州仪器(TI)、 意法半导体(ST)、 英国ARM和芬兰诺基亚(Nokia)4家公司共同成立, 旨在定义并推广用于移动应用处理器接口的开放标准。

2. CSI

MIPI-CSI-2协议是MIPI联盟协议的子协议,专门针对摄像头芯片的接口而设计。

由于其高速,低功耗的特点,MIPI-CSI2协议极大的支持了高清摄像头领域的发展.

正是由于它的普及,手机上五百万像素的摄像头才得以变为前置摄像头,该类接口技术主要掌握在日本东芝,韩国三星以及美国豪威三家公司。

spi camera,瑞芯微,原创,linux,camera

  1. CSI协议有两个版本协议,分别为CSI-2和CSI-3;
  2. CSI-2协议遵循的物理标准有两个,分别为C-PHY和D-PHY;
  3. CSI-3协议的物理标准对应M-PHY,且应用层协议栈还需要连接Uni-Pro层。

D-PHY与C-PHY区别:
从实用角度来看,主要是数据线和时钟线的区别,还有传输速率,C-PHY通过某些技术改良,使数据传输速度更快。
spi camera,瑞芯微,原创,linux,camera

瑞芯微3568用的CSI-2 && D-PHY

所以内核中,我们会看到CSI2 和 D-PHY相关代码。

二、MIPI协议

MIPI并不是一个单一的接口或协议,而是包含了一套协议和标准,以满足各种子系统独特的要求。MIPI的标准异常复杂,包含非常多的应用领域。
spi camera,瑞芯微,原创,linux,camera

由上图可得:

  1. 显示设备采用的DSI协议
  2. 摄像头采用的CSI协议
  3. RF IC采用的DigRF协议
  4. 存储设备采用的UFS

1. DCS(Display Command Set)

用于显示模块命令模式下的标准化命令集;

2. DBI, DPI (Display Bus Interface, Display Pixel Interface)

DBI:与具有显示控制器和帧缓冲器的显示模块的并行接口。
DPI:与显示模块的并行接口,不带显示控制器或帧缓冲器。

3. DSI, CSI (Display Serial Interface, Camera Serial Interface)

DSI:主机处理器与显示模块之间的高速串行接口;
CSI:主机处理器与摄像头模块之间的高速串行接口;

4. D-PHY

为DSI(显示屏)和CSI-2(摄像头)提供物理层通路定义。

5. M-PHY

为DigRF、CSI-3、UFS、LLI、SSIC、M-PCIE提供物理层通路定义。

目前比较成熟的接口应用有DSI(显示接口),和CSI(摄像头接口),都具有比较复杂的协议结构,下图表示某一个SOC可以作为一个CSI的接收器,同时也可以作为一个DSI的输出器。

spi camera,瑞芯微,原创,linux,camera

其物理层使用到了D-PHY,目前新的物理层C-PHY也逐渐被采用,我们常说的Camera I2C接口在MIPI中有专门的一个CCI(Camera Control Interface)来对应。

三、CSI

根据层级,CSI协议分为五层:

spi camera,瑞芯微,原创,linux,camera

名称 解释
Application 应用层 处理原始图像数据的各种算法模块
Packing Formats 组包层 负责将数据按照一定的次序,切割成8bite数据
Low Level Protocaol 协议层 为新生成的数据加上爆头包尾,形成符合协议要求的数据流
Lane Management 通道管理层 将生成的数据流按照一定次序和要求,进行读写管理,输出数据流
PHY Layer PHY层 生成MIPI最后的信号波形
Pixel 像素数据 经过图像模块处理过的数据流,或者原始的图像数据流
Data 传输数据 经过MIPI模块切割或者加上包头包尾数据
Control 控制信号 模块间的控制数据流
Transmitter 发送端 包括了MIPI数组部分,转接板等实现MIPI信源传输的部分
Receiver 接收端 包括了转接板和商用接收端模块,负责解析收到的MIPI信源

工作顺序:

  1. 将原始的图像数据在应用层做相应的图像处理,包括白平衡/噪声去除和色彩还原等;
  2. 将处理的数据进入组包层做数据分割以及重组,然后将其传输给底层协议层;
  3. 底层协议层会根据数据类型产生包头,根据数据内容产生构成包围的校验序列,再将包头、数据本身和包尾组成起来发送给通道管理层;
  4. 通道管理层模块按照通道的选通情况,合理分配数据到每个通道,之后数据经过数模转换进入到物理层传输;
  5. 接收端在收到物理层数据后,再按照之前的逆序解包出原始的图像数据。

1. 应用层(Application Layer)

该层主要用于不同场景对数据的处理过程,对于发送方,多为camera生成数据,对于接收方,多为SOC对数据进行处理。

2. 协议层(Protocol Layer)

CSI-2协议可以使用SOC上的一个物理接口实现多条数据流的传输。协议层规定了如何对多条数据流进行标记和交织,从而使每条数据流能够正确地重建。

1)像素字节转换层(Pixel/Byte Packing/Unpacking Layer)

CSI-2能够支持多种多样的像素格式,对于发送方,在数据发送之前,需要根据像素格式,将像素数据转换为对应的字节流;对于接收方,在将数据提供给应用层之前,需要将字节流数据转换为像素数据。

2)低级协议层(Low Level Protocol)

LLP指的是SoT与EoT之间的数据包字节流协议,LLP的最小单元为字节。

3)Lane管理器(Lane Management)

为了适应不同场景下对带宽的要求,CSI-2规定了Lane的数量是可拓展的。因此,在面临多Lane同时传输时,发送方需要对字节流进行公平分流(distributor),接收方则需要对多Lane数据进行合并(merger)。

3. 物理层(PHY Layer)

PHY层指定了传输媒介,在电气层面从串行bit流中捕捉“0”与“1”,同时生成SoT与EoT等信号。
CSI的硬件部分包括C-PHY、D-PHY,实际上使用的主要是D-PHY。

四、物理层 DPHY

D-PHY 描述了一同步、高速、低功耗、低代价的PHY。

D-PHY的最初版本设计目标是500M bits/s,而D是罗马数字的500,故而叫D-PHY。

1. D-PHY规范的2.0版的标准:

  • 在高速模式下的同步传输,比特率为80-2300Mb/s,具体取决于设备和速度等级;
  • TX经典配置为一个时钟Lane和最多四个数据Lane组成;
  • Rx经典配置为一个时钟Lane和最多八个数据Lane组成;
  • 在低功率模式下的异步传输,比特率为10Mb/s;
  • 物理协议接口(PPI)连接CSI-2和DSI的应用;
  • 可选的AXI4-Lite接口,可进行注册访问。

spi camera,瑞芯微,原创,linux,camera

上图表明使用DPHY作为物理层时,Camera与SOC之间的硬件关系。

MIPI CSI设备由两部分构成,分别为CCI(Camera Control Interface)和CSI(Camera Serial Interface)。

  • CCI:摄像头控制接口。(在MIPI中,充当着控制接口的作用,提供mipi接口sensor的控制传输通道)
  • CSI:主机处理器与摄像头模块之间的高速串行接口(传输图像数据)。
  1. SOC的CCI组件通过I2C完成对Camera的配置,使其输出mipi信号
  2. 其中一对Clock+/-则由Clock Lane标示,
  3. 一对DataNBA+/-则由Data Lane标示。

两个Lane的 PHY配置如下图 :

spi camera,瑞芯微,原创,linux,camera

2. CCI (Camera Control Interface)

CCI是一个双线、双向、半双工、串行接口。是I2C协议的子集,与I2C基本一致。

CCI是兼容I2C接口的快速模式变体。CCI应支持400kHz操作和7位从属寻址。

对于那些只支持RAW Bayer输出格式的摄像头,其CCI地址必须为011011xb(x=0,1);对于其他的摄像头,其CCI地址必须为011110xb。

CCI可选择支持速率: 1Mbps (Fm+), 12.5Mbps (SDR), or 25Mbps (DDR).

CCI接口命名如下:

  • CCI (I2C) : CCI 支持I2C
  • CCI (I3C) :CCI 支持I3C
  • CCI (I3C SDR) :CCI 支持I3C SDR
  • CCI (I3C DDR) :CCI 支持I3C DDR
  • CCI :表示同时支持 CCI (I2C) 和CCI (I3C).

3. DPHY工作于两种工作模式:

  • HS(High Speed Mode)
    这种模式用于传输高速的数据信号,如视频流;高速模式下,每对Lane都是工作在低电压摆幅的差分状态下,数据速率为80Mbps到1500Mbps。
  • LP(Low Power Mode)
    这种模式则可以用来传输控制信号;低速模式下,每对lane的2根导线都转变为单端状态,数据速率为10Mbps。

spi camera,瑞芯微,原创,linux,camera

上图为单个Lane模块的内部组成,包含了CIL(Lane控制器与借口逻辑器),LP驱动器,HS驱动器,LP冲突检测。

CIL负责控制各个驱动器的工作状态,使得Dp、Dn的工作状态可以在HS与LP之间进行切换。

spi camera,瑞芯微,原创,linux,camera
处于HS模式下,差分信号电平摆幅约为200mV;处于LP模式下,单端信号电平摆幅约为1.2V。
在LP模式下,根据各个Line的电平可以确定当前Lane的State。

Data Lane差分线电平的高低表明了当前处于何种状态,发送方通过驱动差分线一系列的状态变化,进入不同的工作模式。

  • Burst Mode:
    High-Speed下的唯一模式,高速数据传输模式,此时各个Lane的Line工作在差分模式
  • Control Mode:
    Low Power下的一种模式,可以通过变化不同的state进入其他模式。
  • Escape Mode:
    Low Power下的特殊模式,在这种模式下可以使用一些特别的功能。

4. CSI-2数据帧格式

CSI-2的数据包有两种:长帧和短帧。无论长帧还是短帧,帧开头都是SoT,帧结尾都是EoT。在两次HS传输过之间,插入的是LP状态,一般是LP11等Control状态,当然也可以进入Escape状态、进入LPDT或者是进入UPLS。
spi camera,瑞芯微,原创,linux,camera

1) 长帧结构如下

以DPHY为例来分析具体的协议格式,DPHY长包主要由包头、包负载、包尾三部分组成,具体如下图:
spi camera,瑞芯微,原创,linux,camera

长帧包括32bit的包头(Packet Head,PH)、有效数据填充以及16bit的包尾(Packet Foot,PF)。

  • PH包括:

数据标识(Data Identity,DI):1个字节,包括VC(Victual Channel)低两位和DT(Data Type)的低六位;
数据计数(Word Count,WC):2个字节。从PH结尾到PF的开头中间的填充数据的长度,单位为字节。接收端通过WC来判断报的结尾位置。
错误检测(ECC):1个字节。包括VC的高两位,与DI中的VC低两位构成4bit虚拟通道标识;低6位为纠错码,采用Hamming(汉明码)的方式,用来纠正PH中一位的错误或者发现两位的错误;

  • 有效数据填充:
    长度=WC*8bit。低位在前,对内容没有任何限制(0~65535字节)。

  • PF包括:
    检验(CHECKSUM):两个字节。低位在前,CHECKSUM采用CCITT的16-bit的CRC校验,即X16+X12+X5+X0。CRC只能检测出一个或多个错误,并不能纠正错误。

2) 短帧结构如下:

DI:1个字节,包括VC的低两位,和DT(5:0);spi camera,瑞芯微,原创,linux,camera

短包数据域:2个字节,如果该短帧为Data Type的帧同步(Frame Synchronization),则数据域表示帧数;如果短帧的Data Type为行同步(Line Synchronization),则数据域表示行数。

错误检测(ECC):1个字节,包括VC的高两位和六位纠错码。

  • 数据类型
    数据类型表明了负载数据的格式和内容,上文提到,根据长短包的不同,数据类型共有8种不同的分类。短包数据类型的详细信息在上文已经介绍了,这里说明下长包的5种数据类型,详见下表:

spi camera,瑞芯微,原创,linux,camera

数据类型举例:

比如YUV420格式:
4:2:0表示2:1的水平取样,垂直2:1采样(每四个Y共用一组UV分量)
数据格式如图所示:

spi camera,瑞芯微,原创,linux,camera

关于DPHY层,我们并不需要关注太多,就像网卡的PHY层一样,我们只需要知道,通过CCI接口发送配置信息给Camera,通过CSI接口传输数据。

五、MIPI协议在手机中应用

1. mipi插槽

spi camera,瑞芯微,原创,linux,camera

MIPI摄像头:
spi camera,瑞芯微,原创,linux,camera

通常手机不会设计这个扩展槽,一般都会直接在板子上预留小的排线接口,直接将摄像头模组插上去即可。

2. MIPI接口的手机内部功能框图

在手机内部,各个部件与MIPI协议栈的关系如下图:
spi camera,瑞芯微,原创,linux,camera

其中摄像头通过CSI与处理器相连。

我们再细化下摄像头与cpu的模块图【以瑞芯微rk3568为例】:

spi camera,瑞芯微,原创,linux,camera

MIPI接口在系统的实现如上图所示,

  1. 通常一个camera的模组如图所示,通常包括Lens、Sensor、CSI接口等,其中CSI接口用于视频数据的传
    输;
  2. SoC的Mipi接口对接Camera,并通过I2C/SPI控制camera模组;
  3. MIPI DPHY提供了4 Lane的Rx接口,由Sensor提供Clock,并通过四条数据Lane输入图像数据;
  4. DPHY与CSI-2 Host Contrller之间通过PPI(PHY-Protocol Interface)相连,该接口包括了控制,数据,时钟等多条信号
  5. CSI-2 Host Contrller通过PPI接口收到数据后进行解析,完成后通过IDI(Image Data Interface)或者IPI(Image Pixel Interface)输出到SoC的其他模块(VICAP或ISP,rk3568是送至VICAP模块);
  6. ISP将处理过的图片输出到MP主通道或SP自身通道,SP一般用来预览图片,SP图片的最大分辨率比MP低;
  7. SoC通过APB Slave总线控制CSI-2 Host Contrller的相关寄存器。
ISP含义

ISP(Image Signal Processor),即图像信号处理器,用于处理图像信号传感器输出的图像信号。

它在相机系统中占有核心主导的地位,是构成相机的重要设备。ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。

瑞芯微rk3568平台的ISP2.1 处理图像数据的基本流程如下:
spi camera,瑞芯微,原创,linux,camera

ISP 包括:

  • MIPI serial camera interface(MIPI)
  • RAW Processing
  • RGB Processing
  • YUV Processing
  • Memory Interface(MI)

MI接口如下:
spi camera,瑞芯微,原创,linux,camera

一般抓图的顺序:

  1. 摄像头的初始化(输出格式、分辨率、输出速率)
  2. 使能摄像头接入主控板卡中的物理通道
  3. 使能主控板卡中的ISP(图像信号处理模块)、并让ISP知道当前有效接入的摄像头是哪一个(因为可以多个接入,但只能一个有效)。
  4. 告诉ISP输进来的数据如何处理(颜色空间转换、缩放、裁剪、旋转等)、经由那个通道输出到内存/显存(MP主通道、SP自身通道)。
  5. 输出到内存

3. Camera-OV13850内部结构

下面看一款摄像头模组OV13850的内部结构图:
spi camera,瑞芯微,原创,linux,camera

定时脉冲发生器输出时钟来访问成像阵列的行,预先填充电荷并且按顺序对数组的行进行采样。

在预先填充电荷和采样的时间间隔内,每个像素点的电荷曝光时减少入射光。

这是在滚动快门的体系结构的曝光时间。

曝光时间通过调整预先填充电荷和采样之间的时间间隔控制。

在每一行的像素数据采样后,通过模拟电路(AMP)进一步处理:纠正偏移量和将数据乘以相应的增益。

模拟处理后通过10位ADC的输出数组中的每个像素的数据。

ISP(image sensor processor)通过图像输出接口单元,经过MIPI接口(MCP/MDP)将图像数据发送出去。

好了,本文暂时讲到这里,

后面会继续更新几篇Camera文章,

建议大家订阅本专题!

也可以后台留言,加一口君好友,拉你进高质量技术交流群。文章来源地址https://www.toymoban.com/news/detail-807065.html

到了这里,关于Camera | 2.MIPI、CSI基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 瑞芯微 | I2S-音频基础 -1

    最近调试音频驱动,顺便整理学习了一下i2s、alsa相关知识,整理成了几篇文章,后续会陆续更新。 喜欢嵌入式、Li怒晓得老铁可以关注一口君账号。 名称 含义 ADC(Analog to Digit Conversion) 模拟信号转换为数字信号 AEC(Acoustic Echo Cancellor) 回声消除 AGC(Automatic Gain Control) 自

    2024年03月14日
    浏览(61)
  • Linux MIPI CSI 开发指南

    1.1 文档简介 介绍 VIN(video input)驱动配置,API 接口和上层使用方法。 1.2 目标读者 camera 驱动开发、维护人员和应用开发人员。 1.3 适用范围 ​ 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/media/platform/sunxi_vin/*.c Linux-5.4 drivers/media/platform/sunxi_vin/*.c 2.1 模块功能介绍

    2024年01月18日
    浏览(42)
  • 瑞芯微RK3588J安装linux的ubuntu系统/刷机全步骤

    1.通过https://wiki.t-firefly.com/zh_CN/Core-3588J/index.html进入ITX3588J开发板说明书,在“升级固件”中选择“使用USB线缆升级固件”。  2.按照要求下载压缩包。 3.在开发板说明书目录最下端“资料下载”处下载“Ubuntu固件”。 4.使用 Type-C 数据线一端连接主机,一端连接开发板。电源

    2024年02月12日
    浏览(46)
  • 【武汉万象奥科】瑞芯微RK3568芯片

    ▎产品展示 RK3568核心板是基于Rockchip的RK3568设计的一款高性能核心板。该处理器集成了最新的高性能CPU、GPU,并拥有丰富的接口,非常适用于工业自动化控制、人机界面、中小型医疗分析器、电力等多种行业应用。   ▎RK3568产品特点 ▎ 高性能处理器 ○ 采用四核A55架构CPU,

    2024年02月06日
    浏览(52)
  • 瑞芯微RK3588,交叉编译opencv

    这里以opencv-4.6.0为例子。 下载: opencv-4.6.0 opencv_contrib-4.6.0 .cache 提取码:0816 eigen-3.3.9. ffmpeg-6.0 yasm-1.3.0 交叉编译器_gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz 注意:不要关闭当前终端!后面编译opencv也在当前终端。这里很重要! 安装libgtk2.0-dev时的报错,解决方案 以上,有

    2024年02月08日
    浏览(56)
  • 瑞芯微RK3568开发:烧录过程

    进入rk3568这款芯片的烧录模式共有3种方式,先讲需要准备的环境要求。 1、配套sdk版本的驱动DriverAssitant_vx.x.x和RKDevTool_Release_vx.x,版本不对应可能无法烧录,建议直接在sdk压缩包里获取; 2、如果正确安装DriverAssitant_vx.x.x,且usb硬件连接完好,电脑端会有主线驱动识别ok的提

    2024年02月15日
    浏览(61)
  • 瑞芯微RK3568驱动配置之十串口

    基于飞凌的开发板设计,这里需要使用到RK3568的串口,开发板只开放了UART2、UART3、UART4、UART5、UART8。查看文档,准备配置UART0、UART6、UART7、UART9。一共9个串口使用。剩下的一个串口被网口1占用,暂时不修改。 修改设备树DTS文件配置。 地址: /home/forlinx/3568/OK3568-linux-source/k

    2024年02月13日
    浏览(101)
  • 瑞芯微RK3568开发:GPIO实践篇

            SOC平台各类GPIO构建原理是大道一统的,在各个诸如状态、数据、中断和屏蔽等寄存器具体含义用法,有少许差异。玩好RK的GPIO,需要先理解这类通用接口的框架。         介绍RK3568的GPIO,认为讲2类重要地址和记录几种编程实践方法即可。 一、2类地址         RK

    2024年02月10日
    浏览(73)
  • OpenHarmony实战:瑞芯微RK3566移植案例(中)

    上篇文章:OpenHarmony实战:瑞芯微RK3566移植案例(上) 常见的INPUT设备有键盘、鼠标、游戏杆、Touch Screen等。Touch 设备与主机通讯采用标准 I2C 总线,触屏 IC 提供中断支持,提高了触屏数据的实时性。本项目的触摸屏器件IC 为 GT911。 驱动框架模型 INPUT驱动模型 INPUT 驱动模型核

    2024年04月23日
    浏览(49)
  • 瑞芯微rk3568移植openharmony3.1(鸿蒙)

    openharmony的移植推荐使用Ubuntu18.04,需要安装的依赖库文件。 获取openharmony官方源码。 下载完成后,可以改一下调试口的波特率,因为默认的是1500000,串口工具会有乱码,或者出现无法输入的问题,修改为115200。可以直接修改脚本文件。脚本文件有规则限制,只改一下波特率

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包