nRF52832-Bluefruit52学习之MicroPython开发(2)-- 板载LED

       nRF52832技术交流群:680723714

       nRF52832-Bluefruit52核心板详细介绍:

https://blog.csdn.net/solar_Lan/article/details/88688451

       MicroPython固件持续更新下载,请加QQ群:680723714,群名:Bluefruit52官方技术群

  nRF52832板子的MicroPython学习Wiki请浏览地址:

https://www.afantor.cc/mpy/html/nrf52/quickref.html

GPIO 的应用

       在讲第一个外设实例之前,我要先对许多初学硬件芯片的朋友说明几个关键的学习问题:首先是学习资料的准备,在新的处理器出来后,我们要如何入门,如何进行开发,这时相关的技术手册就是必须的了,以后我们的讲解与分享中都会用到芯片的技术手册,来分析下如何采用手册查找相关说明,实际上这也是工程师的必经之路。

1. 原理分析:

       对于一个处理器来说,最简单的控制莫过于通过 I/O 端口输出的电平控制设备,本节就讲述一个经典的 LED 灯控制来开启大小 nRF52832 系列处理器的开发之旅。

       硬件方面nRF52832-Bluefruit52开发板上,通过管脚 P0.17 和管脚 P0.19 连接 2 个 LED 灯,我们下面的任务首先来点亮它。IO 管脚接分别接一个发光二级管,因此当把 IO 管脚定义为输出低电平的时候,在二级管两端产生电势差,就可以点亮发光二极管了。

                                                            

 

       ARM Cortex-M4 的 IO 口配置有多种状态需要设置,那么下面我们一一介绍:首先看看 IO 口的模式,查看 nRF52832 参考手册,端口可以配置为 4 种模式:输入模式,输出模式,复用模式,模拟通道模式。由于 nRF52832 的 IO 管脚复用了其它的外设功能,比如 I2C,SPI,UART 等。而通用 IO 口具有输入和输出模式:

                                       

       中间的 Sense 寄存器可以捕捉 GPIO 端口状态,如果选择 LDETECT 模式,则可以把相关状态存储在 LATCH 寄存器内,结构如下图所示:

                                                                                

 

       实际 nRF52832 上所包含的寄存器是非常的简单的,下面把数据手册的说明进行了标注:

 

        如果大家使用 nRF52832 官方提供的库函数编程,可以在"nrf_gpio.h"库文件中找到设置 IO 模式的结构体 nrf_gpio_port_dir_t,这里完全是对照参考手册进行编写的,实际上 nRF52832 的库是比较简单的,大家完全可以直接用寄存器操作:

typedef enum

{

          NRF_GPIO_PIN_DIR_INPUT   = GPIO_PIN_CNF_DIR_Input,           //< Input

          NRF_GPIO_PIN_DIR_OUTPUT = GPIO_PIN_CNF_DIR_Output       //< Output

} nrf_gpio_port_dir_t;

       首 先 我 们 来 介 绍 下 输 入 和 输 出 模 式 也 就 是 NRF_GPIO_PORT_DIR_INPUT 和 NRF_GPIO_PORT_DIR_OUTPUT。其中输出模式寄存器为推挽输出。输入的模式可以分为上拉和下拉模式,这就比较简单了,同样大家使用库函数编程的时候,可以在"nrf_gpio.h"文件中找到设置输入模式的结构体 nrf_gpio_pin_pull_t ,如数据手册上描述:

 

"nrf_gpio.h"库文件也给出了定义:

