- 博客(32)
- 收藏
- 关注
原创 TCP/IP协议—DNS
它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,主要用于将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。多播DNS(Multicast DNS,mDNS),主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353,遵从dns协议,使用现有的DNS信息结构、语法和资源记录类型,并且没有指定新的操作代码或响应代码。DNS报文一共分成3部分,分别是DNS首部(12个字节)、DNS问题、DNS资源记录(只包含在应答报文中)
2024-04-22 11:03:14
1119
原创 TCP/IP协议—MQTT
这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。固定头的第二字节用来保存变长头部和消息体的总大小的,但不是直接保存的。这一字节是可以扩展,其保存机制,前7位用于保存长度,后一部用做标识。可变报头的报文标识符(Packet Identifier)字段存在于在多个类型的报文里。由于可变报头的内容根据报文类型的不同而不同,篇幅过长,具体可以参考👆MQTT协议源文档。有效载荷是实现某种报文类型的核心,但是MQTT只有几种报文需要有效载荷。
2024-04-18 17:12:47
2365
1
原创 TCP/IP协议—HTTP
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一种请求-响应的协议,用户可以通过HTTP向服务器上传、下载数据。HTTP基于TCP协议,是web应用中最主要的应用层协议,比如浏览器上网就是使用HTTP协议。超文本安全传输协议(Hypertext Transfer Protocol Secure,HTTPS)是加入安全加密的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTP应答报文与HTTP请求报文格式类似,区别在与请求行。
2024-04-18 14:08:14
1622
1
原创 TCP/IP协议—TCP
以太网为例,缺省MTU=1500 Byte,这是以太网接口对IP层的约束,如果IP层有<=1500 Byte需要发送,只需要一个IP包就可以完成发送任务,如果IP层有>=1500 Byte数据需要发送,需要分片才能完成发送,这些分片有一个共同点,即IP Header ID相同。:keepalive timer,在连接长时间空闲时启动,在空闲2小时后会超时并且发送探测报文,判断对端是否存在,超时后会重启并取值75秒,如果超过8次后仍未得到确认,则连接被终止。报文中的seq和ack在前面数据交互的基础上+1。
2024-04-15 14:57:29
1088
原创 TCP/IP协议—UDP
用户数据传输协议 (UDP,User Datagram Protocol) 是一种无连接的协议,提供了简单的数据传输服务,不保证数据的顺序以及完整性。应用层很多通信协议都基于UDP进行传输,比如DNS、CoAP等。UDP伪头部不会进行传输,只是用于校验。UDP头部报文除去数据长度,一共有8个字节。学习笔记,有问题欢迎指出。
2024-04-12 17:34:11
827
1
原创 TCP/IP协议
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网络协议),对互联网中各部分进行通信的标准和方法进行了规定,是目前网络通信中所使用最基本的协议。TCP/IP协议不是单指TCP协议和IP协议,而是所有的网络通讯协议的集合,比如HTTP、MQTT等都包含在其中。TCP传输控制协议,是一种面向连接的协议,提供了可靠的数据传输服务,通过序列号、确认机制、重传等机制实现数据的顺序和完整性。负责比特流在介质上的传输,规范了物理传输接口。
2024-04-12 16:42:06
1423
原创 BLE协议—HID
HID(Human Interface Device,人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,比如键盘、鼠标、游戏手柄等。为了无线与有线设备相同类型设备的兼容,BLE HID设备与USB HID设备使用的都是同一种规范。HOGP(HID Over GATT Profile)是在BLE GATT协议的基础上实现的HID协议。学习笔记,有问题欢迎指出。
2024-04-05 19:14:03
856
原创 BLE协议—Beacon信标广播
基于BLE广播的功能的协议。蓝牙Beacon并不是蓝牙技术联盟所指定的标准,因此也被称为“虚拟标准”,是由大型供货商或企业集团为首,针对广泛的Beacon应用所正式提出的蓝牙应用规范,比如苹果公司的iBeacon协议,谷歌公司的Eddystone协议。:这两个值用于识别一组iBeacons中的特定的Beacon,以进一步细分UUID下的区域或使用场景。:用于广告推送,比如商场内,当用户走进商场时打开商城APP,即可看到实时的商城活动等。:应用特定的唯一标识符,用于区分不同的iBeacon部署。
2024-04-05 16:48:11
1289
原创 BLE协议—广播和扫描
广播和扫描在无线通信中是非常重要的一个技术点。在BLE中,扫描和广播是通信的基础,用户可以直接用扫描和广播进行数据的传输(数据量不大,功耗要求较高的情况下),也可以在广播和扫描的基础上进行连接后点对点通信。
2024-01-02 15:26:47
2239
原创 BLE协议—协议栈基础
BLE设备每次广播时,会在3个广播信道(37/38/39,对应的中心频率是2402MHz,2426MHz,2480MHz)上发送相同的报文,这些报文被称为一个广播事件。属性协议层(Attribute Protocol,ATT):定义了访问对端设备上数据的一组规则,是GATT规范的基础,也是低功耗蓝牙的基石。一个广播数据包最长为37个字节 , 前6个字节为设备地址,后面是数据区,数据区最大31个字节,又分为若干个AD Sturcture,扩展广播包的最大长度为255字节。数据区没用完的话,系统会在后面补0。
2023-12-27 16:28:25
1639
1
原创 lwip网络协议基础介绍
lwip协议栈支持多种不同的网络接口,比如WiFi、以太网、4G等等,由于网卡是直接和硬件平台打交道,硬件不同则处理也是不同的,所以由用户提供最底层的接口函数,lwip提供统一的接口,但是底层的实现需要用户自己去完成,比如以太网的MAC接口,WiFi的RF接口等。lwip中的每一个网卡都由一个netif结构体表示,netif声明多个成员变量,这些变量是对网卡进行抽象,可以有多个网卡,多个网卡的存储为单向链表形式。TCP/IP协议栈的实现本质上就是对网络数据包进行封装,解析。源码下载可以点击文章底部链接。
2023-08-29 09:59:31
1559
原创 Matter协议
Matter协议简介Matter 是由 CSA 连接标准联盟 (Connectivity Standards Alliance) 发起,多家行业领先公司联合推出的智能家居互联协议。于现有的IOT物联网通信相比,Matter最大的特点是拥有跨平台能力以及本地通信能力跨平台能力在 Matter 推出之前,每家设备厂商生产的智能家居设备只能通过自己的 App 控制,无法和其他生态设备互联。但通过 Matter 协议,所有支持 Matter 的 App 和硬件设备均可轻松无缝互联,协同工作。目前,华为、亚
2022-02-28 11:17:36
11647
原创 ESP32开发-HTTP POST请求发送图片
HTTP POST请求发送图片ESP32中有HTTP相关的请求demo,但是demo中只是简单的HTTP header加上body。如果服务器对POST请求有要求,比如数据以key-value的形式传输,那么服务器会无法正常处理请求,从而返回错误码500。发送POST请求基于esp_http_client中的post请求demo进行修改,其中传输的图片通过cmake转化成二进制文件,具体可以参考esp-idf中的esp_http_client demo。void http_send_img(){
2021-09-10 10:42:56
5708
2
原创 单链表反转[无头结点]
单链表反转[无头结点]迭代反转链表递归反转链表头插法反转链表就地逆置法反转链表迭代反转链表通过定义三个指针,从头到尾依次改变链表的指向。link *iteration_reverse(link *head){ if(head == NULL || head->next == NULL) //链表为空或者只有头结点 return head; link *beg = NULL; //指向当前结点的上一个结点 link *mid = head; //指向当前结点
2021-08-30 16:17:35
745
原创 FreeRTOS的启动-基于STM32
FreeRTOS的启动流程1、Reset_Handler2、__main3、main()4、创建任务5、启动任务1、Reset_Handler系统上电后第一个执行的汇编函数,系统通过该函数进行初始化1 Reset_Handler PROC2 EXPORT Reset_Handler [WEAK]3 IMPORT __main4 IMPORT SystemInit5 LDR R0, =SystemInit6 BLX R0 7 LDR R0, =__main8 BX R09 ENDP
2021-05-12 13:52:33
640
原创 ESP32开发-LVGL动画显示
LVGL动画LVGL 支持动态效果,包括动态切换屏幕,组件动画效果等等。动画创建步骤以及API说明以官方demo中的动画创建为例 //定义动画变量 lv_anim_t a; //初始化动画变量 lv_anim_init(&a); //设置要进行动画处理的组件 lv_anim_set_var(&a, gauge); //设置动画功能 lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t
2021-05-11 16:21:51
4913
原创 ESP32开发-LVGL显示图片
图片使用方式LVGL中可以使用两种方式显示图片1、作为内部存储器(RAM 或 ROM)中的变量2、作为文件内部读取图片优点:数据跟代码一起编译成固件,使用方便。缺点:图片需要用工具转化成数组形式,图片过多或者图片分辨率过大时可能会出现编译错误(常量数据超出DROM)。使用方法跟外部字体库类似,使用工具将图片转为成一个 .c 文件,文件里会有存储图片数据的常量数组和 LVGL 的图片数据类型结构体,同时结构体变量即可使用图片。const lv_img_dsc_t test = { .he
2021-05-11 15:09:25
12331
9
原创 ESP32开发-LVGL使用内部和外部字体
编码LVGL支持两种编码,分别是 ASCII 编码和UTF-8 编码 。ASCII 编码只支持英文字符的显示 。UTF-8 编码 可以支持全球所有字符的显示 , 包括显示中文 , 显示图标字体等。字体LVGL默认支持多种字体,其中就包括中文字体。但是LVGL自带的中文字体库并不包括所有常用字。内部字体库LVGL内部的字体库在 lvgl/src/lv_font 文件夹中。如果需要使用某种字体,只需要把lv_conf.h中该字体的宏定义打开就行。//内部中文字体库define LV_FON
2021-05-11 11:49:04
5003
转载 嵌入式音频处理基础
声音声音是一种通过空气或者其他介质传播的纵向波。声音具有两种属性:振幅和频率。声波的振幅是指对压强变化的度量。以分贝(dB)为测量单位。人类能够听到的最小的声波振幅称为“听觉阈值”,用0dBSPL来表示,这里的SPL是Sound Pressure Level的缩写,指声波压强级别。在这个SPL尺度上,参考压强定义为20微帕斯卡(uPa)。假定压强的变化为x,则 dBSPL的一般表达式为:dBSPL=20*log(xuPa/20uPa)各种常见声音的分贝值从上表可以看出,人类可以忍受并能够听到的声
2021-05-06 10:45:07
1482
原创 ESP32 GATTC配置UUID
ESP32 GATTC修改UUID16bit和32bit UUIDESP32的GATTC demo可以与GATTS demo实现互相通信,UUID的配置也十分简单。以下是demo中的UUID配置。注意:16bit和32bit的UUID只需要设置UUID的前16bit或者32bit,剩余的bit使用的是Bluetooth_Base_UUID:xxxxxxxx-0000-1000-8000-00805F9B34FB#define REMOTE_SERVICE_UUID 0x00FF#d
2021-04-29 15:24:28
3450
1
原创 ESP8266_RTOS修改AP模式下IP地址和主机名
ESP8266修改AP模式下IP地址方法一:tcpip_adapter_init在ESP8266_RTOS下初始化wifi时需要调用初始化tcpip函数tcpip_adapter_init()AP模式下的IP地址就是在这个函数中设置的,所以修改ESP8266下AP模式的IP的第一个方法是直接在该函数中修改IP地址。注意:如果在这里修改IP,会导致所有工程的IP都被修改,因为这是全局的组件void tcpip_adapter_init(void){ if (tcpip_inited ==
2021-04-29 14:27:30
2972
原创 嵌入式基础接口-SDIO
SDIOSDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。SDIO1.0标准定义了两种类型的SDIO卡:1.全速的SDIO卡,传输率可以超过100Mbps;2.低速的SDIO卡,支援的时脉速率在0至400KHz之间。SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的
2021-04-27 10:30:05
782
原创 嵌入式基础接口-PWM
PWM脉冲宽度调制(PWM)是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。PWM配置目前许多微控制器和DSP都包含了PWM,只需要配置好相关参数即可使用。1、GPIO :选择PWM输出的GPIO2、定时器:给PWM配置定时器3、频率:设置PWM的波形频率4、占空比:占空比决定一个
2021-04-26 17:02:35
2588
原创 嵌入式基础接口-音频接口(I2S、PDM、PCM/TDM)
I2SI2S总线,又称集成电路内置音频总线,专门用于音频设备之间的数据传输,广泛应用于多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。I2S引脚1、SCLK:串行时钟,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数。2、LRCK:帧时钟(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是右声道的数据,为“0”则表
2021-04-26 14:37:20
4046
原创 嵌入式基础接口-SPI
SPISPI是串行外设接口,是一种高速、全双工,同步的通信总线。主从模式通信,支持一主多从。SPI引脚1、MOSI:主设备数据输出,从设备数据输入。2、MISO:主设备数据输入,从设备数据输出。3、SCLK:时钟信号,由主设备产生。4、CS:片选信号,由主设备控制,使能从设备。通信协议...
2021-04-25 14:24:10
378
原创 嵌入式基础接口-I2C
I2CI2C总线是一种简单、双向二线制同步串行总线。半双工通信,主从模式,支持一对多。主机根据从机地址与从机进行通信I2C引脚1、SDA:串行数据线,用作传输数据。2、SCL:串行时钟线,用作控制传输。一般是主设备向从设备提供。通信协议I2C是半双工通信,所以同一时刻,主从设备只能有一个设备发送数据。因此通信线上电平变化对通信都有着特别的意义。1、起始与停止I2C总线通讯由起始位开始通讯,由结束位停止通讯,并释放I2C总线。起始位和结束位都由主设备发出。起始条件:SCL为高电平时,SDA由
2021-04-23 15:28:12
460
原创 嵌入式基础接口-UART
UART通用异步收发传输器,UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。UART引脚1、VCC:供电引脚,一般接3.3V,在很多嵌入式MCU上UART控制器都是内部供电。2、GND:接地引脚,两个设备通过UART通信时最好共地,否则数据接收可能会出问题。3、RX:数据接收引脚。(接另一方的TX)4、TX:数据发送引脚。(接另一方的RX)5、RTS:输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。(可以不使用)6、
2021-04-23 14:01:11
1956
原创 ESP32移植LVGL
ESP32移植LVGLLVGL(轻便而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI。LVGL官方有关于ESP32的相应支持,包括基于ESP32的演示demo,多种TFT驱动代码等。移植步骤1、搭建ESP-IDF环境2、克隆lvgl库到项目组件3、进入menuconfig配置TFT Controller和Touch Controller4、配置屏幕大小5、编译运行移植目录LVGL官方有ESP32的是lv_port_
2021-04-22 18:50:52
8774
3
原创 ESP8266/ESP32开发环境搭建
开发环境搭建开发环境ESP8266ESP32工具链xtensa-lx106-elf-gccxtensa-esp32-elf-gccSDKESP8266-RTOS-SDKESP-IDFSDKESP8266-RTOS-SDKESP-IDF1、工具链下载设置2、从github上获取SDK,ESP8266_RTOS_SDK(ESP8266) 、ESP-IDF(ESP32)3、msys32(linux下不需要)4、ESP32可以使用官方上的一键安装工具,但
2021-04-22 11:24:44
770
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人