Telink之标准SDK的介绍_1

news2025/7/26 19:20:14

前提:常见的项目架构:应用层----》驱动层----》硬件层

1、软件组织架构

顶层⽂件夹( 8 个)
algorithm,application,boot,common,drivers,proj_lib,stack,vendor

algorithm:提供⼀些加密算法,如 aes_ccm。⼤多数算法对应的 C ⽂件被封装在库⽂件中,只留对应的头⽂件。
application:提供⼀些通⽤的应⽤处理程序,如 print、keyboard、audio 等。
boot:提供 MCU 的 software bootloader,即 MCU 上电启动或 deep sleep 唤醒后的汇编处理程序,为后⾯ C 程序的运⾏做准备。
common:提供⼀些通⽤的跨平台的处理函数,如内存处理函数、字符串处理函数等。
drivers:提供 MCU 外设驱动程序,如 Clock、Flash、I2C、USB、GPIO、UART 等。
proj_lib:存放 SDK 运⾏所必需的库⽂件(如 liblt_827x.a)。BLE 协议栈、RF 驱动、PM 驱动等⽂件,被封装在库⽂件中,用户无法看见源文件。
stack:存放 BLE 协议栈相关的头⽂件。源⽂件被编译到库⽂件⾥⾯,对于用户不可⻅。
vendor:⽤于存放 demo code 或者用户⾃⼰的 code。
软件组织架构

2、demo文件结构

main.c ⽂件中包含 main 函数和中断处理函数。
包含了系统正常⼯作所需的配置,建议⽤户不要对它进⾏任何修改。
中断处理函数是系统触发中断时候的⼊⼝函数
app_config.h 用户配置⽂件,⽤于对整个系统的相关参数(例如:BLE 参数,GPIO 配置,低功耗使能/失能,加密使能/失能等)进⾏配置
application file
app.c:⽤户主⽂件,⽤于完成 BLE 系统初始化、数据处理、低功耗处理等。
app_att.c:这个⽂件提供了 GATT service 表和 profile ⽂件,GATT service 表中已提供了标准的 GATT 服务、
标准的 GAP 服务、标准的 HID 服务以及⼀些私有服务等。⽤⼾可以参考这些添加⾃⼰的 service 和 profile。
app_ui.c:该⽂件主要提供了按键功能。
app_buffer.c:该⽂件⽤于定义 stack 各层使⽤的 buffer,例如:LinkLayer TX & RX buffer、L2CAP layer MTU
TX & RX buffer、HCI TX & RX buffer 等
common file
blt_soft_timer.c:该⽂件提供了软件定时器的实现⽅案。
custom_pair.c:该⽂件提供了泰凌⾃定义的⼀套 pair 的⽅案。
device_manage.c:该⽂件主要是连接设备信息的管理
simple_sdp.c:该⽂件提供了 Master role 简单的 SDP(Service Discovery Protocol)实现⽅案
BLE stack entry
BLE 中断处理⼊⼝函数是 blc_sdk_irq_handler().
BLE 逻辑和数据处理⼊⼝函数是 blc_sdk_main_loop (),它负责处理 BLE 协议栈相关的数据和事件.
寄存器设置小技巧
REG_ADDR8(0x400 + ((i>>8)<<3)) 清空了低八位
eg: 1001 1111 1101 BIT9
0000 0000 1001 BIT1
0000 0100 1000 BIT4
CapSense:用于触摸式按键、触摸式滚动条(Slider)、触摸式平板(Touchpad)的触摸感应技术
CapSense触摸感应技术是基于Cypress PSoC(可编程的片上系统)CY8C21x34系列芯片开发的,可用于触摸式按键、触摸式滚动条(Slider)、触摸式平板(Touchpad)的触摸感应技术。它利用PSoC的CY8C21x34系列芯片一些特有的资源,根据电容感应的原理和松弛震荡器的技术实现触摸感应
ACL : 访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过.
ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文.
参考链接:
https://support.huawei.com/enterprise/zh/doc/EDOC1100086646
L2CAP :Logical Link Control and Adaptation Protocol,即逻辑链路控制和适配协议,是蓝牙系统中的核心协议.
实现:L2CAP负责适配基带中的上层协议,它同LM并行工作,向上层协议提供面向连接和无连接的数据服务,并提供多路复用,分段和重组操作,允许高层次的协议和应用能够以64KB的长度发送和接收数据包。
L2CAP提供了逻辑信道,名为L2CAP Channels,即在一个或多个逻辑链路上进行多路复用.
L2CAP提供了如下功能:

  • 协议/信道多路复用
  • 分段和重组
  • 服务质量
    L2CAP可分为两个部分:
  • Channel Manager
  • Resource Manager
    TIP:
    L2CAP只支持ACL,而不支持SCO/eSCO(用预留宽带进行实时语音传输)
    L2CAP不支持可靠的广播信道
    参考链接:
    https://www.cnblogs.com/hzl6255/p/3801732.html
    ⑩①HCI:主机控制接口(Host Controller Interface),属于蓝牙协议栈的一部分。
    适用于蓝牙通讯模块的硬件部分。此定义描述了位于HCI驱动程序(主机的一部分,也即蓝牙通讯模块的使用者)和主机控制器固件(蓝牙通讯模块本身的一部分)之间的接口
    参考链接:
    https://baike.baidu.com/item/HCI/16020520
    ⑩②GAP:generic access profile,蓝牙基础配置文件
    GAP主要对linklayer层(standby state、advertising state、initiating state、connection state)的状态进行了抽象,转化成上层的概念
    对广播包数据进行封装,运用同一的格式和类型,已达到互联的目的。比如我们扫描设备的时候,会先发设备的名称,设备的名称就是运用统一的格式封装在adv的报文中,支持GAP的设备都能明白数据包的内容的意思
    ⑩③GATT :广播
    GATT 连接,必需先经过 GAP 协议。在 Android 开发中,可以直接使用设备的 MAC 地址,发起连接,可以不经过扫描的步骤。这并不意味不需要经过 GAP,实际上在芯片级别已经给你做好了,蓝牙芯片发起连接,总是先扫描设备,扫描到了才会发起连接
    GATT 连接需要特别注意的是:
    GATT 连接是独占的。也就是一个 BLE 外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它又开始广播
    中心设备和外设需要双向通信的话,唯一的方式就是建立 GATT 连接
    参考链接:
    https://blog.csdn.net/qq_42166454/article/details/108229186
    ⑩④OTA:通过无线通信方式实现DFU(设备固件升级)

