STC15W通过SPI方式读取RM3100数据

您所在的位置:网站首页 人参果的功效与作用中用法禁忌合网 STC15W通过SPI方式读取RM3100数据

STC15W通过SPI方式读取RM3100数据

2023-11-08 01:51| 来源: 网络整理| 查看: 265

 

上面是我的微信和QQ群,欢迎新朋友的加入。

近日接手一个项目,要求在STC单片机上面读取RM3100的数据,淘宝看了下,还真不便宜。

这个东西本身难度不是很大,麻烦的是没有什么参考资料,就官网那点东西。

程序思路很简单,调SPI通信,调初始化设置。

查看数据手册,这些寄存器都是可以被设置的,还好,不算太多。

也没必要全都设置一遍,只需要把需要的设置一下就行,我的话主要是设置了连续测量和转换周期。

/** * @brief Sets cycle count and updates gain and max_data_rate values * @param[in] desire value PNI recomends values between 30 and 400 Hz * @return 1 if successful, 0 otherwise. */ void setCycleCount ( u16 value ) { char to_reg[6]; if (value > 400) value=400; else if (value < 30) value=30; to_reg[0] = value>>8; to_reg[1] = value; to_reg[2] = to_reg[0]; to_reg[3] = to_reg[1]; to_reg[4] = to_reg[0]; to_reg[5] = to_reg[1]; SPIWriteBytes(M3D_3100_CCX,6,to_reg); } /** * @brief Sets data rate in Continuous Measurement Mode. * Fails if desire datarate is higher than the max data rate recommended by PNI. * @param[in] Data rate configuration BYTE * @return 1 if successful, 0 otherwise. */ void setCMMdatarate ( char conf ) { char *ptr; float temp = 1000; switch (conf){ case CMM_UPDATERATE_600: temp=600; break; case CMM_UPDATERATE_300: temp=300; break; case CMM_UPDATERATE_150: temp=150; break; case CMM_UPDATERATE_75 : temp=75; break; case CMM_UPDATERATE_37 : temp=37; break; case CMM_UPDATERATE_18 : temp=18; break; case CMM_UPDATERATE_9 : temp=9; break; case CMM_UPDATERATE_4_5: temp=4.5; break; case CMM_UPDATERATE_2_3: temp=2.3; break; case CMM_UPDATERATE_1_2: temp=1.2; break; case CMM_UPDATERATE_0_6: temp=0.6; break; case CMM_UPDATERATE_0_3: temp=0.3; break; case CMM_UPDATERATE_0_15: temp=0.15; break; case CMM_UPDATERATE_0_075: temp=0.075; break; } ptr = &conf ; SPIWriteBytes(M3D_3100_TMRC,1,ptr); }

设置之后就是对数据的读取

/**********************/ /***** ¶ÁÈ¡Êý¾Ý ******/ /**********************/ void MagGetData(void) { int i = 0; unsigned char temp[9]={0}; static long Mag_Data[3]={0}; static char state = 0; //0 :cmd 1:wait get data static char cNoDataCnt = 0; if (CheckMagDataReady()) { //´«¸ÐÆ÷×¼±¸ºÃ´¦ÀíÊý¾Ý state = 0; //¶ÁÈ¡Êý¾Ýµ½Êý×é SPIReadBytes(0xA4,9,temp); //Êý¾Ý¼ÆËã Mag_Data[0]=temp[0]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3