蓝牙协议栈 串口协议SPP(Serial Port Profile) 连接/接受数据/发送数据/断开连接 流程介绍 让蓝牙实现发送自定义数据

原创 专注于无线通信的蓬勃 2020-10-10 16:27

零. 概述

本文章主要讲下蓝牙串口协议SPP(Serial Port Profile)连接/接受数据/发送数据/断开连接的流程介绍,可能之前的写的底层文章你看的云里雾里,此小节就是开发从应用Profile层面来把整个地方串起来,让你们对协议栈有一个更深刻的认识。

一. 声明

本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

CSDN学院链接(进入选择你想要学习的课程):

蓝牙交流扣扣群:970324688

Github代码:

入手开发板:

蓝牙学习目录

--------------------------------------------------------------------------------------------------------------------------

二. 蓝牙SPP协议连接/接受数据/发送数据/断开连接 流程介绍

在上面章节我们铺垫了很多底层协议,可能你们看的可能会云里雾里,此章节就是开发从应用Profile层面来把整个地方串起来,让你们对协议栈有一个更深刻的认识。此小节我们每个协议只是会讲解到一次raw data分析,其他的封包你们要反复参照之前讲解的协议来分析,如果一旦搞清楚,会对蓝牙协议栈交互有一个深刻的认识

本小节主要通过一个SPP的应用例程来测试开发板跟手机SPP交互的流程,其中流程包括:

  • 手机连接开发板
  • 手机往开发板发送SPP数据
  • 开发板往手机发送SPP数据
  • 手机主动断开连接

分析工具:Ellisys(打开方式参照工具的使用)

分析封包:spp连接_发送_接受_断开.log(在资料中STM32_UBUNTU_BLUETOOTH\2-蓝牙资料\蓝牙协议分析)

设计到的工具:Android “蓝牙串口” apk(在资料中STM32_UBUNTU_BLUETOOTH\3-软件工具\bt_spp_apk)

本分析为了简化流程,所以采用Base on pincode配对方式,如果想看SSP的配对方式,可以参照HCI章节的SSP配对

整个流程如下(初始化部分不讲解,可以参照HCI章节的初始化流程,直接从手机连接开发板步骤说起):

整个步骤比较复杂,我来一个个流程给你们拆解下,总结流程如下(备注:每个设备的交互流程稍有差别,但是总体框架一样,另外每个步骤含有几个子步骤,我们在后面介绍完整个流程再展开说明):

步骤1)手机发送连接请求,开发板接受连接,然后收到连接完成事件

步骤2)开发板主动问询手机支持的feature,手机回复开发板

步骤3)开发板处理一些HCI command(Page scan reprtition Moide change/Max slot change/Link supervision timeout change)

步骤4)手机发起L2CAP information request,开发板回复(Extened Feature/Fixed channel support)

步骤5)手机主动连接SDP,然后L2CAP configure交互MTU参数

步骤6)手机主动问询开发板SPP的SDP信息,开发板回复,问询完后手机断开SDP的连接

步骤7)手机主动连接RFCOMM,然后L2CAP configure交互MTU参数。

步骤8)手机主动连接RFCOMM signal通道,并且交互PN参数

步骤9)手机发起配对请求,配对完成后芯片上报给协议栈Link Key

步骤10)手机连接开发板SPP的RFCOMM server channel

步骤11)开发板跟手机交互RFCOMM Modem status参数

步骤12)开发板主动跟手机交互PnP SDP参数(此部分是DID协议部分,暂时略过)

步骤13)手机主动发送SPP字符串(上层决定)

步骤14)开发板主动发送SPP字符串(上层决定)

步骤15)手机主动开发与开发板的连接

下面我们就来一一分析下整个流程,

备注:关于HCI command/event,l2cap,rfcomm,sdp封包格式我会做简短的介绍,详细的可以分别看下我之前的文章

步骤1)手机发送连接请求,开发板接受连接,然后收到连接完成事件(HCI层面的范畴)

整个步骤1分为以下几个小步骤组成

用另外一种flow表示如下:

① 手机发起蓝牙连接,芯片收到后,发送给协议栈,相当于Remote chip -> Local Chip(Controller) -> Local BT stack(host)这个过程,在后面我们就直接说手机发起连接,协议栈收到来简化描述首先我们来看下这个event的格式。

我们来分析下raw data

04 0A 0A 7F 24 DF 0C 9C 0C 02 5A 01 (hex)

04 -> HCI_Connection_Request event id

0A -> para的长度,我们也可以看到参数部分蓝牙地址6个byte,cod 3个byte,link type 1byte

0A 7F 24 DF 0C 9C -> 蓝牙地址(手机的)

