nRF52832学习记录(三、芯片ID,内部温度传感器,随机数发生器)_根据芯片id生成随机数

76 阅读2分钟

DEVICE ID 为只读寄存器,读取示例:

uint32\_t id[2];
id[0]=NRF_FICR->DEVICEID[0];//低32位
id[1]=NRF_FICR->DEVICEID[1];//高32位

内部温度传感器
在这里插入图片描述
TEMP寄存器保存了温度的值,0.25度 steps 意思是,每一个刻度代表0.25度,比如数值为10转换成温度就是2.5度。内部温度读取示例:

/\*这里是一些前提定义\*/
...
#define NRF\_TEMP ((NRF\_TEMP\_Type \*) NRF\_TEMP\_BASE)
...
...
/\*\*
 \* @brief Temperature Sensor. (TEMP)
 \*/

typedef struct {                                    /\*!< TEMP Structure \*/
  __O  uint32\_t  TASKS_START;                       /\*!< Start temperature measurement. \*/
  __O  uint32\_t  TASKS_STOP;                        /\*!< Stop temperature measurement. \*/
  __I  uint32\_t  RESERVED0[62];
  __IO uint32\_t  EVENTS_DATARDY;                    /\*!< Temperature measurement complete, data ready event. \*/
  __I  uint32\_t  RESERVED1[128];
  __IO uint32\_t  INTENSET;                          /\*!< Interrupt enable set register. \*/
  __IO uint32\_t  INTENCLR;                          /\*!< Interrupt enable clear register. \*/
  __I  uint32\_t  RESERVED2[127];
  __I  int32\_t   TEMP;                              /\*!< Die temperature in degC, 2's complement format, 0.25 degC pecision. \*/
  __I  uint32\_t  RESERVED3[700];
  __IO uint32\_t  POWER;                             /\*!< Peripheral power control. \*/
} NRF_TEMP_Type;
...

...
//初始化内部温度传感器
nrf\_temp\_init(); 
...
...
u32 temp\_get(){
	u32 temp;//不考虑0下度数
	//开始温度测量
	NRF_TEMP->TASKS_START = 1;
	/\*等待温度测量完成 \*/
    while (NRF_TEMP->EVENTS_DATARDY == 0){
	}
	NRF_TEMP->EVENTS_DATARDY = 0;//清除临时寄存器
	
 	temp = (nrf\_temp\_read() / 4);	
 	
 	NRF_TEMP->TASKS_STOP = 1; //停止测量
    return temp;
}

随机数产生器
在这里插入图片描述
随机数发生器 RNG 通过触发START任务进行启动,新的随机数连续产生,在准备好时 写入 VALUE 寄存器。每次新的随机数写入到 VALUE寄存器,都会触发一个 VALRDY 事件。

和温度传感器一样,可以单次获取数值进行应用,具体的分析方式参考上面的额温度传感器,下面的例子是读取一个随机数:

...
/\*如果要做更复杂的应用,比如多个随机数需要保存读取之类的需要使用库函数\*/
err_code = nrf\_drv\_rng\_init(NULL);
APP\_ERROR\_CHECK(err_code);
...


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/94545dcac4a342e1a939f21d4942f303~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1773072651&x-signature=KCvGcEToIHZgYmEA3qasl59%2Bid0%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b8bf6fd9688845f18c8d6b71dcee36eb~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1773072651&x-signature=e%2Bmty3Vv03CS1ptH%2FpSw4rWLY2o%3D)

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**