前言:
旨在快速在大脑形成印象,回忆知识,只有数据发送和接受,至于纠错检错,加密,证书啥的不涉及(后续补充在单片机或者linux的使用的基本方法和精心挑选的典型问题以及从发现以及解决方法,涉及到问题才会提及)。具体的协议请跳转专门的博客学习(后续完善我也会贴)
OSI模型:

(看通信原理课程,虽然也没有意义)但总归建立一个通信,模拟和数字通信,纠错检错,数据压缩的概念了,了解数据表示和传输,,到通信设备,又有带宽,发射功率等等那不属于范畴了,哎,也许wifi协议栈有点用。
0通信基础模型(待更改):
[设备] --[设备]
通信对象通信对象,--,传输媒介
|
|
V
数据加密,压缩(也许没有,单片机这种基本没有了)
|
|
V
传输协议与数据结构 (会话建立 (握手确认| | - 地址 (Identification) | (I2C从机地址, USB地址, IP, Port) | - 数据包/帧格式 (Data Frame) | (字节块, 起始/停止位, 包头) | - 纠错检错 (Error Detection) | (CRC, Checksum) | - 差错控制/流控制 (Flow/Error Control) |
1.看硬件框图2.地址或者如何确认“连接起来”(非物理上)而是逻辑上3.发送和接收数据(之上有数据帧结构)4.通信事件(什么通信,通信中,请求,确认,发送,确认)
(希望随着使用,经验的增加,能建立一个知识压缩,映射,展开的能力吧,我不像局限于日常的使用方法,然后迷失,之后某天又被问到基础概念不懂,但总感觉有些东西,只是用来区分的,记忆这个知识点于使用这个技术毫无帮助)
数据链路层和物理层
I2C:
通信模型:

协议数据格式:
(省率了具体数据了的校验码等等)

通信流程(不会说细节,如总线仲裁):
[主控芯片发送起始信号]-->[发送从机地址,声明写(1)]-->[发送地址] --[总线其他从设备高阻抗,从设备应答]--[主机发送数据]--[从机回应]--[从从机地址读取数据]--[从机回应]--[从机发送数据]--[从机回应] --[结束]
笔试面试考的细节:
1.为啥要移位
答:表明写还是读
具体应用:
后续补充(或者我新开一章,涉及到传感器手册寄存器阅读):
基本使用方法
I2C控制器编写:
软件模拟:
传感器sensor数据手册阅读:
问题:初始化,那就查看数据寄存器和状态寄存器。其他,……
SPI:
通信模型:

协议数据格式(其实没有):

通信流程(不会说细节):
[NSS拉低选择设备] --[然后根据选中的模式,极性和相位,如图,”休闲"是低电平,下降沿采集电平]--[之后通信停止(拉高片选引脚)]
具体应用:
后续补充(或者我新开一章,涉及到传感器手册寄存器阅读):
基本使用方法
SPI控制器编写:
软件模拟:
传感器sensor数据手册阅读:
问题:初始化,那就查看数据寄存器和状态寄存器。其他,……
UART:
通信模型:

协议数据格式(其实没有):

笔试面试考的细节:
1.1.5停止位,是时间
2.时序
空闲高 , 然后起始低电平,发数据 ,校验 停止位
通信流程:
[预设波特率]--[发送方准备]--[接收方接收]--[持续通信]
具体应用:
后续补充(或者我新开一章,涉及到传感器手册寄存器阅读):
基本使用方法
UART控制器编写:
软件模拟:
传感器sensor数据手册阅读:
问题:初始化,那就查看数据寄存器和状态寄存器。其他,……
USB(知识和图直取自百问网教程):
通信模型:

通信模型

硬件拓扑结构

协议数据格式:
* BIT组成域(Field)
* 域组成包(Packet)
* 包组成事务(Transaction)
* 事务组成传输(Transfer)
包

包类型,由PID标识:


建立通信的令牌包:包含地址和端点号

数据包

其余不介绍,因为本篇文章中通信模型详细介绍只有建立通信和数据传输的,其余的不知道。
通信流程:
看图:

传输事务建立:
令牌包、数据包、握手包
[发出IN令牌包 地址 发出OUT令牌包/地址]--[发送/读取数据]--[有握手包]
看图,读,写,高速传输三个阶段的图

协议包

具体应用:
后续补充(我新开一章,涉及到手册描述符,太复杂了,还有gadget):
基本使用方法

略:
传感器sensor数据手册阅读:
问题:初始化,那就查看数据寄存器和状态寄存器。其他,……
应用层协议:
MQTT:
模型:
[发布者]--[broker]--[订阅者]
协议格式:

至于每部分我不会介绍了,遇到问题再说
建立链接:
Broker 地址
Broker 端口 (Broker Port)
客户端 ID (Client ID)
用户名和密码 (Username & Password)
保持连接 (Keep Alive)
……
方法:
再说
发布:
再说
订阅:
移植:
依赖一个TCP/IP的接口实现,esp8266,用串口AT指令的话,提供串口的发送和接受,略
HTTP:
模型:
数据帧格式:


使用方法:
发送:
GET方法:
Post方法:
接受:
解析数据
流程:
数据是层层加表头,比如mac地址等等
[从缓存中或者DNS服务器获取域名对应的IP地址]--[访问服务器获取数据]
使用:
参考博客,移植openssl和支持http的库到开发板 即可。
Modbus: