蓝牙BLE
裸机开发,BLE,nrf52832,nordic,C,嵌入式,蓝牙协议
qq_27182175
这个作者很懒,什么都没留下…
展开
-
(十二)FLASH存储之FS和FDS
FLASH存储之FS和FDS1.fstorage1.1勾选配置1.2相关代码2.FDS2.1配置2.2相关代码1.fstorage1.1勾选配置1.2相关代码写flash比较耗时间,此时cpu挂起,可能导致ble连接断开。1页为4KB注意大量数据的话要分批写入。擦除和写入分开进行//FS事件处理函数static void fstorage_evt_handler(nrf_fstorage_evt_t *p_evt){ //FS操作错误 if (p_evt->resu原创 2020-12-08 11:35:42 · 2408 阅读 · 0 评论 -
微信硬件入门
参考资料1.微信硬件平台官网https://iot.weixin.qq.com/wiki/new/index.html?page=2-12.从蓝牙开发的视觉解读微信Airsync协议https://mp.weixin.qq.com/s?_biz=MzA4MTkzMjE5Nw==&mid=401204867&idx=1&sn=c4e6866cc91deac0605855cd7190e372&scene=23&srcid=1130VBGlXHw0HonIQUmBQ原创 2020-06-30 11:20:37 · 659 阅读 · 0 评论 -
sourceinsight使用教程
如何新建工程1.新建文件夹,存放工程2.打开软件,点击project->new project 弹出如下所示页面,分别为工程名,存放路径。3.进入下一步4.添加文件然后弹出添加文件对话框然后点击确定,因为没有添加任何文件,所以会有提示5.新建文件点击保存文件(crtl+s),存放到work目录下基本设置1.View->Panels->Project File List 可以在右侧看到全部文件,如果右边没有,点击快捷键的P2.Options->原创 2020-05-08 17:59:22 · 947 阅读 · 0 评论 -
(十一)RSSI接收信号强度(主机信号强度)和发射功率
db与dbmRSS=10lgP P是功率,RSS是信号强度(灵敏度)例1:如果发射功率p=1mv,带入则为0dbm例2:对于40w的功率则,RSS=10lg(40w/1mv)=10lg(40000)=46dbm无线信号的dbm全是负,只有理想状态下才为0,也就是全部都接收到了发射功率(没有损耗)...原创 2020-04-28 10:05:14 · 4337 阅读 · 0 评论 -
(十)蓝牙MAC地址
BLE MAC地址分类1.BLE设备可以使用公共地址和随机地址,至少使用其中一种,也可以有两种,地址的长度是6个字节2.公共地址:从IEEE购买,保证唯一性3.随机静态地址:自己定义,上电初始化完成以后不能修改。剩余46位不能全0或者全1,1个上电周期内不能变,下次上电可以变4.随机可解析私有地址:定时更新,在广播,已经连接过程中也可以修改5.随机不可解析私有地址:地址定时更新,...原创 2020-04-28 09:51:29 · 4965 阅读 · 0 评论 -
(九)实现一个自定义profile
私有profileSIG定义了一些profile,服务,特征和根据GATT层定义的属性,然而并不是所有的服务都是用SIG服务。只要协议栈支持GATT,就可以简历自己的profile,服务,特征...原创 2020-07-16 15:22:03 · 605 阅读 · 0 评论 -
(八)协议栈时钟如何更改
外部时钟1.默认为外部时钟,32.768HZ2. nrf_clock_lf_cfg_t const clock_lf_cfg ={.source = NRF_SDH_CLOCK_LF_SRC,//时钟源.rc_ctiv = NRF_SDH_CLOCK_LF_RC_CTIV,.rc_temp_ctiv = NRF_SDH_CLOCK_LF_RC_TEMP_CT...原创 2020-04-23 18:42:35 · 403 阅读 · 0 评论 -
(六)APP 按键的使用
11原创 2020-04-23 18:11:07 · 1010 阅读 · 0 评论 -
(七)实现一个标准的profile
什么是profileprofile就是配置文件,包含一个或者多个服务。分为公有profile和私有profile什么是service服务是一组特征和通过他们所公开的行为的集合,一个服务可以包含多个特征。是用于组织数据传输的最小单元。分为公有服务和私有服务什么是service包括声明(GATT属性),数值,描述符(可选)...原创 2020-04-17 17:12:52 · 931 阅读 · 0 评论 -
(五)APP软件定时器
什么是APP定时器基于RTC1实现的软件定时器,具有硬件定时器的功能,分为单次(超时后手动启动)和周期性的(自动启动)缺点:如果调用者优先级高,则在返回之前不会执行软件定时器的回调,不适用短时间定时,占用CPU时间优点:灵活,省电。BLE总会启动RTC1,软件定时器又是基于RTC1步骤1.参考蓝牙工程样例,在定时器初始化里面添加自己的定时器,注意定时器模块如何定义的2.启动定时器,注意...原创 2020-04-17 16:01:50 · 391 阅读 · 0 评论 -
(四)关于 UUID
什么是UUIDUUID是128位的数字,用来标志属性的类型,服务也是一种属性,也需要UUID16位的UUID是精简版的,结合UUID基数就可以凑成128位的,标准UUID,厂商自定义UUID都是采用这种模式0x1800-0x26FF 作为服务通用唯一标识码0x2700-0x27FF 作为标识计量单位0x2800-0x28FF 作为区分属性类型0x2900-0x29FF 作为特征描...原创 2020-04-17 11:07:31 · 2543 阅读 · 0 评论 -
nrfgo studio无法识别nrf52832
问题点通过nrfgo studio安装包安装的nrfgo studio和nrf5x-command-line-tools,这个工具会自动安装jlink,安装完毕之后在mdk里面可以正常使用,就nrfgo studio无法识别,注册表也已经改过了(防止路径不正确)以前手动安装jlink没有出现过这种问题。解决办法参考此文章顺利解决,https://blog.csdn.net/sinat_333...原创 2020-04-14 17:18:13 · 1464 阅读 · 0 评论 -
BLE层次结构
BLE体系结构图各层次说明1.PHY 2.4G 3个广播信道,37个数据信道,跳频,这层做的好不好直接决定功耗,距离,灵敏度等2.LL选择哪个信道,怎么识别空中数据,什么时间发送数据,怎么保证数据完整性,ACK,重传,对链路进行管理控制,负责发送和接收数据3.HCI 可以是API也可以是硬件接口,如串口,usb4.L2CAP向上层提供数据封装服务,允许端到端数据通信5.SM提供配对和...原创 2020-04-06 20:14:46 · 1039 阅读 · 0 评论 -
蓝牙基础知识
蓝牙的3种标志1.双模设备,如手机,既支持BLE也支持传统蓝牙2.传统蓝牙设备,如蓝牙耳机3.单模设备,如手环,只支持BLE原创 2019-11-12 16:02:12 · 1268 阅读 · 0 评论 -
(三)蓝牙样例工程分析
流程框图代码详解1.log初始化,并配置UART/RTT输出,非必须2.定时器初始化,此定时器是基于RTC1的软件定时器,可以创建多个,必须的,主要有以下用途:(1)按键消抖以及长按和短按(2)定时驱动LED,和BLE时间配合实现BLE状态指示(3)连接参数更新,连接成功后,开启APP定时器,超时后进行连接参数更新(4)创建用户定时任务3.按键和LED初始化,并提供了bsp_ev...原创 2019-09-19 15:21:30 · 484 阅读 · 0 评论 -
(二)nrf52832如何debug
1.在上一篇的基础上打开工程2.将此宏定义改为#define DEVICE_NAME "Nordic_Template_xxxxxxxxxxxxxxxxxxxxx",字符串长度超过31就行3.首先打开MDK魔术棒,C/C++选项,定义宏DEBU查看打印日志,可迅速定位错误发生在main.c的211行,跟踪可知是设置名称出错 ...原创 2019-09-11 20:12:38 · 1424 阅读 · 0 评论 -
(一)nrf52832如何改变日志输出等级
1.进入以下路径,nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_template\pca10040\s132\arm5_no_packs,在MDK下打开蓝牙样例工程。输出终端选择如下:日志总开关默认打开,模块开关自己选择 2.打开Application,可以看到有main.c和s...原创 2019-09-11 14:44:13 · 573 阅读 · 0 评论 -
nrf52832之TWI(IIC)
IIC1.nrf52832中iic叫做twi2.结构框图3.tx和rx只需要给7位地址,具体库函数会自己加上读写方向原创 2020-05-18 14:34:18 · 1062 阅读 · 0 评论 -
nrf52832之SPI
3种SPI1.SPI:不含DMA的SPI主机,不推荐使用2.SPIM:带DMA的SPI主机,单次最大传输255字节3.SPIS:带DMA的从机4.以上3者共享寄存器,所以只能使用其中一个,无法共存5.支持3路SPI6.为了降低功耗,先停止SPIM,然后禁用SPIM外设7.看sdk_config就知道是SPI还是SPIM8.如果初始化提供回调了就是非阻塞模式,为NULL就是阻塞9.通过APP程序控制CS...原创 2020-05-18 13:31:33 · 2445 阅读 · 0 评论 -
nrf52832之NVMC
内部flash相关1.内部flash分布nrf52832 XXAA flash地址为:0X0000 0000~0X0008 0000,总共512K,分为128页,每页4K字节,每页分为8个块,每块512字节。虽然最小分布单位是块,但擦除最少1页2.写入和擦除之前必须先使能,但是不能同时使能写入和擦除3.只能按字写入,否则会导致硬件错误,写的过程中,CPU是挂起的,擦除也是挂起CPU4.具有i-cache缓存5.擦除/写入寿命10000次6.时间消耗...原创 2020-05-18 10:41:03 · 589 阅读 · 0 评论 -
nrf52832之ADC
ADC1.8/10/12位,过采样可达14位2.单端(内部接地)(8个)和差分模式(最多4个),默认是单端模式3.触发方式,软件触发,rtc定时触发,ppi触发4.外部引脚固定,不能随意映射5.单次模式,在没有过采样的时候,RESULTDONE event事件等同于DONE事件,数据通过EasyDMA保存到RAM之前,这两个事件都发生连续模式,在ADC内部有一个SAMPLERATE寄存器,可以配置成timer,配置其比较值可实现定时采样,触发一次就可以对所有通道采样(其实这种方式只能使用一个通道原创 2020-05-18 10:18:37 · 999 阅读 · 0 评论 -
nrf52832之看门狗
看门狗1.启动START任务,加载CRV寄存器的数值,然后向下计数到0,产生溢出事件,复位。如果使能了看门狗中断,则推迟两个周期复位timeout=(CRV+1)/32768默认程序里面给的2S原创 2020-05-17 16:29:29 · 597 阅读 · 0 评论 -
nrf52832之RTC
RTC概念RTC:real time clock,可以直接读取时间RTC:real time counter,无法直接读取时间的,单片机基本就是这种RTC框图计数器递增的频率计算:32.768KHZ/(分频+1)LFCLK计数器每增加一次,就产生1个TICK世间(可以关闭此事件)溢出事件默认关闭TICK事件默认关闭,没有用到的事件一定要关闭,否则事件会增加电流消耗,同时还会从低功耗唤醒...原创 2020-05-17 16:09:32 · 863 阅读 · 0 评论 -
nrf52832之PPI
什么是PPI1.可编程外设互联,把事件和任务连接起来,自动触发任务,无需CPU参与。类似DMA效果2.总共32个PPI通道,(0-19)供用户编程使用,(20-31)已经预编程了,可以添加到组,可以打开或关闭3.框图如下所示4.在每个PPI通道上,信号与16M时钟同步,与16M同步事件延迟一个周期,异步事件最多延迟一个周期,快捷方式不会被延迟5.PPI寄存器可以通过PPI触发,例如CHG0EN6.有6个PPI组CHG[0]-CHG[5],把通道加入group实现批量管理.比如:组0加入了3个通原创 2020-05-15 17:48:55 · 637 阅读 · 0 评论 -
nrf52832之timer
概述1.nrf52832有5个定时器,timer0-timer4,可以配置为16位,8位,24位,32位定时器,模式选择就是指配置成多少位的2.时钟框图如下3.根据时钟频率自动选择时钟源,无需手动指定选择哪个时钟源...原创 2020-05-15 16:12:26 · 1053 阅读 · 0 评论 -
nrf52832之温度测试
补码和原码转换#define MASK_SIGN (0x00000200UL)#define MASK_SIGN_EXTENSION (0xFFFFFC00UL)static __INLINE int32_t nrf_temp_read(void){/**@note Workaround for PAN_028 rev2.0A anomaly 28 - TEMP: Negative measured values are not represented correctly */原创 2020-05-14 11:34:40 · 777 阅读 · 0 评论 -
nrf52832之UART和UARTE
UART特点1.有6个硬件rx FIFO,发送没有2.OFF模式引脚配置3.UARTE指的是带easydma的UARTzh4.注册回调函数,里面处理就可以原创 2020-05-13 18:55:40 · 2724 阅读 · 0 评论 -
nrf52832之GPIOTE
GPIOTE模块gpio无法把输入设置为中断触发,gpiote则可以。gpiote有8个通道,每个通道可以分配给1个引脚,此引脚可以是任务模式或者事件模式gpiote任务模式可以置位,清零,翻转io,优先级从高到低gpiote事件模式可以上升沿,下降沿,任意边沿触发,优先级从高到低...原创 2020-05-13 17:06:38 · 749 阅读 · 0 评论 -
nrf52832寄存器类型和外设资源共享
寄存器类型1.task寄存器,执行输出等2.event寄存器,中断3.快捷寄存器,例如ppi,把task和event绑定,自动触发任务,无需CPU参与4.通用寄存器,和一般单片机五区别外设资源共享具有相同ID的只能使用一个,无法同时使用...原创 2020-05-12 18:43:25 · 461 阅读 · 0 评论 -
nrf52832之GPIO
GPIO1.一般断开输入缓冲,省电。输入缓冲类似电阻的作用,可以降低电压/电流波动对管脚的影响2.靠近电源和天线的引脚,要设置为低速,不能设置为高驱动能力,否则影响蓝牙通信距离等3.SENSE寄存器可以感知GPIO状态,并把感知结果可以存入LATCH寄存器(前提是你选择了捕获模式LDETECT),DETECTMODE是用来配置detect模式,默认是所有引脚的DETECT信号合并到一起。如果满足感知条件,则立即置高,如果启动感知之前DETECT为低,则将触发port事件...原创 2020-05-12 18:29:37 · 857 阅读 · 0 评论 -
nrf52832概述
nrf52832特点1.具有32个IO口(P0.0-P0.31),每个都可以单独访问,M4内核2.具有8个带模拟通道的GPIO,可用于SAADC,COMP,LPCOMP输入3.可以配置输入驱动强度,内部可以选择上拉或者下拉4.所有引脚的高电平或者低电平触发唤醒5.任何引脚状态变化可以触发中断6.PPI任务/事件可以使用所有的引脚7.可以通过PPI和GPIOTE控制一个或者多个GPIO输出8.在SENSE信号上捕获的GPIO状态变化可以由LATCH寄存器存储9.3个4通道PWM,带EasyD原创 2020-05-12 17:03:19 · 3902 阅读 · 0 评论 -
nfr53832程序下载方式
裸机程序1.直接mdk下载2.j-flash下载3.nrfgo下载BLE程序1.nrfgo下载,不过nrfgo速度有点慢2.mdk下载,首先把target切换到协议栈,点击下载协议栈bin文件(千万不要点了编译),然后切换target到APP,直接下载就可以了注意:下载APP时无法全片擦除,必须切换到协议栈target...原创 2020-05-12 13:29:23 · 992 阅读 · 0 评论 -
SDK15简介
SDK目录components目录examples所有的例子程序,10040对应52832,10040e对应52810,10056对应52840,10059对应52840 usb dongle原创 2020-05-12 13:18:11 · 445 阅读 · 0 评论