1:

串口字符串传输和单字节传输的差异体现在字节与字节间是或在停止位后有空闲位的插入(下图红箭头处,没有插入),即 uart_send("123")  和 uart_send('1')   uart_send('2')   uart_send('3') 在接收机上会有不同的效果。

这样在有RXFIFO的芯片上,如果RXFIFO设置为1时,而串口助手发送"123"时,接收端芯片每次都只能收到第一个字符0x31;而串口助手分三次发送字符  1 2 3时,接收端则可以每次收到不同的值;但对于没有RXFIFO的芯片,二者无区别。

哪为什么不把RXFIFO的值设置成3呢? 如果发送方不把数据截取成RXFIFO长度的小段逐一发送,而是采用 uart_send("123456")  这样一次性发送时(串口助手发送字符串时就是这样一起性发送的,字节中间没有添加空闲位),接收端每次都只能收到前3个字符。

上述的理解是错误的,硬件fifo其实只是个缓存区,当数据攒到fifo设定的阈值时会触发操作一次性处理;无fifo的芯片可以理解为fifo阈值为1的芯片;

串口在接收字节流的时候大多是没有停止位的,即数据一个接一个的在传输,即使是stm32的串口也是这种模式;区别在于中断模式的编程,串口的中断函数处理时间要求决不超过下一字节8bit从移位寄存器收齐并传给数据寄存器的时间(可以降低bps给中断函数更长的执行时间),中断的处理只需要将数据放到接收buf并设置接收指示或发送信号量即可完成退出,不建议在中断中做数据的解析;接收buf最好采用软件fifo的方式给前台处理程序预留处理时间。整体的模式就是前后台的方式,前台while会一直处理接收buf中的数据,不用在意其处理速度,如果处理不过来可以增大软件fifo的大小,总之前台while只要没有被中断或被其他任务抢占就会不停的处理接收buf中的数据,如果处理的中途触发了接收中断,则在中断中只需要将数据放入接收buf并设置接收指示或发送信号量即可完成退出,之后前台while会接着前面被打断的地方继续处理;有了硬件fifo后会降低中断的触发频率,延长前台while的处理时间。

uart 理解的更多相关文章

  1. [tty与uart]理解线路规程的作用

    转自:http://biancheng.dnbcw.info/linux/336240.html Linux OS的设备驱动有相当经典的抽象思想以及分层思想.与通信世界里面的思想相一致. 一.在Lin ...

  2. [uart]理解线路规程的作用

    转自:http://biancheng.dnbcw.info/linux/336240.html Linux OS的设备驱动有相当经典的抽象思想以及分层思想.与通信世界里面的思想相一致. 一.在Lin ...

  3. UART,SPI,IIC的一点理解

    转自:http://bbs.21ic.com/icview-253715-1-1.html UART通用异步收发器,UART是通用的异步传输模式,在它这种基础上加上其他接口或者解码器就衍生出多种异步传 ...

  4. UART Explained(转载)

    做嵌入式开发,UART几乎是必不可少的,调试串口.GPS.GPRS.Bluetooth等模块很多都是用的UART接口.时下火热的IoT也不乏UART的身影,串口的BLE.WIFI.Zigbee.Lor ...

  5. uart串口的调试学习

    用FPGA设计了数据接收和发送模块,FIFO模块,此处FIFO调用的是Show-ahead模式,在下一篇博客中将会分析这个问题. 用串口调试工具发送数据,数据接收模块将接收到的串行数据转换为并行数据( ...

  6. 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解

    嵌入式设备一般要满足实时性的要求,而实时性是要求数据输入和输出的延时满足一定的要求.当然嵌入式一般都便携性都比PC要好,功能没有PC多,PC是通用,他是专用,一般只专注某些功能的实现,比如DSP专注数 ...

  7. nrf51822裸机教程-UART

    art硬件模块通常都有内置的硬件接收buff,比如51822的硬件uart模块图如下 因为通常接收到uart数据时都会做一些处理.比如保存到数据,或者对数据做一些判断之类的. 如果uart的波特率设置 ...

  8. [tty与uart]3.tty驱动分析

    转自:http://www.wowotech.net/linux_kenrel/183.html 目录: 1 首先分析设备驱动的注册 1.1 uart_register_driver分析 1.2 tt ...

  9. 深入理解7816(1)---- 关于F/D和etu

    对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭.尤其是在看到复位应答中的F和D设置,以及对应的etu的时候,会觉得有些复杂和难以理解. 其实 ...

  10. 蓝牙协议 基于TI cc2540 模块的理解(转)

    源:蓝牙协议 基于TI cc2540 模块的理解 Bluetooth 4.0开发 Platform:TI IC:cc2540 Environment:windows 7 tools:IAR 8.20. ...

随机推荐

  1. Vue3中使用JSX简明语法

    掘金JSX:https://juejin.cn/post/7114063575122984973

  2. C# 在GridView里面使用a标签下载文件(图片)

    不能使用ajax进行下载文件的操作,具体原因需百度 前端页面,在GridView里面使用模板列,模板列放a标签 <cimesui:cimesGridView ID="GridView1 ...

  3. unity Android 可后台替换图片

    using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; usin ...

  4. Web安全测试之XSS【转】

    作者: 小坦克  来源: 博客园   原文链接:http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html XSS 全称(Cross ...

  5. Windows11 微软提供三种路径 安装程序应用

    Windows11 微软提供三种路径 安装程序应用

  6. Optional中的map函数和flatMap函数的区别

    今天在学scala的时候发现Option中有map和flatMap返回的都是Option,然后再java8中的Optional也存在这样两个函数,觉得有点多余.后来分析了一下,还是有存在的必要的. 1 ...

  7. JavaScript 基础学习(二)

    JavaScript 基础学习(二) instanceof方法: var s = "hello"; var i = 8; //typeof 只能判断基本数据类型 alert(typ ...

  8. 面试视频知识点整理1-7(http协议)

    http协议类 1)http协议的主要特点             简单快速   统一资源符 灵活          通过http协议,可以修改http头,完成不同数据类型的传输 无连接        ...

  9. 关于promise经典面试题

    这里涉及到同步和异步的问题

  10. Docker--搭建 Gitlab 容器并上传本地项目代码

    本文参考:https://www.cnblogs.com/poloyy/p/13969756.html 搭建 Gitlab 容器 搜索 gitlab 镜像 docker search gitlab 创 ...