0C 02 5A -> cod (关于cod的分析参照我另外的一篇文章)

01 -> link type,也就是acl

我们来看下btsnoop工具帮我们分析的结果,可以看到跟我们一样

② 协议栈发送给芯片接受连接,Local芯片收到后,然后发送手机,相当于Local BT stack(host)->Local chip(Controller)->Remote chip这个过程,后续我们直接说协议栈发送给手机来简化描述。

我们先看下这个HCI command的格式:

我们来看下raw data

09 04 07 0A 7F 24 DF 0C 9C 01

09 04 -> HCI opcode ,也就是HCI_Accept_Connection_Request,我们之前也有写过怎么把OGF,OCF组装成opcode,我在这里再贴下那这个命令是OGF=1,OCF=9,

Opcode[0] = OCF & 0xff = 0x09

Opcode[1] = (OCF >> 8) | (OGF << 2) = 0x04,组装起来就是0x09,0x04

07 -> para len,也就是蓝牙地址 link type的长度

0A 7F 24 DF 0C 9C -> 蓝牙地址(手机的)

01 -> 保持slave角色,如果是Master,那么Local stack要发送Role switch的command

我们来看下btsnoop工具分析的结果:

③ 芯片发送给手机command status来表示收到的command,这个没什么好讲解的,直接就是我们发送的command的status,其他文章已经说过多次,我们不再重复

④ 芯片发送给手机connection complete

我们来看下这个event的格式以及参数

我们来分析下raw data:

03 0B 00 4C 00 0A 7F 24 DF 0C 9C 01 00

03 -> HCI event id

0b -> 后续参数长度

00 -> status success,在HCI core文档error code中有集中说明每个value代表什么意思

4C 00 -> 连接句柄,注意,此部分重要,后续所以acl封包都会用到这个参数

0A 7F 24 DF 0C 9C -> 蓝牙地址(手机的)

01 -> link type ,1代表acl

00 -> disable加密

我们来看下btsnoop的视图分析:

后续的HCI command/event封包我们不再一一对raw data做分析,可以举一反三,自己根据core文档分析下。

步骤2)开发板主动问询手机支持的feature,手机回复开发板(HCI层面的范畴)

整个步骤2分为以下几个小步骤组成

 

① 协议栈获取对方支持的Feature

可以看到,此部分的HCI command的参数就是上面链接完成的连接句柄

② 协议栈收到芯片发送的command status

③ 手机发送给协议栈封包,告知协议栈手机支持的Feature

步骤3)开发板处理一些HCI command(Page scan reprtition Moide change/Max slot change/Link supervision timeout change)(HCI协议层面范畴)

 

Page scan等名词参照附录

Slots可以先不用关注

Link Supervison Timeout,大白话就是link lost的时间,在说这个timeout的时候,先来说下supervison time,比如两台设备连接,突然一台断电,可以看到另外一台并不是直接断开连接,而是过一段时间才会显示断开连接,而这个时间就是supervision time,这个supervison timeout后芯片就告知协议栈断线了·,其中检测原理我在附录中讲解

步骤4)手机发起L2CAP information request,开发板回复(Extened Feature/Fixed channel support)(L2CAP协议层面范畴)

整个步骤4分为以下几个小步骤组成

① 手机问询L2CAP information with Extened Feature Support

我们来看下L2CAP information requese的格式(我们是用的basic mode)

其中Information payload就是下面的

那我们整个分析下raw data,包括L2CAP/HCI

4C 20 0A 00 06 00 01 00 0A 02 02 00 02 00

4C 20 -> HCl ACL header,格式如下

Packet Boundary Flag First automatically-flushable packet(0b10)

Broadcast Flag Point-to-point (0b00)

然后Handle就是connection complete的0x004C,然后整个值就是4C 20

0A 00 -> ACL数据的长度,也就是10byte

从这里开始就是L2CAP的数据

06 00 -> l2cap payload的长度,也就是6个byte

01 00 -> channel id(CID)为1,也就是signal channel(L2CAP命令通道)

0A -> L2CAP information requese code

02 -> id,requese跟response一样

02 00 -> 后续的长度

后续是InfoType

02 00 -> Extended feature supported

下面我们来看下整个封包的btsnoop

L2CAP的抛砖引玉到这里,后续的几个小步骤L2CAP封包自己举一反三下

② 给手机回复L2CAP information with Extened Feature Support的response

③ 手机问询L2CAP information with Fixed channel Support

④ 给手机回复L2CAP information with Fixed channel Support的response

步骤5)手机主动连接SDP,然后L2CAP configure交互MTU参数(L2CAP协议层面范畴)

① 手机主动来连接SDP

