- 博客(32)
- 收藏
- 关注
原创 nrf52840蓝牙协议栈初始化
128bitUUID不同,协议栈初始化中,设置UUID数目就是2。一:不同的128bit UUID的数量,就是要设置的值。空间,专门做主服务,服务里面的属性提供一个列表空间。2.MTU大小改变,需要重新跟踪RAM。二:UUID数目增加,需要修改RAM。5.使能服务变化特征值,比如指示。加入一个指示的空中属性的特性。外部低速32.768khz。3.协议栈观察者函数:派发。1.协议栈回复使能应答。4.GATT属性表大小。协议栈时钟:内部RC。2.配置协议栈的参数。
2024-10-18 17:16:07 132
原创 nrf52840 FLASH内存
nrf_fstorage_api_t * p_api,//API接口(就是带不带协议栈)//在调用nrf_fstorage_init()函数初始化之前,我们也可以使用nrf5_flash_end_addr_get()写入函数fds_record_write两个结构体指针fds_record_t 和fds_record_desc_t。//定义FS的空间(起始地址和结束地址),我们必须自己设置起始地址和结束地址。//定义名称为my_fs的FS实例:定义回调函数和FS空间。
2024-10-17 20:39:25 804
原创 Nordic 学习小记录
这个函数的作用是配置和初始化开发板上的LED和按钮,使它们可以被系统使用。初始化后,系统就可以通过相应的接口控制LED的亮灭和检测按钮的状态,以实现各种功能,比如指示状态、用户输入等。因此,一般情况下,在嵌入式系统开发中,确保对开发板上的外设进行正确的初始化是非常重要的,包括LED和按钮在内。通常是在系统初始化阶段的一个重要步骤,以确保开发板上的LED和按钮可以正常工作,为后续的应用程序提供支持。按钮无法检测:没有进行按钮的初始化,系统无法检测按钮的状态变化,也就无法响应用户的按键操作。
2024-10-17 10:07:48 676
原创 想在freertos里面添加UART printf打印
加C:\Users\RDC-15\Desktop\ble_freertos_uart _rtt\ble_freertos_uart _rtt V0.0.5 _ble\components\libraries\uart/app_uart_fifo。添加这个头文件 C:\Users\RDC-15\Desktop\ble_freertos_uart _rtt\ble_freertos_uart _rtt V0.0.5 _ble\components\libraries\fifo。是没有加app_fifo.c。
2024-10-12 18:42:48 347
原创 nrf52840在官方开发板上可以广播,自己板子上无法广播
由于射频一定要用到外部高频晶振,建议用示波器测一下高频晶振是否可以正常起振,以确保高频晶振工作没问题。Softdevice默认使用外部32K晶振作为低频时钟,如果你的板子没有外部32K晶振,那么需要更改协议栈默认初始化参数,将低频时钟改为内部RC 32K。按道理来说,蓝牙广播不需要改变IO口,所以即使换板子应该也是可以直接广播的,但是广播不了,所以修改。因为是加了freertos,所以以ble_app_hrs_freertos为运行例程。nrf52840经过我的板子实际运行,需要修改如下几个地方。
2024-10-12 16:58:36 371
原创 NRF52840 FreeRTOS 基于 FreeRTOS 的蓝牙低功耗(BLE)
虽然代码只有一个任务和一个中断处理程序,但通过中断机制和 FreeRTOS 的任务调度,实现了对 LED 状态的并行控制。任务在等待 RTC 中断时,能够响应并处理高优先级的中断,达到同时处理多个任务的效果。这样设计使得系统可以高效地管理时间敏感的操作(如 LED 的闪烁)而不需要频繁的轮询。什么是轮询,什么是中断,什么是信号量,关系是什么?轮询是主动检查状态的方式,简单但资源消耗大。中断是被动响应事件的机制,能够快速处理紧急任务。信号量是用于多任务环境中控制资源访问的工具,确保安全和同步。
2024-10-10 14:00:06 1197
原创 nrf52840添加freertos
2.别的能正常打印,就是vTaskStartScheduler();任务调度器 好像进不去一样,在RTT上显示fatal error。main.c里面改其实确实挺简单,但是一直打不到想打印什么就打印什么的效果,找问题找了一天!不过最后把这两个删了也完全正常运行了,可能还是下一个解决方案解决的。只要把官方例程的Free RTOS.c文件复制过来就行了。后来以为是没有写freertos_init初始化?上网查了一下,可能大家显示的不一样。后来发现基本调通以后。报错显示的是缺这两个。
2024-09-25 17:02:28 363
原创 rtt printf(没写完)
COM28 (JLink CC UART Port):类型:J-Link 调试器的串口接口。通过 J-Link 调试器与目标板连接,通常需要特定的 J-Link 连接线和配置。通过 USB 连接到 PC,适配器通常带有标准的串口针脚(如 TX/RX/GND)。LOG配置:UART作为输出终端,使用UART打印LOG:NRF_LOG_INFO("123124\n");LOG配置:RTT作为输出终端,使用JLINK-RTT打印LOG:NRF_LOG_INFO("111");串口调试助手的两种端口号。
2024-09-25 16:51:07 205
原创 .h头文件写法
API FUNCTIONS (.c文件的函数名;#define 给...下定义。#ifndef 头文件名字。typedef 定义类型。#define 头文件。struct 结构体。
2024-09-20 19:25:45 304
原创 空中属性读写
主函数里面决定什么时候上传数据:可能是按键按下后上传数据,决定要上传数据就可以调用。从机可以强制使能通知sd_ble_gatts_sys_attr_set()SDK17特性添加 :characteristic_add 函数。ble_lbs_on_button_change上传函数。特性:有个UUID,添加一个按键的UUID。一般需要主机进行使能通知,才能上传数据。UUID_type。数据、数据长度、数据操作句柄。
2024-09-13 09:49:16 216
原创 nrf52840 Battery Service电池服务搭建步骤
GAP(Generic Access Profile)和GATT(Generic Attribute Profile)是蓝牙技术中两个不同的概念,它们分别定义了蓝牙设备在不同层面上的行为和功能。这些角色定义了设备在蓝牙通信中的功能和行为。总之,GAP 和 GATT 在蓝牙技术中各自扮演不同的角色,GAP 关注设备间的基本通信行为,而 GATT 关注数据交换的规则,两者共同协助蓝牙设备实现有效的通信和数据传输。因此,GAP 主要关注设备之间的基本通信行为,包括设备的发现、连接和安全性等方面。
2024-09-05 18:49:11 821
原创 蓝牙协议栈初始化(蓝牙从机工程框架)
传输效率优化 - MTU 的大小会影响传输效率,过小的 MTU 会增加开销,而过大的 MTU 可能会导致数据包丢失。总之,MTU 是蓝牙通信中一个非常关键的参数,开发者需要根据具体应用场景合理设置和管理 MTU,以优化蓝牙通信的性能和稳定性。兼容性 - 不同蓝牙设备之间可能支持的 MTU 大小不同,需要协商使用兼容的 MTU 大小。这两个服务的128bit 的UUID 是不同的,那么协议栈初始化中,设置的UUID数目就是2。一:不同的128bit UUID的数量,就是这个要设置的值。
2024-08-30 10:54:37 305
原创 蓝牙BLE
从机广播主机扫描发起连接(对什么设备)连接建立数据交换蓝牙学习规划蓝牙BLE工程搭建蓝牙任务的建立(私有服务,自定义。SIG小组共有服务。UUID)蓝牙数据传输(蓝牙串口透传(接收数据内部FLASH存储),蓝牙遥控器实现(温湿度采集方法),讨论传输速度大小)蓝牙参数及安全设置(安全属性)(MAC,rssi,密钥)蓝牙综合应用(ibeacon,自定义广播域动态广播,防丢器(双向呼叫,防止丢失)蓝牙DFU,固件升级)
2024-08-29 15:37:17 983
原创 I2C 读取6D lsm6dsv加速度,角速度和温度
表示。表示。通信上的RX和TX代表的意思:TXD 发送数据 Transmit(tx) Data 的简写形式RXD 接收数据 Receive(rx) Data 的简写形式2.platform_write 和I2C_WriteData 关系。platform_read和 I2C_ReadData关系:return 0;return 0;0x6areglenbufphandleregbufplen/**@brief TWI(I2C)读数据函数。
2024-08-27 11:57:14 693
原创 NTC连接到nrf52840
/ 注意:这里的 +0.5 可能是个调试值,通常不需要。在main函数里面调用temp:temp = temp_data(saadc_val);调用nt saadc_val,返回 temp;千万注意:有log函数,需要写math.h头文件。NTC是热敏电阻,电阻值和温度值之间的转换。SAADC将采样值转化为电压值。将串口RX连接到下载器TX。串口TX连接到下载器RX。热敏电阻B值为3950。
2024-08-09 18:30:43 230
原创 非易失性存储器控制器NVMC
NVMC提供了写或擦除Flash区域和UICR(用户信息配置寄存器)的功能写FLASH之前必须通过写寄存器config.wen来使能flash的写操作。同样,擦除flash之前必须通过写寄存器config.een来使能flash的擦除操作。NVMC寄存器看门狗定时器WDT:发生软件故障时,(如程序陷入死循环或者程序跑飞),强制复位单片机,让单片机重新运行程序。本质是一个计数器,不过作用是固定的,一旦计数值累增到设定的值或者递减到0,即超时时,单门狗定时器产生复位信号,复位系统。
2024-08-02 18:09:59 567
原创 pwm spi
PWM周期:指PWM信号中单个脉冲的持续时间,决定了PWM信号的频率。PWM序列:指一系列按照特定规律排列的PWM脉冲,通过控制脉冲的宽度和/或周期来实现对模拟信号的近似表示。在实际应用中,PWM周期和序列的选择取决于具体的应用场景和需求。例如,在电机控制中,需要根据电机的特性和控制要求来选择合适的PWM周期和占空比;在LED调光中,则需要根据所需的亮度范围和调节精度来选择合适的PWM序列。PWM通用装载模式和组装载模式,波形装载模式。
2024-07-31 17:07:10 921
原创 【无标题】
解决方案:需要找到nrf_nvmc.h的头文件地址,nrf_nvmc.h 是 非易失性存储器控制器(NVMC)的头文件。这些函数通常包括页面擦除(nrf_nvmc_page_erase)、字写入(nrf_nvmc_write_word 或 nrf_nvmc_write_bytes,具体取决于实现)等功能。例如,你可以使用nrf_nvmc_page_erase函数来擦除Flash页面,使用nrf_nvmc_write_word函数来向Flash写入数据。// <e>开始复制。
2024-07-25 18:58:55 240
原创 类的封装和继承,包
在上面的示例代码中,Person类包含公共成员和私有成员,Student类继承自Person类,并添加了额外的成员。在main函数中,可以通过公共的接口访问和修改对象的状态,但不能直接访问基类的保护成员和私有成员。总的来说,类的封装是面向对象编程的核心思想之一,可以通过访问控制权限来实现对类的封装。在C++中,派生类可以通过继承基类的成员来扩展其功能,这种机制称为继承。对于sv类的继承,也是同样的原理。总的来说,SystemVerilog中的类继承机制与C++类似,可以通过继承实现代码的复用和功能扩展。
2023-05-11 16:38:11 125
原创 又学sv了
非组合型数组中的每一个元素都是一个单独的寄存器或者一个硬件逻辑单元,并且各个元素之间是相互独立的。由于非组合型数组中的每个元素都是独立的,因此可以单独进行赋值操作。的信号,并将其作为该模块的双向数据通信端口。在模块内部,在需要读取或设置该端口状态的代码处,可以直接使用该变量名。的信号,并将其作为该模块的输出端口。的信号,并将其作为该模块的输入端口。用于声明模块的输入端口,用来读取从外部输入的信号。在上面的例子中,我们声明了一个大小为3的8位宽的非组合型数组。用于声明模块的输出端口,用来对外输出信号。
2023-04-20 21:15:15 492
原创 有限状态机
题目1:FSM1(异步复位)这是一个摩尔状态机,具有两个状态,一个输入和一个输出。实现此状态机。请注意,重置状态为 B。此练习与fsm1s,但使用异步重置。模块声明input clk,input in,分析:状态机的代码编写方式有三种:一段式,两段式和三段式。其中一段式不推荐,常用为两段式和三段式。两段式和三段式的区别在于三段式多了一个寄存器输出,在某些情形下能够消除电路中毛刺现象。状态机有摩尔状态机和米利型状态机。
2023-04-13 22:03:41 190
原创 hdlbits时序电路 counters
小补充:verilog、=、==、区别在Verilog中,=和==有不同的含义。=用于无阻塞赋值,在并行结构中表示同时执行,该语句在下一个时间点被评估为真实信号的赋值。==用于检查两种操作数(通常是数字)是否相等,并返回True或False。两个操作数必须类型匹配且值相等才能返回True,否则将返回False。简单来说,“=”表示赋值,而“==”表示相等运算符。例如,a = b;表示将b赋值给a,而if (a == b) 表示如果a和b的值相等,则执行语句。
2023-04-13 21:57:14 256
原创 sv,verilog
提高设计的重用性和可扩展性:通过将电路分解为多个可重复使用的模块,可以将这些模块存储在库中,供其他设计使用,在未来的设计中也可以更加容易地对电路进行扩展。总之,Verilog 中的例化提供了一种有效的组织电路结构、重用设计和提高设计可读性和可维护性的方式,是 Verilog 电路设计中必不可少的技术之一。需要注意的是,敏感列表的使用可以影响电路的行为和性能。重用电路功能:在一个设计中,多个电路可能需要执行相同的逻辑功能,此时可以将这些功能封装为一个模块,并对该模块进行实例化,以达到重用的目的。
2023-04-08 15:58:07 1385
原创 【无标题】
不可综合电路(不可综合的电路)通常指那些不能被标准元件组合为可综合电路的电路,这些电路具有高度的定制性,并需要手工设计和优化。锁存器根据输入信号(或上一个锁存器的状态)来确定输出信号,并将其保存在内部元件中,直到下一个时钟边沿或其他控制信号到来,再将其输出到外部电路。与可综合电路相比,不可综合电路更难设计、调试和维护,但它们也具有更高的灵活性和性能,能够满足某些应用的特定需求。组合电路和时序电路是数字电路中两种基本的电路类型,它们的主要区别在于电路中的逻辑元件如何连接。
2023-04-08 15:52:46 372
原创 【无标题】
学verilog,刚一开始就是什么空白符\b,注释符//这些.那其实如果用过C语言,这些基础的语法点应该是看一眼就知道了,但是问题是什么,是首先不知道这个Verilog是干啥的,其次完全不知道一段代码正常怎么写,assign是啥,always是啥,reg也会经常说到,10‘b101是啥都不知道,举个例子,如果一个信号的位宽为[7:0],则它可以表示8个比特(bits)的二进制数字,从最高位(MSB)到最低位(LSB)依次排列,即[7][6][5][4][3][2][1][0]。
2023-04-03 10:46:25 497 1
原创 【无标题】
通过 对仿真的频率函数生成的数据处理,以采样点频率为频率的细分方法得到的细分相位 的相位差的平均值为2.392×10- 6푟푎푑,而细分点频率按照均匀分布的细分方法得到的 细分相位的相位差的平均值为 2.496×10- 8푟푎푑。使用 细分点频率按照均匀分布的细分方法对信号细分,得到的细分相位的相位差的平均值 为 7.744×10- 4푟푎푑,与对理论信号频率细分处理后的相位差相比很大,这表示在小波 变换处理信号提取瞬时频率过程有误差,需要对相关误差进行分析和优化处理。关键词:光栅干涉仪;
2023-03-21 08:25:16 55
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人