蓝牙协议栈:

PHY层(physical layer物理层):用来指定 BLE 所用的无线频段,调制解调方式和方法等。PHY层做的好不好,直接决定整个 BLE 芯片的功耗,灵敏度以及 selectivity等射频指标。

LL层(Link Layer链路层):LL层是整个 BLE 协议栈的核心,也是 BLE 协议栈的难点和重点。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的 GAP 或者 GATT。

HCI(Host controller interface主控制接口):HCI是可选的,主要用于 2 颗芯片实现 BLE 协议栈的场合,用来规范两者之间的通信协议和通信命令等。

GAP层(Generic access profile通用访问配置):GAP 是对LL层payload(有效数据包)如何进行解析的两种方式中的一种(最简单的一种)。CAP 简单的对 LL payload 进行一些规范和定义,因此GAP能实现的功能极其有限。GAP 目前主要用来进行广播,扫描和发起连接等。

L2CAP层(logic link control and adaptation protocol逻辑链路控制与自适应协议):L2CAP 对 LL 进行了一次简单封装,LL只关心传输的数据本身,L2CAP 就要区分是加密通道还是普普通通,同时还要对连接间隔进行管理。

SMP(secure manager protocol安全管理器协议):SMP用来管理 BLE 连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是 SMP 要考虑的工作。

ATT(Attribute protocol属性的协议):ATT层用来定义用户命令及命令操作的数据,比如读取某个数据或者写某个数据。BLE 协议栈中,开发者接触最多的就是 ATT。BLE引入了 attribute概念,用来描述一条一条的数据。Attribute除了定义数据,同时定义该数据可以使用的ATT命令,因此这一层被称为ATT层。

GATT(Generic attribute profile(通用属性配置):规范 attribute 中的数据内容,并运用group(分组) 的概念对 attribute 进行分类管理。没有GATT、BLE协议栈也能跑,但互联互通就会出现问题,也正是因为有个GATT和各种各样的应用profile,BLE拜托了zigbee等无锡那些一点兼容性困境,成了出货量最大的2.4G无线通信产品

备注:
1)具有远距离传输能力的高频电磁波称为射频
2)crc校验:循环冗余校验,位与
一个完整的数据帧:帧头+数据+校验位+帧尾
3)Software bootloader:软件引导程序
Telink 的 bootloader ⽂件是由两部分构成,link ⽂件和 cstartup.S 汇编⽂件
4)ack:标识字 mux:复用
5)reg_irq_src & FLD_IRQ_GPIO_EN !!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5害虫识别项目代码打包完整上传Gitee仓库(已开源)以及git上传速率限制踩坑记录

