stm32_note_21day
============================
2022-9-13
============================
一.温故知新
短距无线通信模块->nRF24L01
接口->SPI接口
SPI一共有4条线
(CSN<片选>\SCK<时钟线>\MOSI<主出从入>\MISO<主入从出>)
全双工的工作模式
nRF可以实现一对一的通信,也可以实现一对多的通信
最多是一对六的通信->有6个接收数据的通道
在不同的频道下可以实现多对多的通信
二.短距无线通信模块
WiFi模块->使用的芯片型号是ESP8266(是乐鑫公司的芯片)
本身也是一个32bit的单片机芯片
只不过乐鑫公司在生产ESP8266芯片时在内部已经烧写了TCP/UDP的协议栈
ESP8266的接口是USART/UART的接口需要连接到我们开发板的USART2上
USART2_TX PA2
USART2_RX PA3
需要通过STM32的USART2为ESP8266模块发送AT指令(WiFi\GPRS\NB-IoT)
AT指令集

AT指令使用示例
单连接 TCP Client
ESP8266单连接

1.设置WiFi模式
"AT+CWMODE=1\r\n"
需要接收"OK"
如果设置成单连接 TCP Client可以修改成=1
注意 :
=1 softAP模式
=2 station模式
=3 softAP+station模式
2.连接路由
"AT+CWJAP="SSID","password"\r\n"
需要接收"OK"
注意 :
1)
SSID 是路由器的名称
password 是路由器的密码
2)
路由器的名称不能是中文,也不能有空格
尽量是大小写英文字母
3)
路由器的密码必须要有
4)
在小范围之内WiFi信号会有干扰,有可能会影响实验
3.查询设备 IP 地址
"AT+CIFSR\r\n"
注意 :
1)只需要有查询的指令发送即可,不需要接收查询的结果
4.ESP8266 作为 client 连接到 TCP server
"AT+CIPSTART="TCP","IP",PORT\r\n"
需要接收"OK"
注意 :
1)
IP 指的是Server端的IP地址(PC机获取的IP)
PORT 指的是Server端的端口号(可以自己设置)
5.发送数据
"AT+CIPSEND=4\r\n"
首先需要接收"OK"
然后需要接收'>'
在'>'之后写上你要发送的数据
发送完数据之后,需要接收"SEND OK"
注意 :
1)
=4 代表将来要发送4bytes数据(不算'\0')
2)
如果算上'\0'
=6 "Hello"会造成忙等
6.接收数据
"+IPD,n:xxxxxxxxxx"
注意 :
1)
n 代表的是接收到数据的字节数
2)
xxxx 代表的是接收到的数据
7.断开 TCP 连接
"AT+CIPCLOSE\r\n"
注意 :
1)只需要发送断开连接的指令,不需要接收应答
透传模式
ESP8266透传
1.在连接完TCP Server端之后需要使能透传模式
"AT+CIPMODE=1\r\n"
需要接收"OK"
2.发送数据
"AT+CIPSEND\r\n"
首先需要接收"OK"
然后需要接收'>'
在'>'之后写上你要发送的数据
注意 :
1)在透传模式下不需要指定发送数据的字节数
3.退出发送数据
"+++"
代表要退出发送数据
4.断开 TCP 连接
"AT+CIPCLOSE\r\n"
注意 :
1)只需要发送断开连接的指令,不需要接收应答
=============================
任务
1.把STM32F103开发板上的TCP client连接调通
2.组内找同学把STM32F103开发板上的固定远端的UDP通信调通
3.组内找同学把STM32F407开发板上的TCP client连接调通
=============================
esp8266.h
| |
esp8966.c
| |