nrf52840笔记-外设

测试目标板:nrf52840开发板

nRF52外围设备接口

外设通过向配置寄存器和任务寄存器写入数据,由CPU进行控制。如果为特定事件配置了事件寄存器和中断,那么外设事件将通过它们向CPU指示。

外围设备ID

每个外围设备都被分配了一个0x1000字节的固定地址空间块,等于1024 x 32位寄存器。

外设ID和基地址之间存在直接的关系。这种关系表现为每个外设的基地址与其分配的ID之间存在一个递增的模式。具体来说:

基地址为0x40000000的外设被分配了ID=0。

基地址为0x40001000的外设被分配了ID=1。

基地址为0x4001F000的外设被分配了ID=31。

从这个模式中,我们可以推断出每增加0x1000(即4096字节)的基地址,外设的ID就增加1。这种设计使得基地址和外设ID之间建立了一个简单且易于理解的映射关系。

外设可能共享相同的ID,这可能会带来一个或多个以下限制:

一些外设可能共享一些寄存器或其他公共资源。这意味着这些外设可能无法同时独立访问或修改这些共享资源。

操作是互斥的。即一次只能使用一个外设。当两个或更多外设共享相同的ID时,它们可能无法同时执行操作,因为这可能导致资源冲突或不确定的行为。

从一个外设切换到另一个外设必须遵循特定的模式。例如,必须先禁用第一个外设,然后再启用第二个外设。这种切换过程可能涉及一系列特定的步骤和顺序,以确保资源的正确分配和系统的稳定性。

具有共享ID的外围设备

一般来说(ID为0的除外),共享ID和基地址的外设不能同时使用。用户一次只能在此特定ID上启用一个外设。

在共享同一个ID的两个外设时,用户应该执行以下操作:

禁用先前使用的外设。

删除为正在禁用的外设设置的任何programmable peripheral interconnect(PPI)连接。

清除INTEN寄存器中的所有位,即执行INTENCLR = 0xFFFFFFFF操作

配置即将启用的外设,不要依赖从先前禁用的外设继承的配置值。

启用现在已配置的外设。

外设寄存器

大多数外设都有一个启用寄存器。除非相关章节另有规定,否则在启用外设之前必须配置外设寄存器(特别是PSEL寄存器)。在使用任务和事件之前,必须先启用外设。

位设置和清除

具有多个single-bit指的是寄存器中的单个位) bit的寄存器可以实现设置和清除模式。该模式使固件能够设置和清除寄存器中的单个位,而不必在主寄存器上执行读修改-写操作。

在这种模式中,使用寄存器映射中的三个连续地址来实现“设置和清除”模式。主寄存器后面紧跟着专门的SET(设置)寄存器和CLR(清除)寄存器。(严格按照这个顺序)。

SET寄存器用于设置主寄存器中的单个bit,而CLR寄存器用于清除主寄存器中的单个bit。在SET或CLR寄存器中写入1个位将分别在主寄存器中设置或清除相同的位。在SET或CLR寄存器中写入0到一个位没有效果。读取SET或CLR寄存器将返回主寄存器的值。

Tasks(任务)

任务用于触发外设中的操作,例如启动特定的行为。一个外设可以实现多个任务,每个任务在该外设的任务寄存器组中都有一个单独的寄存器。当固件将1写入任务寄存器时,或当围设本身或其他外设切换相应的任务信号时,就会触发一个任务。

Events(事件)

事件用于通知外设和CPU关于已经发生的事件,例如外设中的状态变化。外设可以生成多个事件,每个事件在该外设的事件寄存器组中都有一个单独的寄存器。

当外设自身切换相应的事件信号时,将生成一个事件,并且更新事件寄存器以反映该事件已经生成。仅当固件写入0时才会清除事件寄存器。

即使将事件注册器设置为1,外设也可以生成事件。

Shortcuts(快捷)

快捷方式是在同一外设中的事件和任务之间的直接连接。如果启用了快捷方式,则在生成关联事件时将自动触发关联任务。

使用快捷方式相当于在外设之外和通过PPI进行相同的连接。然而,通过捷径的传播延迟通常比通过PPI的传播延迟要短。

快捷方式是预定义的,这意味着不能通过固件来配置它们的连接。每个快捷方式都可以通过快捷方式寄存器单独启用或禁用,每个快捷方式有一位,为每个外围设备提供最多32个快捷方式。

Interrupts(中断)

所有外设都支持中断。中断将由事件生成。

外设只占用一个中断,中断号遵循外设ID。例如,ID=4的外设连接到嵌套的向量中断控制器(NVIC)中的中断号4。