我们通过raw data来分析下整个连接PSM协议流程(HCI,L2CAP)

4C 20 0C 00 08 00 01 00 02 04 04 00 01 00 52 00

4C 20 ->

Packet Boundary Flag First automatically-flushable packet(0b10)

Broadcast Flag Point-to-point (0b00)

然后Handle就是connection complete的0x004C,然后整个值就是4C 20

0C 00 -> acl packet length

08 00 -> l2cap basic packet length

01 00 -> L2CAP signal通道

下面的数据就是参照此部分格式

02 -> l2cap connection request的code

04 -> id,response必须跟这个一致

04 00 -> 后续的length

01 00 -> PSM,SDP是0x0001,后续还会有RFCOMM的PSM,所以我一起截图了

52 00 -> source ID为0x0052,记住后面这个值,我们会用到

我们来看下整个封包的btsnoop分析。

② 针对手机连接SDP回复response

此分析流程参照其他L2CAP的分析,但是以上我们要记住一点,就是Destination cid是0x0040

③ 手机主动来配置MTU,我们回复

④ 我们主动去配置MTU,手机回复

步骤6)手机主动问询开发板SPP的SDP信息,开发板回复,问询完后手机断开SDP的连接(SDP/L2CAP协议层面)

分为以下几个小步骤:

① 手机发起SPP的相关SDP信息的问询

我们先来看下raw data的分析(包含SDP/L2CAP/HCI)

4C 20 18 00 14 00 40 00 06 00 00 00 0F 35 03 19 11 01 03 F0 35 05 0A 00 00 FF FF 00

4C 20 ->

Packet Boundary Flag First automatically-flushable packet(0b10)

Broadcast Flag Point-to-point (0b00)

然后Handle就是connection complete的0x004C,然后整个值就是4C 20

18 00 -> acl packet length

14 00 -> L2CAP basic mode的length

40 00 -> Destination id,也就是上面L2CAP连线分配的

后面就是SDP的数据了,SDP的数据格式是:

06 -> SDP_SERVICE_SEARCH_ATTR_REQ

00 00 -> TID

00 0F -> Length

35 03 19 11 01 -> ServiceSearchPattern,此部分是一个数据元,关于数据元的详解介绍参照我SDP相关章节的介绍

此部分就是表示UUID 0x1101,也就是SPP

 03 F0 -> max count 1008

35 05 0A 00 00 FF FF -> AttributeIDList:是个数据元,range是0x0000~0xffff

00 -> ContinuationState,是0

我们来看下btsnoop

② 手机回复

此部分我们就不一一分析,可以按照前面的分析流程来做分析,btsnoop如下

另外,为什么是这个样子呢,因为我们code中注册的是这个样子,code如图:

注意啦:我们注册的RFCOMM server channel(scn)是8,这个值要记住,后面手机过来连接rfcomm channel的时候就是通过这个值

③ 手机断开SDP连接,我们回复response

步骤7)手机主动连接RFCOMM,然后L2CAP configure交互MTU参数(L2CAP层面)

 

此步骤L2CAP配置MTU我们在上面已经说明,所以不再重复说明,我们只来看下连接RFCOMM通道的步骤

① 手机过来连接RFCOMM

② 我们回复response

步骤8)手机主动连接RFCOMM signal通道,并且交互PN参数(RFCOMM协议范畴)

分为以下几个小步骤:

① 手机过来连接RFCOMM signal通道

我们先来分析下raw data(RFCOMM/L2CAP/HCI):

4C 20 08 00 04 00 40 00 03 3F 01 1C

4C 20 ->

Packet Boundary Flag First automatically-flushable packet(0b10)

Broadcast Flag Point-to-point (0b00)

然后Handle就是connection complete的0x004C,然后整个值就是4C 20

08 00 -> acl packet length

04 00 -> l2cap basic mode length 4 byte

40 00 -> Destination id,就是上面l2cap rfcomm连线分配的

下面就是RFCOMM数据了,格式如下:

03 -> 这个是Address field,格式如下:

0x03 = 00000011b,也就是EA=1,C/R=1,也就是command,server channel是0,也就是signal channel

3F -> Control field,格式如下:

0x3f = 00111111b,也就是 SABM帧,P/F=1

01 -> length,格式如下:

0x01 = 00000001b,也就是EA=1,7个byte表示后续的长度,也就是0,后续无长度

1C -> FCS

我们来看下btsnoop

② 我们回复

③ 手机过来配置PN参数,并且携带credit

④ 我们回复PN参数,并且携带credit

步骤9)手机发起配对请求,配对完成后芯片上报给协议栈Link Key(HCI层面)

 

分为以下几个小步骤:

