nrf51822开发入门2------jflash擦除与烧录出厂协议栈及利用开发库来点亮led灯

本文主要是介绍nrf51822开发入门2------jflash擦除与烧录出厂协议栈及利用开发库来点亮led灯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言,本人本想快速入门nrf51822,因此在网上搜索,发现有个青风教学,于是刻意购买了他卖的开发板来学习,

但是由于视频比较久远,与其对比现在的官方例程,现在的sdk其实是比较方便的,也许不需要他那样一步一步学习,我们直接借用它的官方例程就好了。也许有些人喜欢深入浅出会觉得看比较基础的好,不过我个人认为当年我学stm32cube的时候,我stm32的标准库都没学多少,现在用stm32cube开发还是一样不比那些人使用标准库差,因此我可以研究芯片的特性和寄存器的配置,然后直接阅读官方例程源码,然后借用他们的使用方式测试我们的例程,如果测试成功说明我们这么用是没问题的。

 

开始进入正题,通过flash擦除我们的开发板,由于nrf51822是有swdio和swdclk两个引脚,即是通过jlink烧录程序的,那么烧写flash时,应该是可以用jflash的。上一篇已经提供安装jlink烧录工具的渠道,找到jink安装路径

直接点击jflash.exe。

选择create a new project 再点击start-jflash按钮。

虽然nrf51822是基于cortex-m0,但是由于被nordic公司又多封了一层,因此选择相关的芯片

发现上面其实有xxAA和xxAB和xxAC,他们区别就在于flash和ram的大小不一,那如何才能选择才对的,其实只要这块芯片的容量大于或等于选择烧录方式就行了,我们可以查看他的芯片特性,就能知道选择哪个,

看看上图下面note的说法,VV = Varian code,HP = Build code ,YYWWLL = tracking code,然后还说了,如果想看更多信息,请到10章节的第6小节查看,翻过去看了下VV 和HP 和YYWWLL

PP部分可以知道是芯片的封装,我这个封装形式是QFN,然后VV我买的这个芯片填的是AC,故他的flash大小为256kb,ram为32kb。因此刚刚做flash烧录时,其实选择AC,AB还是AA都是可行的,只是说如果想把资源扩展到最大,那么可以选择AC。故其实对于我的芯片来讲,选择哪个都可以,只是利用资源的大小不一样而已。我就随便选择一个51822_xxAA。由于接口方面nrf51822提供调试接口是SWD方式,因此在Target interface下选择SWD。

点击ok即可。

找到相应的协议栈。我们知道是烧录的是S110协议栈,因此上一篇已经介绍了如何安装SDK和S110了,因此直接到components目录中的softdevice目录下找(上一篇介绍过softdevice被认定为协议栈)

由于我们可以入门时先装好s110,故选择s110的固件,然后进入后再进入hex目录

把这个hex文件直接拖拽的方式拉到我们的jFlash软件中

那么SWD硬件连接其实比较简单,首先找到自己的买的开发板的芯片手册,然后找到SWD的封装。本人截图的是自己买的开发板的原理图,也许跟你们买的开发板是不一样的。这里推荐用官方nordic开发板的还是比较好的,毕竟比较稳定。

然后再找到电器封装。

所以第一个脚对应着地脚。按照这个方式接线即可。这里我使用的是j-ob v2的jlink烧录调试器,网上可以买得到,便宜并且实惠,而且还附带串口连接,推荐哟。

由于目前还并真正未连接到我们的nrf51822的设备,所以在jflash软件做一个连接操作,首先选择菜单target然后选择connect

如果连接成功下面日志将提示已经连接成功了。日志已经写了Connect successfully。

首先做擦除芯片的操作,如下图是擦除芯片。(erase chip)

如果只是先学习操作简单外设驱动,可以不烧录s110这个hex固件,直接擦除就能烧录不带s110协议栈的IAR工程了,不过本人测试了一下,即使烧录了s110固件,还是可以烧录IAR不带s110协议栈的外设驱动程序,因此为了后面不需要重烧一次,最后直接在target菜单上选择manual programming再选择program或者program & verify。

烧写成功后,会提示成功了。

接下来进入IAR环境的点灯程序,重新回顾一下我们之前装好的库源码.

component是组件的意思,里面装的是每个工程中需要的资源中必要的驱动文件和相关的librarys库文件,方便于我们的开发而准备的。后面直接进入examples,由于我们是入门,因此从基本的驱动例程开始,如:点灯,串口,按键,中断,adc,等等。所以直接进入peripheral文件夹。结构如下:

根据分析,blinky将会是我们需要的点灯实验:(翻转的意思)直接进去打开blinky.eww,前提是通过IAR for arm的IDE,有些同学可能不懂,IAR分了很多种IDE,就拿了IAR for 8051的来打开这个工程,这样是打不开这个工程的,打开了也看不见目录结构。

打开之后大概如下图:

注意,本人选择的是nrf51822_xxaa工程,其实也可以选择nrf51822_xxaa_s110的工程,因为我们已经烧录了s110的固件到芯片上了。本人亲测两个工程都能成功烧录。

直接编译,如下图:

编译直接通过:

由于理论知识并不详细讲,因为内容过多,至于实践操作,本人会大概介绍下怎么做可以。我们看下面的结构,有main函数还有启动文件.s。还有nrf_drivers驱动目录下的驱动文件nrf_delay.c。因此,其实点亮一个led灯需要的文件资源是比较少的。

虽然c文件就几个,但是其实里面有很多关键点是在头文件中,头文件在工程结构是看不见的,因此最主要还是进入主函数看它有什么样的头文件。

它需要了两个IAR for arm里面自带的编译器佩戴的头文件,IAR for arm其实还有许多其他的相关的头文件供大家使用。

后面有两个驱动文件,一个是delay延时驱动文件,一个gpio驱动文件,还有一个boards文件。

前两个就不介绍了,boards文件经过研究,发现这个文件是在驱动文件之上再模块化编程了一下,这样操作led灯时就方便许多,大家可以仔细阅读源码了解一下。这里全都是宏来完成的led拉高电平或拉低电平或翻转操作,还有led配置宏。非常方便。

所以主函数就第一步,配置led,函数是LEDS_CONFIGURE(其实是个宏)。下面就做一个轮流翻转led的操作。

LEDS_MASK这个参数大概猜想就是引脚,跟踪过去。确实,他们是几个引脚做‘于’操作,也就是一起操作,下图中16,12,15分别代表P0.16,P0.12,P0.15 。

 

我试一下修改这个引脚成我的原理图中的led灯引脚。

可以分析出LED1是P0.16,LED2是P0.17。。。。

由于实际开发板排版led灯顺序跟原理图有些变动,原理图上的灯序是D4,D6,D5,分别对应LED1(P0.16),LED2(P0.17),LED3(P0.18)因此我们就对程序上宏做更改。由于开发板上的灯序是D4,D5,D6 。因此修改如下图:

在这之前需要先把前面的jflash的连接给断掉。不然可能导致IAR烧录失败。

断掉,下面日志有提示:

断掉后即可,编译烧录这个工程了。

当调试进入到主函数这里,基本上,开发环境已经搭建完毕了。至于那些工程细节这里就不多说。毕竟敢学nrf51822的人基础水平还是有的。

退出调试,将有以下结果:

 

上一篇:nrf51822开发入门1------For IAR开发环境搭建

下一篇:nrf51822入门3-----串口输出测试(暂未更新)

 

 

 

 

 

 

 

这篇关于nrf51822开发入门2------jflash擦除与烧录出厂协议栈及利用开发库来点亮led灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342690

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta