嵌入式通信协议
SPI(Serial Peripheral Interface):串行外设接口
采用一主多从模式,主机和从机之间可以互相通信,从机和从机之间无法通信。
主要信号线:
片选信号SS:由主机决定与哪个从机通信
时钟信号SCK:在时钟信号上升沿或下降沿瞬间MOSI或MISO的值才会被采样认为是通信内容
主发从收MOSI(Master Output Slave Input):由主机向从机发送的内容
主收从发MISO(Master Input Slave Output):由从机向主机发送的内容
WIFI:无线局域网ESP32,ESP8266
WIFI是一种允许电子设备连接到一个无线局域网的技术,相比于蓝牙,WIFI具有更远的通讯距离和更高的通讯效率。
ESP8266采用串口与单片机通讯,其内置TCP/IP协议栈,能够实现串口与WIFI之间的转换。两者通讯的基本流程即:WIFI模块接收无线WIFI数据,并转换为串口信息,通过串口发送到单片机;反过来,单片机发送串口信息给WIFI模块的串口,由WIFI模块转换为无线WIFI数据,并发送出去。
ESP8266 WIFI模块具有以下三种主模式:
1.AP:Access Point,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点,允许其它无线设备接入,提供数据访问。一般家庭或办公室使用的无线路由器就是一个AP。AP和AP之间允许相互连接。
2.STA:Station,也就是站点,站点就是每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)。STA本身并不接受其它无线设备接入,但它可以连接到AP。
3.AP+STA:兼具两者特点,即允许其它无线设备接入,其本身又能连接到其他WIFI模块。
此时WIFI模块本身充当无线路由器的作用。
此时WIFI模块本身作为一个接入设备,连接无线路由器。
此外,AP和STA下还各有三个子模式:TCP服务端、TCP客户端、UDP
区分它们的关键在于服务端和客户端、TCP和UDP的区别:
服务端和客户端:一般由客户端发送请求,服务端接收请求,一个服务端可以同时连接多个客户端,两者之间通过IP地址和端口号连接,所谓IP地址,即连接在因特网上的主机的标识符,所谓端口号,即同一主机上不同网络服务程序的标号。有了IP地址和端口号,我们便可以确定信息传输到哪个主机的哪个网络服务程序处理了。
TCP与UDP:TCP的可靠性更高,UDP的传输速度更快。
对于ESP8622而言,我们采用AT串口指令来进行wifi模块与单片机之间的连接与通信,具体地,AT指令可以配置wifi模块的模式,也可以进行数据的发送与接收。
AT指令集:
注意:只有打了双引号的部分才需要加双引号,别的不要加!
波特率的设置为115200,命令结束必须加回车换行符\r\n
设置的WIFI名尽量为英文,中文会出现乱码
1.自检:AT
2.重启:AT+RST
3.恢复出厂设置:AT+RESTORE
4.设置主模式:AT+CWMODE=模式(1:STA/2:AP/3:AP+STA)
5.列出当前可用的AP:AT+CWLAP
6.加入要求的AP:AT+CWJAP=”WIFI名”,”WIFI密码”
7.退出当前加入的AP:AT+CWQAP
8.设置该模块在AP模式下的参数:AT+CWSAP=”创建的WIFI名”,”WIFI密码”,通道号(最多5),WPA预共享密钥(一般选3:WPA2_PSK)。本指令只在该模块要作为AP时使用。
9.查看该模块作为AP时接入设备的IP:AT+CWLIF。本指令只在该模块作为AP时使用。
10.获取该ESP8266模块的IP:AT+CIFSR
11.是否启动多连接:AT+CIPMUX=0/1。只有在非透传模式下,才能设置为多连接;只有关闭服务器模式(CIPSERVER),才能设置为单连接。
12.与目标IP建立TCP连接:AT+CIPSTART=”TCP”,”目标IP”,端口号。此时的模块作为TCP Client。
13.配置该模块为TCP Server:AT+CIPSERVER=是否开启Server(0/1),端口号。AT+ CIPMUX=1时才能配置为TCP Server。每有一个Client接入就会自动按顺序占用一个连接。会在服务器和客户端同时返回CONNNECT,服务器还会显示接入编码,从0开始按接入先后顺延。
14.设置发送的数据长度并等待发送数据:AT+CIPSEND=发送数据的长度(字节)。之后输入的数据直到超过长度会被发出,该指令必须在关闭透传模式以及单连接模式下使用,故TCP Server是不能发送数据的。接收方接收的数据格式为:+IPD,设备编码,数据长度:数据内容。
15.设置该模块作为STA时的IP地址:AT+CIPSTA=”IP地址”。本指令只在该模块作为STA时使用。
16.设置该模块作为AP时的IP地址:AT+CIPAP=”IP地址”。本指令只在该模块作为AP时使用。
17.是否启用透传模式:AT+CIPMODE=0/1。透传模式只有关闭TCP Server时才可以配置。
18.获取该模块当前的连接状态:AT+CIPSTATUS
19.关闭当前的TCP连接:AT+CIPCLOSE
20.设置该模块作为TCP Server时对其下Client的超时容限:AT+CIPSTO=0-7200s。作为TCP server,会踢掉一直不通信直至超时的TCP client,如果设置AT+CIPSTO=0,则永远不会超时。
会在服务器和客户端同时返回CLOSED。服务器还会显示接入编码,从0开始按接入先后顺延。
检查电脑的WIFI配置,在cmd中:
1.ipconfig:无限局域网适配器WLAN->IPv4地址,这是电脑连接的网络的IP地址
2.netstat -ano:查看已被占用的端口号
3.tasklist|findstr “xxx”:查看被占用端口号xxx对应的网络程序
4.netstat -ano | findstr “4710”
5.taskkill /pid 29212 /f
网络调试助手:
设置协议为TCP Server,使电脑作为TCP服务器,此时本地主机地址会自动匹配到对应连接WIFI的IP地址,选择本地主机端口时注意不要与其他网络程序冲突。
串口助手与网络调试助手互联,单片机发送串口信息与网络调试助手互联
两个ESP8266间通过串口助手互联,两个ESP8266借助外部WIFI通过串口助手互联
两个ESP8266间实现单片机数据互传
安信可官网:https://www.ai-thinker.com/product/esp
USART:VCC,TX,RX,GND
CAN:CAN_H和CAN_L