自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文帮你彻底搞懂ARM Debug Interface之SWD(转)

ARM的文档写的已经很好了,但是关于上电以后的第一时间应该怎么操作,依然写的不够清晰,导致我第一次用的时候还是费了一些周折。今天做一个详细的梳理,希望能够帮助到更多的朋友。BTW, ARM_Cortex-M0/3 DesignStart系列会持续更新,只是中间可能会穿插其他知识点。SWD是Serial Wire Debug的简称,翻译成中文是”串行线调试”。

2024-01-29 13:57:45 1090

原创 嵌入式学习笔记之--ROM、RAM、DRAM、SRAM和FLASH的概念解析 - 全文(转)

由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。PSRAM容量有8Mbit,16Mbit,32Mbit等等,容量没有SDRAM那样密度高,但肯定是比SRAM的容量要高很多的,速度支持突发模式,并不是很慢,Hynix,Coremagic, WINBOND .MICRON. CY等厂家都有供应,价格只比相同容量的SDRAM稍贵一点点,比SRAM便宜很多。分不清NOR和NAND闪存。

2024-01-29 13:54:44 905

原创 RSL10读取Flash数据方法

从以上对照可以知道:Flash是按字读出,即每次读出是4个字节,而且在Flash中的4个字节是高字节在后,低字节在前面。比如0x12345678,在flash中的依次存储内容为:0x78 0x56 0x34 0x12,也就是所谓的小端存储模式。5.把从J-Flash读取函数烧录的代码与从J-Link RTT Viewer中查看打印输出内容做对照。2.从Main Flash中读取4k数据并存入PRAM2后打印的程序。3.从J-Flash读取函数烧录的代码。1.RSL10的ROM MAP图。

2023-12-06 09:18:43 90

原创 关于用ST-Link烧录STM32L051程序碰到的问题和解决方法

6.把SWD烧写频率改为100kHz(改为480kHz也可以)4.点确定后打开配置setting。经验分享,欢迎讨论留言。

2023-11-21 13:34:02 185

原创 串行外设接口 (SPI) 的基础知识

对于每个时钟周期,一位数据从主机传输到从机,一位数据从从机传输到主机。在这种类型的接口中,一个设备被视为总线的主设备(通常是微控制器),而所有其他设备(外围 IC 甚至其他微控制器)被视为从设备。在独立从配置中,主设备为所有从设备提供专用的从设备选择线,每个从设备都可以单独选择。同理,所有从机的所有 MOSI 管脚都连接到主机的 MOSI 管脚,所有从机的所有 MISO 管脚都连接到主机的 MISO 管脚。我们已经看到,主设备的工作是生成时钟信号并将其分配给从设备,以便在主设备和从设备之间同步数据。

2023-11-08 22:15:37 123

原创 RSL10 study:spi_cmsis_driver sample code 设置打印输出的方法

找到printf.h文件, 将OUTPUT_DISABLED改为OUTPUT_RTT即可,如图所示:

2023-11-03 00:07:08 55

原创 RSL10 study-SPI CMSIS-Driver Sample Code

这个示例项目演示了如何使用SPI CMSIS驱动程序同时操作两个SPI实例(SPI0和SPI1)。要使用此示例应用程序,必须在IDE。在**CMSIS Pack Manager**的右侧面板上,您可以看到**Pack和Examples**视图。在**包**视图中,您将看到**CMSIS包**。发现`ARM.CMSIS`,然后单击**安装**按钮。

2023-11-01 22:41:30 69

原创 rssi值越小越好吗 rssi值多少为正常

例如,在Wi-Fi网络中,-60dBm到-80dBm之间的RSSI值被认为是良好的信号质量,而低于-90dBm的RSSI值被认为是较差的信号质量,可能会导致速度变慢或者连接丢失。在无线通信中,RSSI值越大,表示接收到的信号质量越好,但是在实际应用中,RSSI值越小并不一定表示信号质量更差。一般来说,-50dBm到-70dBm之间的RSSI值被认为是良好的信号质量,-70dBm到-90dBm之间的RSSI值被认为是一般的信号质量,而低于-90dBm的RSSI值则表示较差的信号质量。

2023-11-01 13:53:52 780

原创 用STlink烧录工具和搭配STM32 ST-LINK Utility软件烧录STM32L051的方法

