首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
拟态baby辣
门头沟学院 嵌入式工程师
发布于山西
关注
已关注
取消关注
@做人要有梦想dji:
嵌入式常用通信协议总结
1、UART串口通信 UART——通用异步收发传输器。UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。 基于UART的数据传输是异步形式的串行数据传输。基于UART的串行数据传输不需要使用时钟信号来同步传输的发送端和接收端,而是依赖于发送设备和接收设备之间预定义的配置。 对于发送设备和接收设备来说,两者的串行通信配置(波特率、单位字的位数、奇偶校验、起始位数与结束位、流量控制)应该设置为完全相同。通过在数据流中插入特定的比特序列,可以指示通信的开始与结束。当发送一个字节数据的时候,需要在比特流的开头加上起始位,并在比特流的末尾加上结束位。数据字节的最低位紧接在起始位之后。 UART 串口的特点是将数据一位一位地顺序传送,只要2根传输线就可以实现双向通信,一根线发送数据的同时用另一根线接收数据。UART 串口通信有几个重要的参数,分别是波特率、起始位、数据位、停止位和奇偶检验位,对于两个使用UART串口通信的端口,这些参数必须匹配,否则通信出错。 起始位:表示数据传输的开始,电平逻辑为“0” ,位数为1位。 数据位:可以是5~8位的数据,先发低位,再发高位,一般取值为8,因为一个ASCII 字符值为8位。 奇偶校验位:用于接收方对接收到的数据进行校验,“1”的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。 停止位:表示一帧数据的结束,电平逻辑为“1”,位数可以是1/1.5/2位。 波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位(bit) 数来表示,其单位为每秒比特数bit/s(bps)。常见的波特率值有4800、9600、115200 等,数值越大数据传输的越快,波特率为115200 表示每秒钟传输115200 位数据。 串口通信存在的问题 (1)UART只是对信号的时序进行了定义,而未定义接口的电气特性; (2)UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连; (3)UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接不方便。 (4)UART一般直接使用TTL信号来表示0和1,但TTL信号的抗干扰能力较差,数据在传输过程中很容易出错。 (5)由于TTL信号的抗干扰能力较差,所以其通信距离很短,一般只能用于一个电路板上的两个不同芯片之间的通信。 2、I2C通信 I2C是一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。每个连接到总线的设备都有一个独立的地址,主机可以通过该地址来访问不同设备。主机通过SDA线发送设备地址(SLAVE_ADDRESS)查找从机,SLAVE_ADDRESS可以是7位或10位,紧跟着SLAVE_ADDRESS的一个数据位用来表示数据传输方向,即第8位或11位。为0时表示写数据,为1时表示读数据。 I2C 总线由起始信号、停止信号、应答信号、非应答信号组成。起始信号SCL为高,SDA由高变低;停止信号SCL为高,SDA由低变高;应答信号第9个时钟周期,SDA为低;非应答信号第9个时钟周期,SDA为高; 开始位:当SCL为高电平时,SDA由高电平变为低电平的期间,这表示主机控制器要开始发起访问了。 地址位:接下来的7个时钟周期,主机控制器将会发送从机的7位地址(如果是10位地址需要分两次发送)。 读写位:在第8个时钟周期,如果SDA位高电平则表示接下来要读取从机数据,如果是低电平则表示主机要写数据到从机。 应答位:在第9个时钟周期由从机进行应答,低电平为ACK,,高电平为NACK,如果从机响应,应该法ACK。 数据位:在接下来的若干个周期内,主机可以持续读取数据(如果读写位为读),或写数据(如果读写位为写),每次数据传输完成,也要进行应答,是读则由主机控制器应答,是写则由从机应答,只是在主机读完最坏一个字节的数据后应该以NACK来应答。 停止位:当SCL位高电平时,SDA由低电平变为高电平期间,表示主机控制器结束了对从机的访问。 I2C的一大特点是可以在同一条总线上接多个主机。两个及以上的主机同时发起传输请求时,需要通过仲裁(Arbitration)确定哪个主机获得总线的使用权;另外,每个主机都独立产生时钟,时钟速率可能千差万别,这也需要时钟同步(Clock Synchronization)解决时钟速率不一致的问题。在单主机的I2C系统中,不需要时钟同步和仲裁。 时钟同步是通过I2C接口的“线与”逻辑实现的。SCL信号线由高变低时,所有连接在SCL上的主机都开始计数低电平的时间(低电平计数器复位),由前文对“线与”逻辑的介绍可知:只有当SCL总线上所有主机的时钟输出端都为高时,SCL总线才会由低变高。SCL的低电平时间由总线上低电平时间最长的主机决定。时钟端口先跳变为高的其它主机进入等待状态。这样所有主机的时钟输出和SCL线上的状态保持相同;当SCL由低变高后,所有主机(高电平计数器)开始计数SCL高电平的时间;最早由高跳变到低的主机再次将SCL拉低。通过这种方式产生的同步时钟:其低电平时间是所有主机时钟中最长的低电平时间,其高电平时间是所有主机时钟中最短的高电平时间。 当总线上有一个以上的主机时,协议通过仲裁的方法确定哪个主机获得总线的使用权。从机不参与仲裁的过程。当总线处于空闲状态(IDLE)时,在最小的保持时间内(tHD;STA),多个主机都可能发起开始条件(START)在总线上传输数据。仲裁用来判断哪个主机的传输可以正常进行。 仲裁是按位进行的。仲裁开始时,对于每一位数据,SCL为高时,每个主机都检测SDA上的数据是否和自己发送的数据相同。可能需要进行多个位(bit)的比较,主机才开始检测到SDA上数据和自己发送的不一致。实际上,只要SDA上的数据和主机发送的数据一致,这些主机就可以将数据一致发送下去。当主机发送为HIGH,检测SDA上电平却为LOW,那么该主机就在仲裁中失去主控权,并将其SDA输出关闭。余下的主机获得总线控制权并继续数据的传输。如图8,当主机1在检测到SDA数据和它自身的输出DATA1不一致时,将自动关闭DATA1的输出,停止向总线上发送数据。 I2C总线一般只有上拉电阻,总线电容是来自芯片管脚的容性负载,总线100k速率可以使用的容限在10pF-400pF之间,400k速率可以使用的总线容限10pF-200pF之间。控制总线电容主要是控制连接在同一总线的器件数量。 3、SPI通信 SPI是一种高速的,全双工,同步的通信总线。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。 SPI主要用于EEPROM、Flash、RTC(实时时钟)、ADC(数模转换器)、DSP(数字信号处理器)以及数字信号解码器上。目前应用中的数据速率可达几Mbps。SPI规定了两个SPI设备之间通信必须由主设备Master来控制从设备Slave。一个Master可以通过提供clock以及对Slave进行片选(Slave Select)来控制多个S
点赞 25
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-24 13:53
C++
C++Linux进阶项目分析-仿写Redis之Qedis
为什么要学这个项目传统的webserver已经烂大街了,只有一个webserver项目大概率是找不到工作的,今天给大家分享一个C++Linux进阶项目-仿写Redis之Qedis,Redis是C++ Linux开发必备的核心知识,通过学习Qedis开源项目,不仅可以深入理解redis,也更能提升自己的编程能力,比如C++11任意函数作为任务的线程池,Reactor网络模型的C++封装,时间轮定时器,Redis数据结构的实现等。视频讲解:C++Linux进阶项目分析-仿写Redis之Qedis1.项目介绍Qedis网上很多编译方式是错误的。 C++后台开发偏基础服务,比如分布式存储相关的岗位,基...
我的失利项目复盘
简历被挂麻了,求建议
点赞
评论
收藏
分享
04-24 15:59
美团_业务研发平台_软件开发(实习员工)
【面经】拼多多 服务端开发暑期实习(已信息确认)
时间线:3.9 笔试3.15 一面3.18 二面3.26 三面4.2 HR 电话面4.16 面试官留联系方式4.24 信息确认,因已有 offer 不推进流程3.15 拼多多一面 50min周六约面,全程共享屏幕,并且白板编程无任何代码提示手撕力扣简单题,合并两个有序链表面试官:能不能从各方面优化?我一看这题还怎么优化?把 dummy 节点去了,然后考虑了一堆边界条件在那改改改,无法调试,面试官不停问“你觉得你这有问题吗?”项目一直聊实习项目,比其他公司聊的差,比蚂蚁聊的好,我耐心的讲着这个解决方案的所有优化点,每讲完一点面试官就沉默一分钟,我真以为网卡了反问面评?写代码,要注意准确性和健壮性...
查看25道真题和解析
点赞
评论
收藏
分享
04-24 16:06
蚌埠坦克学院 后端
终于轮到我了😄😄😄
被拒那么多次,终于轮到我了
offer_offer来来来:
爽了哥。
点赞
评论
收藏
分享
03-07 22:05
已编辑
中国电影资料馆 才艺特长培训
这面试时间?更:后续。二更:再度反转
感觉像KPI,啥玩意啊——————后续来了:不是kpi!不是kpi!开摄像头交流,会引导回答问题且部门很核心(不透露具体哪个部门了)。这面试官真的很好,会一点一点和我讨论,不管是场景题还是底层八股都很深入,讨论完我自己也很有收获。最后手撕也顺利写出来了,一道mid题,ACM模式。我的天😭,比我之前面微信搜索体验好太多太多了,算是我近期体验最好的一场面试了。我承认我之前喊的太大声,我错了,收了我吧鹅。——————-后续的后续:聊成这样都能挂啊?。这找个暑期实习每天心情和过山车一样。
落霞秋色:
面试官刚下班就面你
点赞
评论
收藏
分享
04-26 18:16
得物app_电商推荐产品经理(准入职员工)
得物内推得物内推得物内推得物内推
实习了半年~入职体验: 1.Mentor哥是从韩国留学回来的,而我的专业刚好是韩语。第一印象比较好!两个同事姐都非常非常有趣,中午下班一起吃饭一起drink,氛围很友好! 2.我的工作内容比较简单,但上手会有很多细节的地方,我认为相比我之前的实习会有一丢丢的dirty work,但这也是难免的,更重要的是去体验和了解这个行业或者岗位,提前规划自己的职业道路 3.薪资待遇:运营150/天,产品200/天,需要打卡。9:30-18:30(弹性半小时)晚8点后下班晚饭免费,餐补30元,提供免费零食咖啡茶水健身房 4.得物有很多员工活动,有读书会、球类运动、狼人杀、脱口秀等等,非常有意思! - 面试经...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
暑期后端高频问题汇总
7.3W
2
...
左手敲代码的程序员,不配拥有offer吗?
5.5W
3
...
想听实话吗,校招ssp聊聊大厂客户端
3.1W
4
...
北京到底有谁在啊?
8865
5
...
后端简历上最值得写的项目
8403
6
...
暑期实习终章
6958
7
...
五一假期,弯道超车时间表
6857
8
...
美团/饿了么/京东 配送端面经
6402
9
...
五一准备刷完这些面试八股题!!
6253
10
...
五一别写你那破开源代码了
6172
创作者周榜
更多
正在热议
更多
#
设计人如何选offer
#
97926次浏览
680人参与
#
找工作,行业重要还是岗位重要?
#
6885次浏览
85人参与
#
五一之后,实习真的很难找吗?
#
44441次浏览
312人参与
#
领导秒批的请假话术
#
9643次浏览
73人参与
#
盲审过后你想做什么?
#
12319次浏览
110人参与
#
外包能不能当跳板?
#
22028次浏览
191人参与
#
考研可以缓解求职焦虑吗
#
20532次浏览
242人参与
#
五一假期,你打算“躺”还是“卷”?
#
26043次浏览
398人参与
#
面试等了一周没回复,还有戏吗
#
115234次浏览
1072人参与
#
找工作前vs找工作后的心路变化
#
7111次浏览
64人参与
#
牛友们的论文几号送审
#
27149次浏览
623人参与
#
应届生薪资多少才合理?
#
3047次浏览
24人参与
#
你喜欢工作还是上学
#
37350次浏览
408人参与
#
如何缓解入职前的焦虑
#
171694次浏览
1267人参与
#
每人推荐一个小而美的高薪公司
#
72819次浏览
1357人参与
#
如果有时光机,你最想去到哪个年纪?
#
43196次浏览
765人参与
#
硬件人,你被哪些公司给挂了
#
46484次浏览
719人参与
#
写简历别走弯路
#
714114次浏览
7849人参与
#
大疆的机械笔试比去年难吗
#
69567次浏览
602人参与
#
扒一扒那些奇葩实习经历
#
41580次浏览
770人参与
牛客网
牛客企业服务