YOLOv5害虫识别项目代码打包完整上传Gitee仓库&#xff08;已开源&#xff09;以及git上传速率限制踩坑记录 ps: ​ 最近很多小伙伴需要这个害虫识别项目的源码&#xff0c;由于文件过大&#xff0c;所以将代码完整上传至gitee&#xff0c;所有文件、教程、论文、以及代码模型…

Python之metaclass和dataclass

metaclass:MetaClass元类&#xff0c;本质也是一个类&#xff0c;但和普通类的用法不同&#xff0c;它可以对类内部的定义&#xff08;包括类属性和类方法&#xff09;进行动态的修改。可以这么说&#xff0c;使用元类的主要目的就是为了实现在创建类时&#xff0c;能够动态地改…

ProcessExplorer工具使用(24)

实验目的 1、了解Process Explorer的使用方法预备知识 Process Explorer&#xff08;可执行文件名为procexp.exe&#xff09;是一款由Sysinternals开发的Windows系统和应用程序监视工具&#xff0c;目前Sysinternals已经被微软收购&#xff0c;此款不仅结合了文件监视和注册表监…

日报周报月报工作总结生成器【智能文案生成器】

日报周报月报工作总结生成器【智能文案生成器】 天天写日报&#xff0c;我真的快奔溃了&#xff01; 摸了一天鱼&#xff0c;下班还要写日报&#xff1b; 划了一周的水&#xff0c;周末还要写周报&#xff1b; 啊啊啊啊… 在职场上&#xff0c;尤其是互联网公司里&#xff0c…

Python的数据分析相关的框架

Python特别强大&#xff0c;也是一款可以实现可数据分析语言&#xff0c;它有很多开源的库和工具&#xff0c;可以帮助数据科学家处理和分析数据。 以下是一些常用的Python库和工具&#xff1a; NumPy&#xff1a;NumPy是一个Python库&#xff0c;用于处理大型多维数组和矩阵&…

小程序技术如何提升企业的移动研发效率?

随着移动互联网的普及&#xff0c;移动应用程序已成为企业营销和服务的重要途径。随着技术的不断发展和革新&#xff0c;移动应用程序的开发方式也在不断地演变。 一些技术趋势 1、跨平台开发 跨平台开发已成为移动应用程序开发的趋势。根据 Statista 的报告&#xff0c;截至…

洗地机哪家强?洗地机排行榜

随着清洁行业电器的开展&#xff0c;越来越多的新颖工具和电器开端进入消费者的生活之中。众所周知&#xff0c;面对美不胜收的清洁电器产品&#xff0c;选购也是一大头疼事&#xff0c;应该怎样选购洗地机等清洁电器呢&#xff0c;实在的用户体验和清洁效率莫过于消费者最看重…

如何给电脑重装系统

如何给电脑重装系统 UltraISO(软碟通)、Win10镜像下载UltraISO(软碟通)安装启动盘的制作重装系统 UltraISO(软碟通)、镜像下载&#xff1a; UltraISO(软碟通)安装包下载&#xff1a; 英文版下载链接&#xff1a;http://coderyyn.cn/software/uiso9_pe.exe中文版下载链接&am…

35 openEuler搭建repo(yum)服务器-创建、更新本地repo源

文章目录35 openEuler搭建repo&#xff08;yum&#xff09;服务器-创建、更新本地repo源35.1 获取ISO发布包35.2 挂载ISO创建repo源35.3 创建本地repo源35.4 更新repo源35 openEuler搭建repo&#xff08;yum&#xff09;服务器-创建、更新本地repo源 使用mount挂载&#xff0c…

openpnp - 为贴片工程中的PCB上的mark点元件创建openpnp可识别的定位封装

文章目录openpnp - 为贴片工程中的PCB上的mark点元件创建openpnp可识别的定位封装概述做自己PCB视觉识别用的Mark点封装ENDopenpnp - 为贴片工程中的PCB上的mark点元件创建openpnp可识别的定位封装 概述 建立openpnp Job, brd之后, 载入坐标文件, 精确定位3个mark点, 精确定位…

