自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 Bluetooth:关于计算2-EV3的实际传输时间

假设这个eSCO 包的信息如下:2-EV3,payload是60Byte,那么这个包实际传输时间是多少呢我们知道EDR 的封包格式:Access code + HEADER + GUARD + SYNC + PAYLOAD + TAILERaccess code是72bit ,HEADER 是 54bit,这两部分是按照basic rate进行传输的,即1Mb...

2020-03-12 15:23:18 603

原创 Bluetooth:为什么packet header length是54bit

因为packet header是由如下组成:LT_ADDR(3bit) + TYPE(4bit) + FLOW(1bit) + ARQN(1bit) + SEQN(1bit) + HEC(8bit) = 18bit;这18bit 在经过 1/3 FEC后变成 54bit;

2020-03-11 21:30:11 315

原创 Bluetooth:access code的重要性

有三种AC,分别是DAC、IAC、CAC。DAC : device access code,被用在page 、page scan 、page response等过程,是从paged device 地址的LAP继承而来。IAC : inqiuiry access code,被用在inquiry过程,是从64个IACs(GIAC是0x9E8B33)继承而来。CAC : channel...

2020-03-11 18:19:17 1654

原创 我对M4A文件格式的理解

m4a 格式文件中的内容是有很多的box 组成的,box 格式如下:box length(4B 大端格式) + box type(4B)+ box content(box length - 8)例如如下是ftyp这个box 的数据内容,可以看到该box 长度是0x20字节。从m4a文件中找到moov box是重点,因为找到了这个box ,需要从box 找出来每个采样帧的位置及...

2020-03-11 11:32:43 4182

原创 苹果蓝牙日志如何获取

参考链接:https://wenku.baidu.com/view/58b10e7b27284b73f242509b.html从中取出来对自己比较有用的部分。SDIO通信接口中有一根clock线,该clock上输出的频率是可配置的。对于读命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,device会将数据放在4...

2019-11-09 10:37:42 4409 1

原创 USB:一直不知其所以然的USB

后续更新;

2019-11-08 18:45:02 106

原创 STM32F411RE-0020-认识某些汇编指令的意图

