[nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写

简介:
+关注继续查看


 一、实验内容:

  通过串口发送单个字符到NRF51822,NRF51822 接收到字符后将其写入到FLASH 的最后一页,之后将其读出并通过串口打印出数据。

 

二、nRF51822芯片内部flash知识:

  EN-nRF51D 开发板使用NRF51822 芯片为nRF51822-QFAA,如下图所示,共有256KBFLASH,256 页,页大小为1024 字节。 

      

 

  NRF51822 内部FLASH 写流程如下:

 

 

三、代码解析:

main:

复制代码
 1 int main(void)
 2 {
 3     ...
 4     
 5     串口初始化
 6     
 7     printf("Flashwrite example\r\n");
 8     patold  = 0;
 9     pg_size = NRF_FICR->CODEPAGESIZE;
10     pg_num  = NRF_FICR->CODESIZE - 1;  // Use last page in flash
11 
12     while (true)
13     {
14         // Start address:
15         addr = (uint32_t *)(pg_size * pg_num);//计算地址并擦除一页
16         // Erase page:
17         flash_page_erase(addr);
18         i = 0;
19 
20         do
21         {
22             printf("Enter char to write to flash\r\n");
23 
24             // Read char from uart, and write it to flash:
25             do
26             {
27                 err_code = app_uart_get(&patwr);
28             }
29             while(err_code == NRF_ERROR_NOT_FOUND);//从串口获得1byte数据
30 
31             if (patold != patwr)//将1byte写入flash
32             {
33                 patold = patwr;
34                 flash_word_write(++addr, (uint32_t)patwr);
35                 i += 4;
36                 printf("'%c' was write to flash\r\n", patwr);
37             }
38             // Read pattern from flash and send it back:
39             patrd = (uint8_t) * addr;
40             printf("'%c' was read from flash\r\n", patrd);
41         }
42         while (i < pg_size);
43     }
44 }
复制代码

 

 

 

@nRF51822基础实验系列:


[nRF51822] 7、基础实验代码解析大全(前十)

[nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI

[nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC

[nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/5755203.html,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 关系型数据库 编译器
STM32学习笔记:读写内部Flash(介绍+附代码)
STM32学习笔记:读写内部Flash(介绍+附代码)
127 0
|
7月前
|
异构计算
xilinx小实验——vivado纯逻辑编程第一个demo
xilinx小实验——vivado纯逻辑编程第一个demo
182 0
xilinx小实验——vivado纯逻辑编程第一个demo
|
8月前
|
Linux 编译器 SoC
内核笔记](一)——设备树的概述(硬件、目标、效果、文件类型)
内核笔记](一)——设备树的概述(硬件、目标、效果、文件类型)
103 0
内核笔记](一)——设备树的概述(硬件、目标、效果、文件类型)
|
10月前
STM32:定时器外部时钟软件代码部分(内含:1.实验现象如下+2.代码部分+3.注意事项)
STM32:定时器外部时钟软件代码部分(内含:1.实验现象如下+2.代码部分+3.注意事项)
144 0
STM32:定时器外部时钟软件代码部分(内含:1.实验现象如下+2.代码部分+3.注意事项)
|
10月前
|
存储 缓存 芯片
复习单片机:IO串转并(内含:1. 74HC595 芯片介绍+2. 硬件设计+3. 软件设计+4.原始代码+5. 实验现象)
复习单片机:IO串转并(内含:1. 74HC595 芯片介绍+2. 硬件设计+3. 软件设计+4.原始代码+5. 实验现象)
197 0
复习单片机:IO串转并(内含:1. 74HC595 芯片介绍+2. 硬件设计+3. 软件设计+4.原始代码+5. 实验现象)
|
10月前
|
芯片
74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)
74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)
173 1
74HC595芯片的IO扩展(串转并)实验(包含硬件原理和软件编程解析和代码)
|
数据采集 自动驾驶 物联网
NR 的需求和目标 | 带你读《5G 空口设计与实践进阶 》之一
相对以往的移动通信系统,NR 的应用场景和服务对象均发生了极大的变化,其系统设计也不再简单地以更高峰值速率和更高频谱效率作为核心目标。为满足差异化的能力指标要求,NR 需要系统性的方案设计,基于一组关键技术以解决不同场景的需求侧重点。需要强调的是,NR选择的技术不一定是理论上最先进的,但一定是可实现和满足需求的。
NR 的需求和目标   | 带你读《5G 空口设计与实践进阶 》之一
|
算法 关系型数据库 5G
本书的目的和篇章结构 | 带你读《5G-NR信道编码》之五
2017 年 12 月,在葡萄牙里斯本的 3GPP RAN#78 次会议上,5G-NR 的第一 个版本获得通过 [17]。这标志着 5G 第一阶段的标准化工作已经完成(eMBB 部分)。 作为 5G 物理层的关键技术,先进的编码将对满足 5G 主要场景的性能指标发挥重 要作用。根据作者的了解,目前,无论是国外还是国内,尚未有一本能比较全面介 绍 5G 信道编码的书,这本书的目的就是给读者呈现 5G 信道编码的丰富画面。
本书的目的和篇章结构  | 带你读《5G-NR信道编码》之五
相关产品
云迁移中心
推荐文章
更多