uart 理解
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 理解的更多相关文章
- [tty与uart]理解线路规程的作用
转自:http://biancheng.dnbcw.info/linux/336240.html Linux OS的设备驱动有相当经典的抽象思想以及分层思想.与通信世界里面的思想相一致. 一.在Lin ...
- [uart]理解线路规程的作用
转自:http://biancheng.dnbcw.info/linux/336240.html Linux OS的设备驱动有相当经典的抽象思想以及分层思想.与通信世界里面的思想相一致. 一.在Lin ...
- UART,SPI,IIC的一点理解
转自:http://bbs.21ic.com/icview-253715-1-1.html UART通用异步收发器,UART是通用的异步传输模式,在它这种基础上加上其他接口或者解码器就衍生出多种异步传 ...
- UART Explained(转载)
做嵌入式开发,UART几乎是必不可少的,调试串口.GPS.GPRS.Bluetooth等模块很多都是用的UART接口.时下火热的IoT也不乏UART的身影,串口的BLE.WIFI.Zigbee.Lor ...
- uart串口的调试学习
用FPGA设计了数据接收和发送模块,FIFO模块,此处FIFO调用的是Show-ahead模式,在下一篇博客中将会分析这个问题. 用串口调试工具发送数据,数据接收模块将接收到的串行数据转换为并行数据( ...
- 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解
嵌入式设备一般要满足实时性的要求,而实时性是要求数据输入和输出的延时满足一定的要求.当然嵌入式一般都便携性都比PC要好,功能没有PC多,PC是通用,他是专用,一般只专注某些功能的实现,比如DSP专注数 ...
- nrf51822裸机教程-UART
art硬件模块通常都有内置的硬件接收buff,比如51822的硬件uart模块图如下 因为通常接收到uart数据时都会做一些处理.比如保存到数据,或者对数据做一些判断之类的. 如果uart的波特率设置 ...
- [tty与uart]3.tty驱动分析
转自:http://www.wowotech.net/linux_kenrel/183.html 目录: 1 首先分析设备驱动的注册 1.1 uart_register_driver分析 1.2 tt ...
- 深入理解7816(1)---- 关于F/D和etu
对于刚接触智能卡的工程师来说,在阅读7816-3规范的时候,常常被其中的一些术语迷惑,读起来会觉得有些别扭.尤其是在看到复位应答中的F和D设置,以及对应的etu的时候,会觉得有些复杂和难以理解. 其实 ...
- 蓝牙协议 基于TI cc2540 模块的理解(转)
源:蓝牙协议 基于TI cc2540 模块的理解 Bluetooth 4.0开发 Platform:TI IC:cc2540 Environment:windows 7 tools:IAR 8.20. ...
随机推荐
- Scrapy之Request函数回调未执行 Filtered offsite request to 'XXX'
在爬取免费代理ip室发现,第一页爬取之后后续的多页爬取没有被解析.在查看调试信息时发现显示 Filtered offsite request to 'www.kuaidaili.com',经网上查找先 ...
- 从零搭建hadoop集群之安装jdk
卸载系统自带的OpenJDK以及相关的java文件 1. 查询系统自带的OpenJDK版本信息 [root@hadoop01 ~]# java -version #查询系统自带的OpenJDK版本信息 ...
- Java操作ES
一.ES基本概念 1. 节点:Elastic是一个分布式数据库,每个数据库实例是一个节点Node,一台服务器上可以有多个Node,可以多台服务器协同工作 2. 集群:一组节点Node构成一个集群Clu ...
- mysql and or优先级
and优先级高于or, 不使用()情形:or后仍遇到and时,先算and再算or select * from table1 where f1=1 and f2=2 or f3=3 and f4=4 o ...
- office365启动突然提示注册表错误,无法打开“规则”配置的解决方案
感觉目前网上的资料,暂无清晰的解答,根据现象分析是outlook的原始邮件文件即psd文件中的规则相关字段存在问题,导致outlook无法打开. 因此网上的各种答疑如重装,调整注册表等等措施都是无效的 ...
- Java字段名由驼峰命名转换为下划线命名
private String toUnderlineName(String name) { StringBuilder result = new StringBuilder(); if (name = ...
- mybatis-关联查询4-多对多查询
三张表的关联查询
- .Net Core WebApi + Vue前后端分离项目中的jwt令牌应用
1.Start up 里面配置JWT认证方案 //认证方案 services.AddAuthentication(option => { option.DefaultAuthenticateSc ...
- Supervisor安装及配置
Supervisor安装 # 安装 easy_install supervisor # 生成默认配置文件 echo_supervisord_conf > /etc/supervisord.con ...
- CxImageJPG
typedef struct tag_ExifInfo { char Version [5]; //EXIF 信息版本 char CameraMake [32]; //DC 制造商 char Came ...