精华内容
下载资源
问答
  • 基带处理器要处理3种不同的结构:DSSS_CCK(直接序列扩频补码键控)、OFDM(频分复用)和DSSS_OFDM(直接序列扩频正交频分复用)。图1显示了这3种不同的结构。因此在设计接收机时,首先要考虑数据的检测与判别问题,...
  • IEEE 802.11数据帧有四种子类型

    千次阅读 2020-12-19 10:09:47
    IEEE 802.11数据帧有四种子类型,分别是IBSS,From AP,To AP,WDS。 地址字段在数据中的用法 功能 To DS From DS Address1(接收端) Address2(发送端) Address3 Address4 IBSS 0 0 DA SA BSSID 未使用 ...

    IEEE 802.11数据帧有四种子类型,分别是IBSS,From AP,To AP,WDS。

    地址字段在数据帧中的用法

    功能To DSFrom DSAddress1(接收端)Address2(发送端)Address3Address4
    IBSS00DASABSSID未使用
    To AP(基础结构型)10BSSIDSADA未使用
    From AP(基础结构型)01DABSSIDSA未使用
    WDS(无线分布式系统)11RATADASA
    展开全文
  • 内图像(I) 不参照过去或将来的图像,压缩编码采用类JPEG的压缩算法 预测图像(P) 基于运动补偿的单向间预测编码 插补图像(B,双向预测图像) 使用双向间预测编码 ...

    帧内图像(I帧)

    不参照过去或将来的图像帧,压缩编码采用类JPEG的压缩算法

    预测图像(P帧)

    基于运动补偿的单向帧间预测编码

    插补图像(B帧,双向预测图像)

    使用双向帧间预测编码

    展开全文
  • 串口接收完整一数据包的3种方法

    万次阅读 多人点赞 2020-06-25 20:08:07
    本文介绍3种使用串口接受一完整数据包的方法,串口接收数据是字节接收的,串口每接收1字节数据,产生一个串口中断,我们在中断中将接收到的数据存放到buf中进行保存,但是数据的发送和接收都是按照为单位进行...

    本文介绍3种使用串口接受一帧完整数据包的方法,串口接收数据是字节接收的,串口每接收1字节数据,产生一个串口中断,我们在中断中将接收到的数据存放到buf中进行保存,但是数据的发送和接收都是按照帧为单位进行传输的,因此我们要在接收数据的同时判断当前接收的数据是否是完整的一帧。

    一般串口完整数据帧的定义:帧头(2字节,例如AA、BB) +  数据长度(2字节) + 数据 + CRC16校验(2字节)  +  帧尾(2字节)

    帧头、帧尾表示一帧数据的开始和结尾,数据长度表示当前数据帧中负载数据大小,CRC16校验用来检查接收到的数据是否正确。

    第一种方法(根据帧头、帧尾进行判断):

    串口在接收数据时,我门在串口中断函数中对接收到的每一字节数据进行判断,如果检测到帧头数据(例如AA、BB),我们开始将接收到的数据存到buf中,同时记录下该帧数据的数据长度字段,然后一直接收,直到接收到的数据长度与我们记录下的数据长度字段值一致或接收到帧尾数据,到此一帧数据接收完成,将数据扔到消息队列,等待任务处理即可。

    假如接收的数据包格式如下  帧头(AA 、BB) + 数据长度 + 数据  + CRC校验 + 帧尾(CC、DD) 

    void USART1_IRQHandler(void)              //串口中断处理函数

        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) 
        {      
            buf[buf_size++] = USART_ReceiveData(USART1);  
            if  (buf_size >= 2)
            {
                 if (buf[0] == 0xAA && buf[1] == 0xBB) //接收到帧头
                 {
                     //接收到帧尾
                     if (buf[buf_size] == 0xCC && buf[buf_size-1] == 0xDD) 
                    {
                        //此处为数据包处理逻辑
                        buf_size = 0;
                        memset(buf,0,BUF_SIEZ);
                    }  
                 }
                 else
                 {
                     buf_size  =  0;
                     memset(buf,0,BUF_SIZE);
                 }
            }      
            if(buf_size  >=  BUF_SIZE)
            {
                 buf_size = 0;
                 memset(buf,0,BUF_SIZE);
            }
        }

    第二种方法(根据接收到的字符之间的间隔进行判断):

     串口数传输都是使用标准波特率,因此串口传输一帧数据时,字符与字符之间的时间间隔是一个固定值,我们可以根据串口的波特率去计算串口每个字符的间隔时间,在数据接收的过程中判断当字符间隔大于3.5个(modbus协议常用),则认为当前数据帧传输完毕,具体方法如下:

    我们先设置定时器超时时间为计算出的3.5字符间隔时间,然后在串口中断中每接收到一个字符,就将其保存至buf中,并刷新定时器计数值,如果串口接收到的数据时间间隔大于3.5个字符间隔,定时器就会进入超时中断,我们在定时器中断中判断当前buf中的数据是否完整,如果完整,则扔到消息队列中,等待任务去处理。

    //本例中,如果串口字符间隔大于3ms,我们认为一帧数据接收完毕,如果使用的协议是Modbus 协议,则时间间隔应该设置为3.5字符间隔时间。

    #define   BUF_SIZE      128     // 定义串口接收buf 长度

    typedef enum {DISABLE = 0, ENABLE = !DISABLE} ;   //定义枚举类型

    u16   buf_size  = 0;

    u8    buf[BUF_SIZE] = {0};     //定义串口接收缓存区

    u16 TimerCount  = 0;

     u8  TimerEnable = ENABLE;      //定义定时器计数使能标志位

    void USART1_IRQHandler(void)              //串口中断处理函数
    {      
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)    //判断是否接收中断标志位置位
        {      
            buf[buf_size++]= USART_ReceiveData(USART1);    //将接收到的数据存入buf    
            TimerCount=0;            
            TimerEnable = ENABLE;   //置位定时器计数使能标志位

            if(buf_size  >=  BUF_SIZE)
            {
                buf_size = 0;        //接收数据缓冲区溢出,重新开始接收

                memset(buf,0,BUF_SIZE);
            }
        }

    void TIM1_IRQHandler(void)        //定时器中断处理函数  每1ms产生一次中断
    {    
        u8 cnt = 0;
        if(TIM_GetITStatus(TIM1 , TIM_IT_Update) != RESET ) 
        {
            TIM_ClearITPendingBit(TIM1 , TIM_FLAG_Update);   //清除定时器中断标志位
               if(TimerEnable == ENABLE)
               {
                    TimerCount++;
                    if(TimerCount > 3)     //大于3ms,则判断为一帧数据接收完成
                    {
                        TimerCount = 0;
                        Timer.Enable = DISABLE;
                        //此处为数据包处理逻辑
                        buf_size = 0;

                        memset(buf,0,BUF_SIZE);
                    }
                }
          }
    }

    第三种方法(使用串口帧空闲中断,推荐使用):

    串口IDLE中断,串口接收完完整的一帧数据自身产生的中断,配置使能该中断后,串口会判断总线上一个字节的时间间隔内有没有再次接收到数据,如果没有则当前一帧数据接收完成,产生IDLE中断。

    使用方法,原串口配置不变,添加下列语句,开启IDLE中断:

    #define   BUF_SIZE      128     // 定义串口接收buf 长度

    u16   buf_size  = 0;

    u8    buf[BUF_SIZE] = {0};     //定义串口接收缓存区

    USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);//开启串口帧空闲中断

    void USART1_IRQHandler(void)       //串口中断服务函数
    {
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {
            buf[buf_size++] = USART_ReceiveData(USART1);
        }
        if(buf_size >=  BUF_SIZE )
        {
            buf_size = 0;             //接收缓冲区溢出,重新开始接收

           memset(buf,0,BUF_SIZE);
        }
        if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)        //当前为接收到一帧完整的数据包
        {
            USART1->SR;  //先读SR
            USART1->DR;  //再度DR  清除帧空闲中断标志位

            //此处为数据包处理逻辑

            buf_size = 0;

            memset(buf,0,BUF_SIZE);

    展开全文
  • MAC帧类型*控制帧

    千次阅读 2020-06-17 22:49:31
    主要如下几类型帧 ... 控制帧类型: Type Subtype Frametype 01 1010 Power Save(PS)- Poll(省电-轮询) 01 1011 ...

     

    主要有如下几种类型帧

     - 管理帧(Management Frame)

     - 控制帧(Control Frame)

     - 数据帧(Data Frame)

    控制帧类型:

    Type

    Subtype

    Frametype

    01

    1010

    Power Save(PS)- Poll(省电-轮询)

    01

    1011

    RTS(请求发送,即: Request To Send ,预约信道,帧长20字节)

    01

    1100

    CTS(清除发送,即:Clear To Send ,同意预约,帧长14字节)

    01

    1101

    ACK(确认)

    01

    1110

    CF-End(无竞争周期结束)

    01

    1111

    CF-End(无竞争周期结束)+CF-ACK(无竞争周期确认)

    1. RTS帧

    2 CTS帧

    3 ACK帧

    4 PS-Poll帧

    PS-Poll,即Power-Save Poll

    AID:在关联或者重关联时,由AP分配。

    作用:当sta从省电模式中苏醒,便发送一个PS-poll给基站。即STA从AP主动获取缓存在AP的数据。

    5 CF-End帧

    6 CF-End + CF-Ack帧

    展开全文
  • MP3头详解

    千次阅读 2018-03-14 10:00:42
    写在前面 最近正在学习并整理音视频相关材料,我习惯性的把最近学到的东西分享出来。如果大家感兴趣,可以订阅我的专题 视频播放器...每一包含了一个头以及其后的音频数据。同一个文件每一的音频数据的采样...
  • 以太帧类型

    2021-06-06 11:13:04
    EtherType :以太网类型字段及值 EtherType 是以太里的一个字段,用来指明应用于数据字段的协议。根据 IEEE802.3,Length/EtherType 字段是两个八字节的字段,含义两者取一,这取决于其数值。在量化评估中,字段...
  • MAC帧类型*数据帧

    千次阅读 2020-06-17 22:48:28
    主要如下几种类型帧 - 管理(Management Frame) - 控制(Control Frame) - 数据(Data Frame) 数据MAC头如下 其中Address字段由To DS/From DS位来决定 数据—To DS 与From DS ...
  • 以太网格式

    2018-07-02 18:26:20
    原文:https://blog.csdn.net/li1914309758/article/details/70050022四以太网格式2017年04月11日 11:53:54阅读数:2662转自:四以太网格式用过NetXray之类的抓包软件的人,可能经常会被一些不同的Frame ...
  • Mp3分析(数据

    千次阅读 2018-03-16 17:23:56
    转自:...这两个字节的是否存在决定于FRAMEHEADER 信息的第16bit, 为0 则头后面无校验,为1 则校验,校验值长度为2 个字节,(后面是可变长度的附加信息,对于标准的MP3文件来说,其长度是3...
  • 以太格式

    千次阅读 2020-08-11 17:38:52
    以太格式 一般我们讨论的以太头不包括它的前导码和定界。 1、前导码:7字节0x55,一串1、0间隔,用于信号同步 2、起始定界符:1字节0xD5(10101011),表示一开始 转自四格式的以太网结构 ...
  • 往期内容: 数字视频技术介绍 之 基本术语 【数字视频技术介绍】| 消除冗余 之 颜色模型 帧类型 现在我们进一步消除时间冗余,但在这之前让我们来确定一些基本术语。假设我们一段 30fps 的影片,这是最开始的 4 帧...
  • 以太网(802.3)格式

    千次阅读 2019-09-03 13:46:40
    1. 以太网格式 2. 字段说明 Preamble(前导码): 用于接收方与发送方的同步,7个字节,每个字节的值固定为0xAA. SFD(start frame delimiter): 起始定界符,用于标识一个以太网的开始,值固定为0xAB. DST ...
  • CSS3序列动画

    万次阅读 多人点赞 2017-12-04 16:49:46
    本文介绍了CSS3种的animation以及如何实现动画
  • LTE两种帧结构

    千次阅读 2020-01-19 20:42:16
    上、下行信息如何复用有限的无线资源,这是所有无线制式必须考虑的双工技术问题。... LTE支持两双工模式:TDD和FDD,于是LTE定义了两种帧结构:TDD结构和FDD结构。LTE标准制定之初就充分考虑了TDD和...
  • 以太网帧类型总结

    万次阅读 2016-09-12 09:27:06
    以太网帧类型速查   EtherType :以太网类型字段及值 EtherType 是以太帧里的一个字段,用来指明应用于帧数据字段的协议。根据 IEEE802.3,Length/EtherType 字段是两个八字节的字段,含义两者取一,这取决...
  • Ethernet_II和802.3_Ethernet格式比较

    千次阅读 2020-05-05 11:22:28
    一、Ethernet格式的发展 1980 DEC,Intel,Xerox制订了Ethernet I的标准 1982 DEC,Intel,Xerox又制订了Ehternet...1983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet格式 1985 IEEE推出IEEE 802....
  • 802.11 三种帧的格式

    万次阅读 2019-02-26 19:56:51
    一、管理 (Beacon(信标)) (Probe Request(探测请求)) (Probe Response(探测响应)) (ATIM) (Disassociation(解除关联)与Deauthentication(解除认证)) (Association Request(关联请求))...
  • 相对而言,802.11的成帧比较复杂,因为无线媒介必须将有线网络所没有的帧类型以及各式管理功能纳入考虑。 802.11帧主要类型。数据帧负责在工作站之间传输数据,它可能会因为所处的网络环境不同而有所差异。...
  • 视频的帧类型与帧存储

    千次阅读 2018-04-26 13:16:36
    视频的帧类型帧类型包括 I 帧:关键帧,包含完整图像。 P帧:预测帧,根据前面的I帧和P帧来还原出图像。 B帧:双向依赖帧,也就是依赖于前面和后面的帧信息。帧的显示顺序与存储顺序用一个例子来说明, 假如视频...
  • 对H.264帧类型判断方法

    千次阅读 2017-04-17 16:37:30
    需要对获取到的H.264视频进行判断后处理,我们经常获取到各种不同的视频数据0x67 0x68 0x65 0x61,0x27 0x28 0x25 0x21,0x47 0x48 0x45 0x41,各种不同的编码芯片时间出来的NAL Header规则不大一样,...
  • css3之关键的解说

    千次阅读 2017-08-03 13:41:06
    本文主要讲解CSS3中的关键的知识点,关键类似于animate动画的效果,但是关键是css的内容,可以省略掉js。
  • Unity 3D实现同步技术

    万次阅读 多人点赞 2017-05-11 15:38:00
    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;...现在竞技类网络游戏比较火,市面上也出现了很多这种类型的游戏竞赛,提到网络游戏就回避不了一个问...
  • 以太网两种帧的格式

    千次阅读 2015-12-17 12:49:10
    上层应用将数据封装成IP数据包再封装成(路由器接收到的是数据,转发的是数据,不是数据包,他只是要将数收到的据拆开,露出三层报头,数据包中的报头中的ip地址只是为了确定转发的目的地而已) =头的...
  • 802.11--分类

    2020-09-26 17:56:13
    3. 不同帧类型下又不同的类型帧的,这些子类型帧通过帧控制字段中的Subtype字段来区分,该字段共4bits(B4~B7),详情见下文各类型帧的相关章节。  4. 一般来说控制帧、管理帧都是不需要加密传输的,
  • 802.11 格式及类型

    千次阅读 2019-03-09 17:48:58
    针对ESP32 SNIFFER功能 ... 1:格式 下面是802.11的组成结构,总寻此结构. ...控制字段的前2bit节为:协议类型,目前此值为:0。 1)控制:用于竞争期间的握手通信和正向确认、结束非竞争期等...
  • 本文主要讲述ffmpeg编码过程中是如何设置I帧,B帧及P帧的,以及如何通过代码判断帧类型。 之前看过很多网上的文章,讲述如何判断I帧,B帧,P帧,然而都是停留在H.264官方文档中的定义,如果不结合ffmpeg,就仿佛...
  • 与802.3定义的以太网数据格式及通信方式不同,802.11定义的WLAN无线局域网由于通信介质和通信质量的问题,不能直接采用802.3的通信方式。在WLAN中,数据链路层面上的通信模式要比802.3以太网中的通信要复杂的多,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 208,469
精华内容 83,387
关键字:

帧的类型有3种