前言

随机数产生器(RNG)的结构:

随机数发生器(RNG)根据内部热产生真实的非确定性随机数噪音。RNG通过触发START任务启动,并通过触发STOP任务停止。当随机数已经生成,它会产生一个VALRDY事件,同时把随机数存入VALUE寄存器。用户通过读取VALUE寄存器,获取这个随机数。有一点需要注意,随机数生成的时间不是固定不变的,时间有长有断,特别是使能了数字校验算法以后,时间更无法预测。不过有一点,当VALRDY事件产生的时候我们再去读取VALUE的值,这个是可靠的。RNG模块被触发START任务以后,会一直不断的产生随机数,每产生出一个随机数,会置位一次事件,只有触发STOP任务才能停止RNG模块。

本教程实现把产生的随机数通过串口打印出来, 具体硬件连接请参考开发板电路图

示例详解

基于硬件平台:nrf51822ek_tm开发板。

本示例所用的最小系统板原理图:

  1. 工程创建:

    1. 打开KEIL,新建一个空工程:Project->NewuVisionProject

工程名为nrfxx-rng确认后按下图选择芯片为nrf51822_xxAA->ok

在弹出的对话框中勾选CMSIS中的CORE;Device中的Startup(后面有nrf51Series字样的);在nrf_device中勾选nrf_gpio, nrf_uart, nrf_delay,nrf_rng,nrf_err并在nrf_Libraries中勾选app_error,nrf_assert模块。

OK之后工程自动生成如下代码:

新建一个空白文档,保存为main.c,并加入工程中:

配置工程,选择使用MicroLIB库,可以减小程序体积:

加入NRF51定义,并选择化等级3,可以减小程序体积,但仿真运行时可能会出现与代码顺序不一致现象:

调试工具选择J-LINK,并将接口设置为SW口勾选下载程序后自动复位及运行:

  1. 工程代码

    1. OK之后在man.c中加入如下代码:

本实验中大部分代码来自于《一起学nRF51xx 6 -  uart》章节内容,主函数依次执行gpio,uart初始化操作然后就是死循环,在死循环中实现对rng模块和led的操作,每操作一次等500ms把程序编译,下载到开发板上可以看到开发板上的蓝灯实现了呼吸灯效果。对应的PWM变化如下图所示:

关于nrf51xx及rng的更详细介绍可以参看《nRF51822_PS_v3.3.pdf》或https://infocenter.nordicsemi.com/index.jsp

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|一起学nRF51xx 10

关注十三公众号

一起学nRF51xx 10 -  rng相关推荐

  1. 一起学nRF51xx 21 -  蓝牙项目工程的初始化流程解读

    前言 本节主要工作是对<一起学nRF51xx 20 -  移植SDK蓝牙例程>章节程序进行解读. 示例详解 基于硬件平台:nrf51822ek_tm开发板. 本示例所用的最小系统板原理图: ...

  2. 一起学nRF51xx 0 - 环境搭建

    前言 物联网时代怎么能少得了蓝牙4.0,Nordic的nRF5x系列MCU如 nRF51822 是功能强大.高灵活性的多协议 SoC,非常适用于 Bluetooth® 低功耗和 2.4GHz 超低功耗 ...

  3. 零起点学算法10——求圆柱体的表面积

    零起点学算法10--求圆柱体的表面积 Description 很简单的问题,求圆柱体的表面积 Input 多组测试数据,每组输入底面半径r和高h Output 每组输出圆柱体的表面积,保留3位小数 S ...

  4. 一起学nRF51xx 23 -  s130蓝牙API介绍

    张十三 前言 通过前面的章节,我们学习了nrf51的蓝牙协议栈(S130)的基本使用,对S130协议栈的实现原理有了一定了解,也认识到了S130协议栈的强大,那么协议栈中的API接口具体是什么功能?各 ...

  5. 一起学nRF51xx 22 -  实现一个具体SVC调用功能的demo

    前言 上一节<一起学nRF51xx 21 -  蓝牙项目工程的初始化流程解读>讲到nordic的蓝牙协议栈是通过SVC来实现APP与协议栈之间通接口调用的,那么如何来实现一个具体SVC调用 ...

  6. 一起学nRF51xx 20 -  移植SDK蓝牙例程

    前言 Nordic公司为nRF51系列SOC提供有完整的开发SDK包,里面有大量的例程,通过学习官方例程并最终应用到自己项目工程中是一个比较高效的学习与项目开发技巧,本节将与大家一起完成蓝牙例程的移植 ...

  7. 一起学nRF51xx 19 -  移植SDK普通接口例程

    一起学nRF51xx 19 -  移植SDK普通接口例程 张十三 前言 Nordic公司为nRF51系列SOC提供有完整的开发SDK包,里面有大量的例程,通过学习官方例程并最终应用到自己项目工程中是一 ...

  8. 一起学nRF51xx 18 -  蓝牙协议栈烧录

    前言 在讲协议栈前我们先简要介绍一下NORDIC公司的协议栈特点: 1 协议栈和应用程序代码没有链接时间依存性,并可独立编译和更新 2 堆栈受运行时保护,应用程序访问受限或被阻止 3 堆栈为 100% ...

  9. 一起学nRF51xx 17 -  lpcomp

    前言 nRF51系列SOC内部低功耗比较器(LPCOMP)的使用.此比较器类似于用运放搭建的比较器,当VIN+输入的电压大于VIN-输入的电压,输出结果为高电平:当VIN+输入的电源小于VIN-输入的 ...

最新文章

  1. 搜索引擎的两大问题(2) - 相关性
  2. php生成二维码并返回给前端页面显示
  3. oralce中级OCP考试时间和题量以及通过率
  4. STM32F103CUBE学习笔记 一 环境安装
  5. LeetCode 560. 和为K的子数组(前缀和差分)
  6. Java并发编程实战~协程
  7. java 序列化实例_Java中的序列化与反序列化实例
  8. 使用 ale.js 制作一个小而美的表格编辑器(4)
  9. git-bisect last updated in 2.19.1【转】
  10. 使用阿富汗和巴基斯坦地区的SRTM数据生成山体阴影和彩色地形图
  11. 5.2 各种类型的Attention: 原理、计算流程
  12. 秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八)
  13. 工资短信生成器如何使用
  14. 【“免费”Windows优秀软件推荐】:Fences——自动整理桌面图标
  15. 简单脱壳教程笔记(6)---手脱FSG壳
  16. GBIT51231-2016装配式混凝土结构建筑技术标准
  17. 内核同步机制——蜗窝科技
  18. android 按钮在键盘上,Android使用键盘上的完成按钮点击按钮
  19. 感知机算法基础形式及对偶形式算法
  20. 儿童台灯用白炽灯还是led灯好?盘点眼科医生推荐的儿童LED

热门文章

  1. Java基本语法——(用于日后复习)
  2. php-Arrays函数-array_flip-交换数组的键值
  3. php xml 互相转换
  4. Split-plot设计 SAS实践
  5. 首次使用three.js加载obj模型未成功
  6. win32汇编使用win32 api实现字符串拷贝
  7. TensorFlow-Bitcoin-Robot:Tensorflow 比特币交易机器人
  8. Objective-C objc_class 介绍
  9. 文件系统fsd hook (一)原理
  10. 自写网站阶段之:终结篇