若目标板之前已经有烧录进睡眠程序,可以在给目标板上电的瞬间进行连接烧录,利用这个时间差。因为上电后的,目标板不会马上进入睡眠状态,此时可以正常连接和烧录,若进入睡眠状态后就无法连接了。这也提醒我们,在写带低功耗睡眠的程序时,在上电后最好进行3秒左右的延时再进入睡眠,以给后续的程序更新烧录有足够的反应时间。用STlink烧录工具和搭配STM32 ST-LINK Utility软件烧录STM32L051的方法。ST link与目标板连接的三根线要对应上:SWCLK,SWDIO,GND,并确保给目标板供电。

2023-11-01 10:09:06 3125

原创 C语言丨关键字enum用法详解,看这篇就够了

enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值,typeName是枚举类型的名字,花括号里面的元素(枚举成员)是常量而不是变量,这个一定要搞清楚,因为枚举成员的是常量,所以不能对它们赋值,只能将它们的值赋给其他的变量。枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。

2023-10-31 16:42:59 1139

原创 c语言中enum类型的用法!

在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。或者为: enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。说明: 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。这些值也称为枚举元素。枚举类型的定义和枚举变量的说明。

2023-10-31 16:30:53 509

原创 C语言-状态机模式

它使用C的指定初始化功能,将函数指针映射到枚举值,这样,state_handlers数组就像一个映射表,我们可以通过状态值STATE_OFF, STATE_ON等作为索引,得到对应的处理函数指针。例如,state_handlers[STATE_OFF]就会返回off_handler函数指针,我们可以调用该指针来执行off_handler函数。函数指针数组加强了代码的灵活性,让状态转换的逻辑变得非常简洁。1.假设我们的交通信号灯控制器有以下三个状态:绿灯状态、黄灯状态和红灯状态。现在系统处在什么状态?

2023-10-31 16:24:33 63

原创 BLE常用标准UUID及如何生产自定义UUID

SoftDevice 根据蓝牙技术联盟定义UUID类似的方式定义UUID:先增加一个特定的基本UUID,再定义一个16位的UUID(类似于一个别名),再加载在基本UUID之上。例如,在LED BUTTON示例中,0x1523作为服务的UUID,0x1524作为LED特性的UUID,0x1525作为按键状态特性的UUID。蓝牙核心规范制定了两种不同的UUID,一种是基本的UUID,一种是代替基本UUID的16位UUID。一个唯一的16位UUID,以代替上面的基本UUID的‘x’部分。

2023-10-26 17:45:20 3462

原创 通用唯一标识码UUID的介绍及使用

UUID全称:Universally Unique Identifier,即通用唯一识别码。UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32 = 2^128,约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。UUID的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的32个字符,如:550e8400-e29b-41d4-a716-446655440000。

2023-10-26 17:34:37 406

原创 如何理解BLE数据的Tx和Rx

本文的设计的问题:理解BLE Tx和Rx的方式​​1. 广播阶段BLE设备的交互流程。

2023-10-26 17:29:59 295

原创 BLE连接建立与断开

​本文涉及如下问题:如何建立连接如何提高传输速率异常时如何快速断开连接如何跳频BLE data的PDU如何展开分析初始化连接是在广播通道上建立的,参考 BLE:广播channel上的PDU分析,本文将重点介绍BLE连接。

2023-10-26 17:17:54 389

原创 BLE:广播channel上的PDU分析

广播者只是在广播通道发送广播数据,并不知道任何scanner的存在,advertiser和 scanner之间也不存在任何同步方式,只有广播和扫描所在的通道随机重合时,广播包才能被扫描设备收到,因此,和广播设备一样,扫描设备也有一些时间参数要求。但需要注意的是,扫描者发送SCAN_REQ请求无法携带有效用户数据(参考扫描类型的PDU Payload),因此广播和扫描者之间是单向通信,扫描者能知道广播者信息,但广播者无法知道扫描者信息。扫描者只有在收到广播数据后,才能去与广播者建立连接。

2023-10-26 16:58:32 85

原创 BLE设备之间的交互过程

Heart Rate Sensor对外广播,手机扫描搜索周围设备,并在收到Heart Rate Sensor的广播数据后发起连接,连接成功后搜索其提供的服务,并发现HeartRate Sensor服务的特性和操作方法,进而获取心率监测。一个设备要让其他设备能发现,则必须向外广播,而一个设备如果对广播者感兴趣,想进一步了解,则可以通过扫描该设备来进一步获取该设备提供的信息,通过这个阶段,扫描的设备已经基本清楚了广播设备信息,以及提供的能力,从而可以判断是否连接该设备。手机就是充当Collector的角色;

2023-10-26 16:49:45 80

原创 心电图基础之P-QRS-T波形

心电图基础之P-QRS-T波形

