五、nrf52832-ble-profile(配置文件) profile1.profile是一种规范,规定了蓝牙与其他蓝牙设备通讯的一般行为(服务)。2.配置文件: 1.标准配置文件:由SIG采纳并使用 2.自定义配置文件3.service(服务):服务是一组特征和通过他们公开的行为的集合4.服务存在与从机中,每个服务代表从机的一种能力。5.特征: 1.声明(必须) 1.特征性质 2.数值句柄:决定访问权限等 3.属性UUID 2.数值(必须) 3.描述符6.数据传
补充:代码编辑器vscode + keil vscode推荐大家使用vscode作为代码编辑器,对比keil来说会舒服很多1.vscode的C语言编译环境搭建:参考:https://blog.csdn.net/ren648154292/article/details/111151724?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164014275616780265413147%2522%252C%2522scm%2522%253A%252220140713.130102334
四、nrf52832-蓝牙-定时器任务 蓝牙定时器任务1.定时器: 1.单次定时器:手动重启 2.循环定时器:自动重启 (这里使用的软件APP定时器是以RTC1为核心的)2.定义一个定时器 APP_TIMER_DEF(timer_id);3.定时器定时函数:(实现延时) APP_TIMER_TICKS(ms) (RTC1只能识别tick,该函数可以实现ms到tick的转换)常用定时器函数1.timer初始化函数:app_timer_init()2.创建timer函数: app_time
补充:nrf52832-ble-广播 示例程序#include <stdbool.h>#include <stdint.h>#include <string.h>/* log日志需要的头文件 */#include "nrf_log.h"#include "nrf_log_ctrl.h"#include "nrf_log_default_backends.h"/* 定时器需要的头文件 */#include "app_timer.h"#include "bsp_btn_ble.h"/* 蓝牙
三、nrf52832-蓝牙-广播的相关知识 广播1.广播的种类: 1.通用广播:可以被扫描,当有连接请求时,会作为从设备进入一个连接 2.定向广播:会占用整个广播信道 3.不可连接广播:不可连接,不可扫描(广播数据) 4.可发现广播:不可连接,但可被扫描2.广播数据报: 1.低字序 2.组成: 1.前导(8bit): 接入地址第一位为0:01010101 接入地址第一位为1:10101010 2.接入地址(32bit):
二、nrf52832的蓝牙工程模板 蓝牙1.nrf52832的蓝牙程序结构 1.配置log日志 2.配置APP定时器 (使用的是rtc1的软件定时器) 3.电源管理模块初始化 4.蓝牙协议栈初始化 5.GATT和GAP初始化 6.广播初始化 7.服务初始化 8.配置连接参数 9.开启广播 10.启动连接蓝牙示例程序相关资料可以参考官方sdk文件(头文件较多,建议直接使用官方例程修改)1.文件路径:examples\ble_peripheral\ble
一、nrf52832-蓝牙-简介 蓝牙的基础知识1.蓝牙的分类: 1.低功耗蓝牙:BLE 2.经典蓝牙 3.高速蓝牙2.常见的蓝牙设备类型: 1.单模蓝牙:只支持蓝牙低功耗 2.双模蓝牙:即支持双模蓝牙,又支持低功耗蓝牙3.BLE的三大组成部分:控制器、主机、应用程序3.pwm计数模式(15位计数器): 1.向上计数:计数到countertop(最大值)自动清零 t(周期) = clk * countertop 分辨率:clk 2.向上向下计数:计数先增加到countertop,在减小到0 t(周期) = clk * 2 * coutertop
十三、nrf52832的systick systick1.nrf52832的systick的定时为无中断,阻塞式的2.systick可以实现较高精度的定时(us)systick常见函数1.systick初始化函数:nrfx_systick_init()2.systick ms级延时函数:nrfx_systick_delay_ms(ms)3.systick us级延时函数:nrfx_systick_delay_us(us)systick示例程序#include <stdbool.h>#include <std
十二、nrf52832的RTC(实时计数器) RTC注意:这里指明的RTC不是实时时钟,而是实时计数器1.nrf52832具有3个RTC实时计数器(RTC0~RTC2)24位2.nrf52832没有系统systick,使用RTC为RTOS的系统调度提供支持RTC的常用函数1.RTC初始化函数:nrfx_rtc_init(&p_instance,&p_config,event_handle)2.使能RTC的tick函数:nrfx_rtc_tick_enable(&p_instance,enable_irq)3.配置
关于sdkconfig.h文件配置的使用说明 补充说明关于sdkconfig.h使用Keil Configuration Wizard的说明请自行参考此文章:https://blog.csdn.net/qq_15647227/article/details/89297207(注意:这里是针对keil5以上版本)
十一、nrf52832的SAADC(数模转换器) SAADC1.分辨率:支持8/10/12位(过采样可达到14位分辨率)使用过采样时,只能使能一个adc通道2.nrf52832具有8个adc通道 单端输入:1个通道 差分输入:2个通道3.满量程范围:0~VDD4.采样值:采样值 = [(vp - vn)* gain * 2^(resolution -m)]/参考电压 vp:为正极电压;vn:为负极电压;gain为增益;m:为0,单端,为1,差分 resolution:分辨率5.工作模式: 1.单次模式
十、nrf52832的看门狗(watchdog) watchdog1.看门狗的作用:防止程序跑飞(复位芯片)2.看门狗时钟源:32.768振荡器3.超时时间计算:t = (CRV寄存器 + 1)/32768 秒4.看门狗一旦启动,就无法停止。(可以配置config寄存器在cpu睡眠或仿真器将cpu挂起时暂停)WDT常用函数1.WDT初始化函数:nrfx_wdt_init(wdt_cfg,wdt_event_handle)2.WDT有8个可重装寄存器,申请喂狗通道函数:RR[0]~RR[7] nrfx_wdt_channel_allo
九、nrf52832的NVIC(非易失存储器flash) NVMC1.写flash之前必须配置写寄存器CONFIG.EEN=1对flash的扇区进行擦除,否则无法进行写操作(全部置1,页操作)2.配置写寄存器CONFIG.WEN=1 对flash进行写使能。(只能由1写为0)3.flash写入时都是以一个字(32位)对齐到地址上。4.nrf52832具有512kbyte的flash,可分为128页,每页4kbyte;每页分为8个数据块,每块512byte;每个块有128个字。5.写入数据时,cpu会被挂起。NVMC常用函数1.flash擦除页函数:
六、nrf52832的PPI(可编程外设互联) PPI1.PPI的作用:提供一个硬件通道,连接事件和任务。当事件触发时,不需要cpu的参与,硬件自行完成任务的驱动。2.PPI通道: 1.EEP:事件端点(1个) 2.TEP:任务端点(2个,主任务+从任务)3.PPI共有32个PPI通道(0~31),其中有12已经被预编译(20~31),其他由用户自主编程。预编译的通道也可进行分组,使用和禁止。4.每一个PPI通道的信号都被同步到16M的时钟上。5.nrf52832共有6个PPI分组(CHG(0)~CHG(5))PPI常用函数
八、nrf52832的temp传感器和random number随机数 temp1.temp传感器的分辨率:0.25℃2.温度传感器初始化函数:nrf_temp_init();3.开启温度传感器:触发start任务 NRF_TEMP->TASKS_START = 1;4.关闭温度传感器:触发stop任务 NRF_TEMP->TASKS_STOP = 1;5.读取温度值函数: nrf_temp_read()/4 (分辨率为0.25℃) 需要等待NRF_TEMP->EVENTS_DATARY事件触发temp示例程序
七、nrf52832的唯一id与加密解密 ID1.nrf52832芯片都具有一个64位的id号(唯一) 1.用作序列号 2.用作密码进行1加密 3.用于激活带安全机制的自举过程2.id存储位置:FICR寄存器中 id0 = NRF_FICR->DEVICEID[0]; id1 = NRF_FICR->DEVICEID[1];TEA加密算法//加密算法void encrypt (uint32_t* v, uint32_t* k) {uint32_t sum = 0; // 注意sum
五、nrf52832的timer定时器 timer1.定时器的功能:定时(需要配置比较/捕获寄存器的比较值)、计数2.nrf52832具有5个32位的timer定时器3.时钟源: 1.当f < 1MHz,系统自动选择PCLK1M的时钟源(低功耗) 2.当f > 1MHz,系统自动选择PCLK16M的时钟源4.timer的时钟频率可以选择(0-9分频) 无论使用哪个时钟源都是以16M的为基准timer常见函数1.定义定时器实例: nrfx_timer_t timer_instance =
四、nrf52832的gpioe gpiote1.gpiote不是简单的gpio,它是在gpio的基础上引入了task和event (task对应的是输出,event对应的是输入)2.gpiote具有8个通道(每个通道可以分配给1个引脚)3.gpiote的task任务(输出): 1.SET:置位任务(1) 2.CLR:清除任务(0) 3.OUT:翻转任务 (任务优先级:OUT > CLR > SET)4.gpiote的event触发方式(输入): 1.上升沿:NRF_GPI