C++基础了解-03-C++变量类型

C变量类型 一、变量类型 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有指定的类型&#xff0c;类型决定了变量存储的大小和布局&#xff0c;该范围内的值都可以存储在内存中&#xff0c;运算符可应用于变量上。 变量的名称可以由字母、数字和下划线字符组成。…

C++ Butterworth N阶滤波器设计

介绍一个 Butterworth Nth 滤波器设计系数的函数&#xff0c;像 Matlab 函数一样的&#xff1a; [bl,al]butter(but_order,Ws); 和 [bh,ah]butter(but_order,2*bandwidth(1)/fs,high);rtfilter 在 Ububtu 中&#xff0c;容易找到&#xff1a; $ aptitude search ~dbutterwo…

Linux安装Oracle数据库

Linux安装Oracle数据库 文章目录Linux安装Oracle数据库0. 写在前面1. Oracle 数据库1.1 简介1.2 Oracle 与 MySQL 的SQL 区别2. 前置准备2.1 安装依赖包2.2 配置用户组2.3 上传安装包并解压2.4 修改配置文件 sysctl.conf2.5 修改配置文件 limits.conf2.6 设置环境变量3. Linux最…

基于层次分析法的轴间预瞄和轴距预瞄俯仰半车LQR控制仿真分析(重型汽车)

目录 前言 1. 半车悬架模型 2. LQR最优控制原理简述 3. 基于LQR的半车悬架轴间预瞄和轴距预瞄仿真分析 3.1仿真模型 3.2仿真结果 4.总结 前言 上篇文章简谈了轴距预瞄和轴间预瞄的原理以及仿真分析&#xff0c;可以发现对于轴间预瞄和轴距预瞄其控制效果相对于不带预瞄…

Fluter MMKV 初始化失败 Failed to load dynamic library ‘libmmkv.so‘

出现一个bug&#xff1a;vivo y66 &#xff08;android 6.0&#xff09;的一个手机&#xff0c;在被杀死进程后&#xff0c;重新进入&#xff0c;mmkv初始化失败&#xff0c;会报找不到so库的错追到代码是在这一行出了问题也查了很多&#xff0c;包括mmkv的issue里面也找了很多…

【阿里云】Apsara Clouder云计算专项技能认证-云服务器ECS入门,考试真题分享

以下是阿里云Apsara Clouder云计算专项技能认证-云服务器ECS入门真题汇总篇分享&#xff1a; 1.下列哪一个不是重置ECS密码的步骤? A. 查看实例详情 B.进入控制台 C.远程连接ECS D.点击控制台“概览” 2.针对云服务器ECS安全组说法正确的是 A.是一种物理防火墙 B.仅用于控制…

testng+reportng进行单元测试并生成好看的报告

TestNg的来源: JUnit 框架是 Java 语言单元测试当前的一站式解决方案。这个框架值得称赞&#xff0c;因为它把测试驱动的开发思想介绍给 Java 开发人员并教给他们如何有效地编写单元测试。但是&#xff0c;在过去的几年中&#xff0c;JUnit 的改进不大&#xff1b;所以&#x…

领域驱动设计-架构篇

目录 1、软件架构概述 1.1 软件架构概念 1.2 软件架构分类 1.3 软件架构模式 1.4 软件架构风格 2、领域驱动软件架构 2.1 架构风格 六边行架构&#xff08;领域驱动设计首选&#xff09; 为什么选择REST架构 松耦合 可伸缩性 易用性 约束性 2.2 架构模型 命令和…

TOUGH系列软件建模及在地下水、CO2地质封存、水文地球化学、地热等多相多组分系统多过程耦合

TOUGH2系列软件传统地下水模拟软件Feflow和Modflow不同&#xff0c;TOUGH2系列软件采用模块化设计和有限积分差网格剖分方法&#xff0c;通过配合不同EOS模块&#xff0c;软件可以处理各种复杂地质条件下&#xff0c;诸如地热能开发&#xff0c;非饱和带水气运移、油气运移&…

HBase---浅谈HBase原理

浅谈HBase原理 文章目录浅谈HBase原理HBase定义HBase逻辑结构HBase物理存储结构TimeStampType数据模型NaneSpaceRegionRowColumnTineStampCellHBase架构MasterMaster 架构Meta 表格介绍Region ServerRegionServer 架构MemStoreWALBlockCacheZookeeperHDFSHBase写数据流程HBase读…