typedef enum
{
    NRF_GPIO_PIN_NOPULL=GPIO_PIN_CNF_PULL_Disabled,//无上拉下拉
    NRF_GPIO_PIN_PULLDOWN=GPIO_PIN_CNF_PULL_Pulldown,// 下拉
    NRF_GPIO_PIN_PULLUP= GPIO_PIN_CNF_PULL_Pullup,//上拉

并且对于输入管脚可以设置不同的 sense 级别,如手册上所描述:

 

"nrf_gpio.h"库文件也给出了定义:

typedef enum
{
    NRF_GPIO_PIN_NOSENSE= GPIO_PIN_CNF_SENSE_Disabled, ///<	Pin sense level disabled.
    NRF_GPIO_PIN_SENSE_LOW= GPIO_PIN_CNF_SENSE_Low,    ///<	Pin sense low level.
    NRF_GPIO_PIN_SENSE_HIGH = GPIO_PIN_CNF_SENSE_High, ///<	Pin sense high level.
} nrf_gpio_pin_sense_t;

对应选择了 NRF_GPIO_PORT_DIR_OUTPUT 输出,也可以选择管脚的输出驱动模式,结构体如下所示:


typedef enum
{
    NRF_GPIO_PIN_S0S1 = GPIO_PIN_CNF_DRIVE_S0S1, ///< !< Standard '0', standard '1'
    NRF_GPIO_PIN_H0S1 = GPIO_PIN_CNF_DRIVE_H0S1, ///< !< High drive '0', standard '1'
    NRF_GPIO_PIN_S0H1 = GPIO_PIN_CNF_DRIVE_S0H1, ///< !< Standard '0', high drive '1'
    NRF_GPIO_PIN_H0H1 = GPIO_PIN_CNF_DRIVE_H0H1, ///< !< High drive '0', high 'drive '1''
    NRF_GPIO_PIN_D0S1 = GPIO_PIN_CNF_DRIVE_D0S1, ///< !< Disconnect '0' standard '1'
    NRF_GPIO_PIN_D0H1 = GPIO_PIN_CNF_DRIVE_D0H1, ///< !< Disconnect '0', high drive '1'             
    NRF_GPIO_PIN_S0D1 = GPIO_PIN_CNF_DRIVE_S0D1, ///< !< Standard '0'. disconnect '1'
    NRF_GPIO_PIN_H0D1 = GPIO_PIN_CNF_DRIVE_H0D1, ///< !< High drive '0', disconnect '1' 
} nrf_gpio_pin_drive_t;

 

 

2. 软件编写:

点亮第一个LED灯

       MicroPython固件中已经对板载的LED灯编写好驱动了,在使用时只需要调用相关API函数即可。

MicroPython v1.10-230-ge0c6dfe-dirty on 2019-03-24; Bluefruit52 nRF52832 with NRF52832
Type "help()" for more information.
>>> import board
>>> led1 = board.LED(1)
>>> led1.on()
>>> led1.off()
>>> led1.on()
>>> 

import board
import time

led1 = board.LED(1)
led2 = board.LED(2)

led1.on()
led2.on()
time.sleep_ms(200)
led1.off()
led2.off()
time.sleep_ms(200)

while True:
    led1.toggle()
    led2.toggle()
    time.sleep_ms(300)

### 回答1: nrf52832-qfaa是一款由Nordic Semiconductor公司开发的低功耗蓝牙系统级芯片。原理图即为该芯片的电路连接图,它展示了芯片内部的各个功能模块之间的连接方式和电气特性。对于电路设计和电路分析人员来说,原理图是理解芯片内部结构和工作原理的重要工具。 nrf52832-qfaa原理图主要包括以下几个方面的内容: 1. 电源管理电路:负责芯片的供电和电池管理,包括电源接口、电源描述和电源过滤电路等。 2. MCU核心:这部分含有nrf52832芯片的主控制单元,包括处理器核心、存储器和系统总线等。 3. 外设接口:负责芯片与外部设备的通信,如UART、SPI、I2C和GPIO等。 4. 射频前端:负责无线通信,包括蓝牙低功耗无线模块和射频天线。 5. 时钟和定时器:包括系统时钟和RTC(实时时钟)等,用于芯片的时序控制和定时功能。 6. I/O和连接器:包括与外部电路的连接接口和引脚布局等。 7. 其他模块:如中断控制器、电源管理单元、温度传感器等。 通过阅读nrf52832-qfaa的原理图,电路设计人员可以了解芯片的各个模块的连接方式和通信协议,有助于进行电路设计和系统验证。同时,它也为故障排除和错误修复提供了重要的参考依据。原理图是一个工程师在开发和设计过程中不可或缺的工具,它大大简化了电路设计的复杂性,提高了设计的效率和可靠性。 ### 回答2: nrf52832-qfaa是一款蓝牙低功耗系统芯片,可以用于物联网设备和可穿戴设备等领域。原理图是描述该芯片内部电路连接关系的图纸。 nrf52832-qfaa原理图主要包括器件、排列方式、连接线路等信息。例如,原理图会显示芯片上的各个引脚,以及它们之间的连接方式。它会标明不同器件的型号、值以及相互之间的连接关系,以帮助设计师正确布局和设计电路。 在nrf52832-qfaa原理图中,可以看到该芯片的主要模块,包括处理器、存储器、射频收发器、时钟电路等。这些模块通过连接线路相互连接,以实现各个功能模块之间的通信和控制。 此外,原理图还能显示一些外部器件的连接方式,比如电源管理模块、传感器、接口等。这些外部器件可以通过连接线路与nrf52832-qfaa芯片相互连接,以实现更丰富的功能。 通过阅读nrf52832-qfaa原理图,设计人员可以了解芯片的内部架构和连接方式,从而有助于他们进行电路布局和调试工作。同时,对于学习者来说,也可以通过阅读原理图深入了解这款芯片的工作原理和内部结构。 ### 回答3: nrf52832-qfaa是一款由Nordic Semiconductor公司生产的芯片,主要用于物联网设备和无线通信应用。原理图是对该芯片电路连接的图示,展示各个元件之间的连接方式。 nrf52832-qfaa原理图主要包含以下几个部分: 1. 电源部分:包括电源芯片、电源电容、电源指示灯等,用于提供电源给整个芯片及其外围电路。 2. 调试部分:包括调试接口芯片和相应的连接器,用于对该芯片进行调试和软件烧录。 3. 外部接口部分:包括与其他外部元件连接的接口,如UART、SPI、I2C等,用于实现与其他设备的数据通信。 4. 时钟部分:包括晶振和时钟电路,提供准确稳定的时钟信号给芯片的各个模块。 5. 外设接口部分:包括与外部设备连接的接口,如GPIO(通用输入输出)、ADC(模数转换器)、PWM(脉宽调制)等,用于实现与外部设备的数据交换和控制。 6. 射频部分:包括射频收发器、射频天线等,用于无线通信功能。 原理图中通过不同的连线和符号表示了各个元件之间的连接关系和信号传输方式。通过分析原理图,我们可以了解到该芯片的电路结构和各个功能模块的配置情况,以及与其他外部元件的连接方式。这对于硬件工程师在进行电路设计和调试时非常有帮助,同时也为软件开发人员提供了基础的硬件信息,方便他们进行软硬件的协同开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Lanson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值