[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 - 物联网&普适计算实践者
e-mail:beautifulzzzz@qq.com 
i-blog:blog.beautifulzzzz.com 

 

posted @   beautifulzzzz  阅读(4875)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2014-08-10 [Java Web] 3、WEB开发之HTML基础程序试手
2014-08-10 [Java Web] 2、Web开发中的一些架构
2014-08-10 [Java Web] 1、Web开发初识——一大堆历史和技术名词
点击右上角即可分享
微信分享提示