LDR R0,[R1,#0x08]---》读取存储器地址为R1+8的内容到R0中;LDR R0,[R1,#0x08]!---》读取存储器地址为R1+8的内容到R0中,然后R1=R1+8;LDR R0,[R1],#0x08---》读取存储器地址为R1的内容到R0中,然后R1=R1+8;STR和LDR类似;LDR R0,=0x2000000LDRIA R0,...

2019-11-06 12:22:03 1004

原创 BT-用一个测试用例来理解蓝牙BQB PTS认证测试的过程

关于准备PTS dongle和PTS PC 工具,这里不做介绍。这里以TC_MOD_NDIS_BV_01_C测试用例来介绍。这个测试项内容:确认待测设备当处在不可见模式时,不会响应PTS dougle的搜索操作,即认为测试PASS。可以通过GAP log看到一些详细的测试过程,该log是在点击测试项的Run(debug logs)就会自动产生出来。除了该log,可以通过blueto...

2019-11-05 18:23:00 3271

原创 STM32F411RE-0019-外部中断是如何进行配置的

SYSCFG_EXTICR1~4这四个寄存器可以选择外部中断的pin。有23个EXTI,分别是EXTI0~22;对于EXIT0~15对应到各个GPIO组的16个PIN;EXTI line 16 is connected to the PVD outputEXTI line 17 is connected to the RTC Alarm eventEXTI line ...

2019-11-01 14:06:24 583

原创 STM32F411RE-0018-对GPIO的控制原理

GPIO寄存器可以控制多组GPIO(A~H),每一组多达16个GPIO口。配置寄存器有GPIOx_MODER:配置输入、输出、复用、模拟;GPIOx_OTYPER:配置输出类型是开漏还是推挽;GPIOx_OSPEEDR:配置输出速度是低速、中速、快速、高速;GPIOx_PUPDR:配置上下拉是没有上下拉、上拉、下拉;GPIOx_IDR:读取输入;GPIOx_ODR:输出...

2019-11-01 12:16:09 591

原创 STM32F411RE-0017-深入了解异常处理

当异常中断来时,通常会先将R0~R3、R12、LR、PC、xPSR这8个寄存器压入栈中。取出异常向量表地址;更新NVIC寄存器、xPSR、LR、PC、SP;举例,我们在某个中断入口做一个断点。可以看到R0~R3、R12和下面绿色全出来的是对应起来的。从上面的LR为0xfffffff9可能很多人感觉很奇怪,下面会对此做个详细介绍。...

2019-10-30 20:41:40 428

原创 STM32F411RE-0016-需要对寄存器有一些了解

普通寄存器接触的比较多,比较好理解,不多做解释R0~R12R13称为栈指针寄存器,对应到两个物理寄存器MSP/PSP;R14称为LR寄存器,用来指示返回地址;R15称为PC寄存器;特殊寄存器xPSR称为程序状态寄存器,由APSR+EPSR+IPSR组成;PRIMASK寄存器只有一个bit位,置位会屏蔽除了NMI+HardFault以外的异常中断;FAULTMASK...

2019-10-30 17:45:36 761

原创 STM32F411RE-0015-关于clock的知识储备

这里有一张clock tree,非常详细,从这个图中就可以知道clock之间的继承关系。system clock可以通过RCC_CFGR寄存器的SW[0:1]来选择是用HSI、HSE、PLL的哪个source;AHB clock 可以通过RCC_CFGR寄存器的HPRE[0:3]设定分频(1 2 4 8 16 64 128 256 512),是从system clock分频出来的;...

2019-10-30 13:30:47 303

原创 STM32F411RE-0014-了解system tick interrupt

通过code可以了解是如何设置的1ms的系统滴答中断。例如假设AHB clock是16M=16000000,那么一个clock时间就是1/16000000,那么1ms是多少个clock呢,是16000个clock。如何进行编程呢,这里也是有相关的建议编程顺序。__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){ if...

2019-10-30 11:14:38 288

原创 STM32F411RE-0013-对电平触发中断和边沿触发中断的理解

以高电平触发和上升沿触发的两种中断说明。当高电平时,产生中断,进入ISR,处理完之后,如果仍然还有高电平,会继续进入ISR。上升沿出发,为了能够让NVIC可以检测到这个中断,对该上升沿的时隙也是有要求的,例如至少保持1个cpu clock;...

2019-10-30 10:47:15 1675

原创 STM32F411RE-0012-中断控制优先级

AIRCR寄存器是SCB里重要的寄存器,而PRIGROUP又是AIRCR中的重点。因为他规定了后面中断优先级的分组性。可以从code中看到也是有对应上面表格中的PRIGROUP的5个level;#define NVIC_PRIORITYGROUP_0 0x00000007U /*!< 0 bits for pre-emption priority ...

2019-10-30 10:36:53 345

原创 STM32F411RE-0011-分析startup_stm32f411xe.s做了什么事情

设定栈指针Reset_Handler: ldr sp, =_estack /* set stack pointer */程序中有定义一些赋初值的变量,在编译的时候,会规定好这些变量在ram中的地址,以及这些变量的初值存在flash中的哪里。有这些信息,就是为了将ram中编译器为这些变量预订好的地址的地方,填充好他们各自的初值。/* Copy the da...

2019-10-29 21:44:38 1091

原创 STM32F411RE-0010-结合map文件分析连接脚本

下面是定义好对于STM32F411RE这个芯片的flash和ram的地址和大小设定。/* Specify the memory areas */MEMORY{FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512KRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K}下面可以看到有将....

2019-10-29 21:09:53 605

原创 STM32F411RE-0009-如何设置调试程序的入口停止点

在STM32CubeIDE,通过菜单Run-》Debug configuration这里默认是设置在main入口。如果要修改在汇编的Reset_Handler就可以将这里的main修改成Reset_Handler。下面是调试开始后停止的地方就是我们前面配置的地方。...

2019-10-29 20:33:44 409

原创 STM32F411RE-0008-认真理解编译过程,对后续开发极有益处

点击project->properties,会看到如下:最重要的就是这里的红色标注的部分,其中绿色标识的是重点。在这里有对汇编、C的编译选项配置,包含路径,宏定义,连接器的选项配置,以及postbuild的输出配置。Logging下面可以配置编译过程的log输出到哪里,这个还是比较有用的,当然在IDE上也有编译过程的log输出到console窗口。一旦遇到build erro...

2019-10-29 19:51:40 493

原创 STM32F411RE-0007-学习代码的第一个脚印

在已经安装了STM32CubeIDE环境之后,后面的操作基本都可以在这个IDE中进行了。可以此时连SDK都还没有拿到呢,别着急,这个IDE会帮你搞定。选择File-》New-》STM32 Project;此时会打开一个对话框,让你选择你的开发目标平台。为你的project起一个名字,点击next;下面就会选择要下载的SDK;这样就已经将这个工程建立完成了,后面可...

2019-10-29 17:55:15 427

原创 Arduino:只为她写这一篇吧

Arduino为不太懂硬件但又想玩一玩编程的人,带来了很大的便利性。在我看来,对于小孩子,想从小培养编程经验的,也可以让孩子玩一玩。Arduino提供了很多的开发板,可以体验很多的产品玩法,同时也提供了一套线上和线下的IDE环境。对于开发者,修改code、编译、下载等工作都集成在IDE中。整个code也非常的简单,例如我以一个闪灯的例程来介绍代码的工作流程。有两个接口,需要开发...

2019-10-29 14:34:54 103

原创 STM32F411RE-0006-IDE开发环境

软件开发环境采用STM32CubeIDE,主要是free,而且也好用。可以修改code,编译,在线debug等操作。ST-LINK的烧录擦写软件,可以烧录bin和hex,可以回读数据,读取寄存器数据等操作。有了上面两个工具,暂时可以进行一般性的开发了。第一个工具STEM32CubeIDE可以进行code 编辑、编译、调试、运行。一旦将程序调试稳定了,可以使用第二个工...

2019-10-25 17:59:35 581

原创 STM32F411RE-0005-了解有哪些硬件开发工具

这里的硬件开发工具,基本肯定是对应一个实实在在的硬件设备,功能主要是面向如何烧录,如何调试等功能.例如J-LINK、Segger。

2019-10-25 15:05:13 308

原创 STM32F411RE-0004-开发板用户使用说明手册

DM1724这份文档是介绍了开发板的用户使用说明。下面介绍了开发板的跳线帽设置、驱动安装、按键和灯的显示判断开发板是否正常。这张图介绍了一个概略图。通过下图可以知道元器件的位置下面是关于LED的状态指示灯,如果觉得需要可以关注这一部分。其实最重要的就是知道LED3亮红灯表示STM32F411上电是没有问题了,LED2要控制亮和灭需要控制GPIO高和低就可以了。...

2019-10-24 15:55:09 2645

原创 STM32F411RE-0003-从搜索我这款开发板开始

ST官网的这个搜索是有自动匹配功能的,可以完全匹配上我输入的这个开发板名字。点击搜索的结果,进来会看到,搜索内容所在的一个层级指示,于是就知道这个搜索结果是在哪里。这里也给出了一个购买该开发板的一个链接。这里给出了一个非常简短的描述:STM32 Nucleo-64开发板搭载的是STM32F411RE 的MCU,支持arduino和st的接口对外的扩展(啥意思呢,后面有个解释)...

2019-10-24 15:51:57 714

原创 STM32F411RE-0002-了解ST官网

完成一个ST 官网的注册是有必要的,因为ST的所有资料都是可以在官网上下载到,都是free。了解清楚这个官网的内容,对于后续的开发工作是很有帮助的。进来之后。Search:很好用的搜索框Product:是告诉你ST公司都有哪些chip可以提供,你可以在这里按照你需要的芯片来找。Application:是告诉你ST的chip可以应用到的产品领域,你可以在这里按照你想做的产...

2019-10-24 14:38:36 413

原创 STM32F411RE-0001-拿到了敲门砖

我手上有一块板子如下图。收集该板子的信息:板子名称:NUCLEO-F411RE有两颗chip:STM32F103CBT6和STM32F411RET6U为什么会有两颗STM32 的芯片呢,后面的文章会介绍。这里说明硬件开发环境已经有了。...

2019-10-24 14:18:29 518

原创 该怎么理解BLE ATT protocol是Sequential Protocol

ATT PDU有六种:command: client-&gt;server, not need server to response;request:client-&gt;server,need server to response;response:server-&gt;client, that is response the request from client;notification:s...

2018-07-05 17:59:36 425

原创 如何根据死机时的栈空间数据分析推导调用栈的情况

通过死机时刻的寄存器查看是最容易入手的;R13是当前栈顶;R14是LinkLR;于是就知道程序是在运行0x8055C6A的这条指令出现了问题;这条指令是将R3的值给到PC就出错了。从前面可以看到R3是0xAA8AAAB,将这个值给到PC,考虑到是thumb指令,于是给的就是0xAA8AAAA,这确实和当前死掉的时候PC的值一样;结果查看0xAA8AAAAA处都不是指令,都是全零的东西,怪不得会造成...

2018-07-05 15:17:16 1110 3

原创 传统蓝牙GAP CONNECT

主动连接:被动连接:

2018-06-25 20:07:06 423

原创 Trace32在分析死机dump问题时的技巧

通过dump出来死机时候的 log ,结合elf文件,进行分析,处理成trace32可以接受的cmm文件。-----》本篇文章不介绍如何转成cmm文件的过程。-----》在cmm的基础上如何分析出更多的死机原因,以便找到解决方案;通常直接的方式及时通过死机时候的call stack来分析,如下图;有时我们需要查看一些全局变量在死机之前的内容,可以通过view-》symbol-》browse,然后找...

2018-06-24 12:02:00 13150 2

原创 如何管理一段内存的分配和释放---3

以freertos中heap_4.c中对内存的管理举例说明。如下是初始状态,即对该内存块管理的初始状态;xStart.next指向的空间放的是BlockLink_t的管理结构体,那么该管理结构体的size是要包括该管理结构体大小的。  如下图即可看出在申请了一块出去之后的状况;橙色next表示都是还未分配的地方;浅绿色表示分配出去的地方;通过该图片右下角的例子看到next=0,size=0x800...

2018-06-24 11:19:24 364 1

原创 如何管理一段内存的分配和释放---2

===========================================================================下面的这种管理内容的方式,是将一段空间(总共60Byte)划分成2中类型,1和2每段大小相同假设为20Byte;3和4每段相同假设为10Byte;管理者有个链表,该链表指向1的起始地址;1~4很相似,以2为例。A---》要能够指向下一个地址空间;B-...

2018-06-22 18:09:51 193

原创 如何管理一段内存的分配和释放

============================================================================管理一段内存buf的分配和释放,一般是会要牺牲一些其他的内存空间manager来作为管理这段buf;下面通过下图来详细描述对这段内存的管理操作。这幅图是中间过程中对该空间的使用情况,假设此时该空间被分成了5部分,1~4这几个部分都是已经正在被使用了...

2018-06-22 17:47:08 670

原创 S3C2440-Datasheet

S3C2440用的是ARM920T开发的,采用AMBA:增强微控制总线架构·  Around 1.2V internal, 1.8V/2.5V/3.3V memory, 3.3V external I/O microprocessor with 16KB I-Cache/16KB DCache/MMU·  External memory controller (SDRAM Cont

2016-10-16 22:52:37 1078

原创 BLE Spec解读

2016-08-28 18:25:37 1482 2

原创 [Bluetooth Spec Vol2.A]RADIO SPECIFICATION

BLE hash = ah(IRK, prand)Advertising channel packets shall have 10101010b as the preamble.The data channel packet preamble i

2016-08-28 17:48:19 356

原创 Nodic 开发板上的使用

GPIO的控制部分,经常用来操作LED灯,读取BUTTON的状态。对GPIO的控制部分,主要是在nrf_gpio.h中,最基本的几个接口使用:nrf_gpio_cfg_outputnrf_gpio_cfg_inputnrf_gpio_pin_setnrf_gpio_pin_clearnrf_gpio_pin_readCommon部分,经常会用

2016-08-28 13:06:28 979

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除