2023-10-25 14:04:42 101 1

原创 心电图的P、Q、R、S、T、U名称是怎么来的?

是Waller先发现心电图,并把记录到的两个心室波命名为V1、V2,而Einthoven硬要把他们改成A、B,并不服Waller给心房波命名的A波,自己另起炉灶来了个P波……现在Einthoven这里的标记是:心室产生的波分别用A、B表示,心房产生的波用P表示。笛卡尔的“P”是怎么回事呢。,现在心电图有4个波,他把P换成了A,但是也并没有用Waller的V表示心室的波,而是选了A后面的BCD?后来Einthoven改进了测量工具,记录到了心房产生的波,Waller将新记录到的波命名为A波,表示产生部位是。

2023-10-25 13:56:06 240 1

原创 C语言条件判断输出的程序用这种方法不错

如果心率测量值小于或等于255 bpm*应使用UINT8格式以节省电源。

2023-10-19 08:50:42 43 1

原创 电动车充电器哪个牌子好(转)

他们的充电器内置了过充、过温、过流、短路、低压等多种保护装置,能够快速充电,提高充电效率。第三代充电器内置了充满断电功能,绿灯状态无电压输出,充满后会自动断电、停止冲冷却,并具备短路断电保护和过大电流切断电路停止充电的功能。此外,充电器还具备充满自停和超温自动断电的功能,减少了潜在的安全风险。虽然不建议将绿源的充电器用于其他品牌的电动车上,但对于绿源自家的电动车来说,这种专用插口设计无疑能够提供更好的充电效果。这样的设计可以最大程度地保护电动车的电池,延长其使用寿命,并提供更加稳定和高效的充电体验。

2023-10-18 23:42:43 490 1

原创 BLE入门谈:从空中数据收发理解BLE(转载)

ADV_IND, ADV_NONCONN_IND, ADV_SCAN_IND和ADV_DIRECT_IND类型的包是从设备按照自己的间隔发出来的,其中AdvA数据字段是自己的地址(手机上的BLE扫描工具看到的就是这个地址),AdvData数据字段提供其它信息比如设备名称、厂商代码等,还可以包括温度传感器数据这样的自定信息。主机发送数据包之后,转到接收状态,丛机接收到主机的数据包,也会很快回应一个数据包,这两次双向的数据交互时间是可以预计的,不存在无用的RX等待状态。当然,付出的代价是耗电也增加。

2023-10-18 16:48:09 221 1

原创 蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称低功耗蓝牙

或称,旧商标)也称,是设计和销售的一种技术,旨在用于、运动健身、、家庭等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。

2023-10-18 16:32:01 287 1

原创 关于RISC-V开源指令集架构

x86与ARM架构的发展的过程也伴随了现代处理器架构技术的不断发展成熟,但作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,导致其指令数目多,指令冗余严重,文档数量庞大,所以要在这些架构上开发新的操作系统或者直接开发应用门槛很高。RISC-V提供了特权级指令和用户级指令,同时提供了详细的RISC-V特权级指令规范和RISC-V用户级指令规范的详细信息,使开发者能非常方便的移植linux和unix系统到RISC-V平台。,家用电器cpu,工控cpu和用在比指头小的传感器中的cpu。

2023-10-18 14:29:02 49 1

原创 UART和SPI通信速度比较

考虑UART vs SPI速度,从两个协议的短距离发送数据的最快通信协议是SPI。要在更远的距离发送数据,必须降低时钟速度并合并专门的驱动芯片。速度是通信协议中最重要的特征之一,UART和速度之间有很多区别。SPI协议比UART要快得多。UART以比SPI更低的数据速率在设备之间传输串行数据。由于异步通信类型,相互通信的UART设备的数据速率必须相等。除此之外,UART和SPI在速度、连接的设备数量、引脚数量、大小和同步等方面都存在差异。与UART相比,对于SPI接口没有指定的数据速率限制。

2023-10-18 09:54:32 891 1

原创 Keil如何修改工程名称?

1.在工程文件目录中,将first.uvopt和first.uvproj名字改成second.uvopt和second.uvproj。原文地址: http://blog.csdn.net/bdhk6688/article/details/49330821。4.点击品字形图标,在弹出的界面上,双击“Progect Components”下面的工程名,修改成second。6.重新编译,若编译后还有带first名的文件,删除后重新编译即可。假设原来的工程文件名是first,要改成second。

2023-10-17 17:03:13 1356

原创 关于STM32L051的烧录问题