① 芯片给协议栈发HCI pin code requese的event

② 协议栈回复pincode,芯片上报command complete event

③ 芯片上报给协议栈link key

步骤10)手机连接开发板SPP的RFCOMM server channel(RFCOMM层面)

① 手机过来连接SPP server channel通道

注意此部分手机过来连接的server channel就是我们SDP回复给手机的RFCOMM channel 8

② 我们回复

步骤11)开发板跟手机交互RFCOMM Modem status参数(RFCOMM层面)

此部分我们只列举一个Modem status response

步骤12)开发板主动跟手机交互PnP SDP参数(此部分是DID协议部分,暂时略过)

步骤13)手机主动发送SPP字符串(上层决定)(SPP层面)

手机发送的字符串为:

其中RFCOMM的payload就是SPP发送的数据

我们来分析下raw data:

4C 20 32 00 2E 00 40 00 43 FF 53 03 68 65 6C 6C 6F 2C 49 20 61 6D 20 77 69 72 65 6C 65 73 73 20 6C 69 6E 6B 20 69 6E 20 61 6E 64 72 6F 69 64 20 70 68 6F 6E 65 38

4C 20 ->

Packet Boundary Flag First automatically-flushable packet(0b10)

Broadcast Flag Point-to-point (0b00)

然后Handle就是connection complete的0x004C,然后整个值就是4C 20

32 00 -> acl packet length,50byte

2E 00 -> l2cap basic mode length = 46byte

40 00 -> Destination id,也就是0x0040

43 -> RFCOMM address

FF -> RFCOMM control,此部分为UIH帧

53 -> RFCOMM length

03 -> give credit

68 65 6C 6C 6F 2C 49 20 61 6D 20 77 69 72 65 6C 65 73 73 20 6C 69 6E 6B 20 69 6E 20 61 6E 64 72 6F 69 64 20 70 68 6F 6E 65

-> 此部分就是我们发送的字符串

38 -> FCS

步骤14)开发板主动发送SPP字符串(上层决定)(SPP层面)

我们发送的字符串为

步骤15)手机主动开发与开发板的连接(RFCOMM/L2CAP/HCI层面)

希望通过这篇文章能让你们熟悉蓝牙芯片跟蓝牙协议栈整个流程的交互方式!

专注于无线通信的蓬勃 朝气蓬勃——不积跬步 无以至千里, 不积小流 无以成江海
评论
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 83浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 37浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 65浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 98浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 51浏览
  • 国产光耦合器正以其创新性和多样性引领行业发展。凭借强大的研发能力,国内制造商推出了适应汽车、电信等领域独特需求的专业化光耦合器,为各行业的技术进步提供了重要支持。本文将重点探讨国产光耦合器的技术创新与产品多样性,以及它们在推动产业升级中的重要作用。国产光耦合器创新的作用满足现代需求的创新模式新设计正在满足不断变化的市场需求。例如,高速光耦合器满足了电信和数据处理系统中快速信号传输的需求。同时,栅极驱动光耦合器支持电动汽车(EV)和工业电机驱动器等大功率应用中的精确高效控制。先进材料和设计将碳化硅
    克里雅半导体科技 2024-11-29 16:18 168浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 106浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 102浏览
  • 艾迈斯欧司朗全新“样片申请”小程序,逾160种LED、传感器、多芯片组合等产品样片一触即达。轻松3步完成申请,境内免费包邮到家!本期热荐性能显著提升的OSLON® Optimal,GF CSSRML.24ams OSRAM 基于最新芯片技术推出全新LED产品OSLON® Optimal系列,实现了显著的性能升级。该系列提供五种不同颜色的光源选项,包括Hyper Red(660 nm,PDN)、Red(640 nm)、Deep Blue(450 nm,PDN)、Far Red(730 nm)及Ho
    艾迈斯欧司朗 2024-11-29 16:55 167浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 70浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 86浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 66浏览
  • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
    youyeye 2024-11-30 14:30 70浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 41浏览
  • 在电子技术快速发展的今天,KLV15002光耦固态继电器以高性能和强可靠性完美解决行业需求。该光继电器旨在提供无与伦比的电气隔离和无缝切换,是现代系统的终极选择。无论是在电信、工业自动化还是测试环境中,KLV15002光耦合器固态继电器都完美融合了效率和耐用性,可满足当今苛刻的应用需求。为什么选择KLV15002光耦合器固态继电器?不妥协的电压隔离从本质上讲,KLV15002优先考虑安全性。输入到输出隔离达到3750Vrms(后缀为V的型号为5000Vrms),确保即使在高压情况下,敏感的低功耗
    克里雅半导体科技 2024-11-29 16:15 126浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