使用INTEN(中断使能)、INTENSET(中断使能设置)和INTENCLR(中断使能清除)寄存器,外设生成的每个事件都可以配置为产生该外设的中断。多个事件可以同时启用以生成中断。为了确定正确的中断源,外设寄存器的事件组中的事件寄存器将指示中断的来源。

一些外设只实现了INTENSET(中断使能设置)和INTENCLR(中断使能清除)寄存器,而没有实现INTEN(中断使能)寄存器。具体的细节可以在各个外设的章节中找到。在所有情况下,读取INTENSET或INTENCLR寄存器都会返回与INTEN寄存器中相同的信息。

在外设中实现的每个事件都与INTEN(中断使能)、INTENSET(中断使能设置)和INTENCLR(中断使能清除)寄存器中的特定bit位置相关联。

Interrupt clearing(中断清除)

通过将0写入事件寄存器来清除中断,或使用INTENCLR寄存器禁用中断,最多需要4个CPU时钟周期才能生效。这意味着,即使在中断被清除或禁用后,但在四个时钟周期通过之前,程序退出一个中断处理程序,即使新的事件没有发生,中断也可能会立即再次发生。

为了避免在新事件发生之前再次发生中断,程序应该从一个外围寄存器中执行读取。例如,已清除的事件寄存器,或用于禁用中断的INTENCLR寄存器。这将导致一到三生命周期的延迟,并确保在退出中断处理程序之前清除中断。

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nRF52840-DK开发板是一款由Nordic Semiconductor推出的功能强大的开发板,适用于无线应用的开发和原型设计。该开发板基于nRF52840芯片,具有蓝牙5、蓝牙Mesh、Thread、Zigbee等多种无线通信协议的支持,是开发智能穿戴设备、物联网设备以及传感器网络等应用的理想选择。 nRF52840-DK开发板具有丰富的硬件接口,包括USB、UART、SPI、I2C、GPIO等,使得开发者可以方便地连接、控制各种外部设备。同时,开发板上还集成了按钮、LED指示灯、天线等常用的外设,便于用户进行基础的应用开发和调试。 nRF52840-DK开发板不仅提供了开发所需的硬件资源,还配备了丰富的软件开发工具和库函数。开发者可以使用Nordic Semiconductor提供的nRF5 SDK进行应用开发,还可以通过Keil、IAR和GCC等常用的集成开发环境进行编程。 除此之外,nRF52840-DK开发板还支持在线固件更新(OTA),提供了方便快捷的开发和调试环境。开发者可以使用Segger J-link等调试工具进行调试和烧录。 总之,nRF52840-DK开发板是一款强大而灵活的开发工具,适用于广泛的无线应用开发。无论是初学者还是有经验的开发者,都能够利用该开发板快速构建各种创新的无线应用,并实现功能丰富、稳定的产品。 ### 回答2: nrf52840-dk是一款常用的开发板,广泛用于物联网(IoT)和蓝牙应用的开发。以下是关于该开发板的一些重要信息: 1. 芯片:nrf52840是Nordic Semiconductor公司推出的一款高性能低功耗蓝牙LE SoC(System-on-a-Chip)芯片。这款芯片集成了一个Arm Cortex-M4F处理器和2.4GHz无线收发器,可支持蓝牙5.0和其他无线通信协议。 2. 开发板:nrf52840-dk是基于nrf52840芯片的开发板,具有丰富的外围设备和接口,方便开发者进行软件编程和硬件原型设计。该开发板包含了带有按钮、指示灯和天线的nRF52840 SoC模块,以及一系列GPIO引脚、USB接口、电源管理电路等。 3. 软件开发工具:使用nrf52840-dk进行开发时,可以使用Nordic Semiconductor提供的nRF5软件开发工具套件。这个工具套件包含了一系列用于编写和调试nRF52840软件的开发工具、库文件和示例代码。开发者可以使用该工具套件进行代码编辑、编译、下载和调试等操作。 4. 功能和应用:nrf52840-dk开发板支持蓝牙LE和其他无线通信协议,可以广泛应用于物联网设备、可穿戴设备、智能家居、健康监测、无线传感器网络等领域的开发。开发者可以利用该开发板进行传感器数据采集、通信协议开发和物联网应用的原型验证。 总之,nrf52840-dk开发板是一款功能强大、易于使用的开发工具,适用于物联网和蓝牙应用的开发。它提供了丰富的外围设备和接口,配合Nordic Semiconductor的软件开发工具套件,开发者可以快速进行硬件原型设计和软件编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值