用STM32L051做项目开发,前期用Keil通过STLink调试和烧录都没有问题。同事用JLink烧录,第一次成功烧录进去了,想用JLink再次烧录,就怎么都烧录不进去。然后我把板子拿回来,准备用老方法即用Keil通过STLink烧录,可以找到目标板,但也是怎么都LOAD不进去,总是提示“core in holt by reset”字样。在烧录的时候,有尝试把复位线拉低瞬间烧录,也有尝试通过上电快速连接烧录,都没有成功,不知道什么原因。因为我调试的时候都是这样烧录的,为什么用JLink后就会有这样问题?

2023-10-17 14:42:16 83

原创 RSL10的实时时钟(Real-Time Clock (RTC))

RTC计时器是一个32位自由运行的倒计时计时器,从ACS_RTC_CFG寄存器的ACS_RTC-CFG_START_VALUE位字段。当前RTC计数器值可用通过ACS_RTC_COUNT寄存器,并且可以通过设置ACS_RTC_CTRL_reset位来重置当前计数ACS_RTC_CTRL寄存器。当RTC计时器遇到警报时,RTC计时器还会触发RTC警报(RTC_alarm_IRQ)中断事件,如使用ACS_RTC_CTRL寄存器中的ACS_RTC_CTRL_ALARM_CFG位字段配置的。

2023-10-17 10:58:26 92

原创 RSL10的睡眠以从保留记忆中唤醒(Sleep for Wakeup from Retention Memory)

请注意,一旦解压缩的32位唤醒恢复写入地址SYSCTRL_WAKEUP_ADDR,相应地更新SYSCTRL_MEM_ACCESS_CFG映射寄存器的压缩7位唤醒恢复地址WAKEUP_ADDR_packed字段。为了便于包装和拆包该地址,SYSCTRL_MEM_ACCESS_CFG映射寄存器包含WAKEUP_ADDR_PACKED字段,该字段链接到SYSCTRL_WAKEUP_ADDR映射寄存器。6. 将ACS_WAKUP_CTRL寄存器中的BOOT_SELECT位字段设置为BOOT_CUSTOM。

2023-10-17 10:05:12 43

原创 RSL10的待机模式(Standby Mode)

ACS(模拟控制系统)、带隙、DC-DC转换器、电荷泵和数字调节器处于活动状态。这个RF块可以通过ACS_VDDRF_CTRL寄存器与其电源断开。降低的电压电平可以在ACS_VDDC_CTRL寄存器的STANDBY_VTRM字段中编程。对于处于待机状态的RSL10 SoC,48 MHz晶体振荡器、RF块和standby_VTRIM设置会显著增加电池电流(IBAT)。在这种状态下,逻辑和存储器不计时,而是以降低的功率供电电压以最小化泄漏电流。应当关闭并且应当降低STANDBY_VTRIM设置。

2023-10-17 09:47:33 82

原创 RSL10的睡眠模式(Sleep Mode)

在ACS_ WAKEUP_,“ACS_WAKUP_CTRL”)必须在进入睡眠模式之前进行设置,因为核心没有通电。初始极板配置(进入睡眠模式前使用的配置)需要由重置PADS_RETENTION_EN位之前的软件,以避免切换焊盘。仅唤醒逻辑(请参阅第52页第5.4.4.1节“唤醒源”中的唤醒源)保持通电。如果中断挂起当系统尝试进入睡眠模式时,系统将继续执行。这必须考虑在内当系统尝试进入睡眠模式时,使用可能挂起的中断的代码。当进入睡眠模式时,会生成开机复位(POR),将数字核心中的所有寄存器设置为它们的默认值。

2023-10-17 09:26:11 78

原创 RSL10低功耗设置,若把RTC关闭,反而不会睡眠,为什么?

RSL10低功耗设置:调用以下程序,若用RTC_ENABLE设置,RSL10能进入低功耗,若改用RTC_DISABLE设置反而不会进入睡眠模式,为什么?

2023-10-16 15:19:20 75 2

原创 RSL10的低功耗睡眠指令:SYS_WAIT_FOR_INTERRUPT 和 SYS_WAIT_FOR_EVENT,还是有区别的。

RSL10自带的子程序void Sys_PowerModes_Sleep_WakeupFromFlash,若指令用 “SYS_WAIT_FOR_INTERRUPT;”可以进入睡眠,改用“SYS_WAIT_FOR_EVENT;”就无法进入睡眠,电流比较大。//不能用这个,用这个无法睡眠。

2023-10-16 11:02:37 63 1

空空如也

空空如也

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

TA关注的人

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