完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们在我们的设备中使用并设法获得合理的加速度数据,中断等。
但是,当我们尝试从指定的寄存器读取温度时,我们明显得出错误的结果。 这是我们尝试做的事情: 1.将0xC0写入TEMP_CFG_REG。 2.将0x80写入CTRL_REG4。 3.读取OUT_TEMP_L。 4.小延迟(**我们尝试使用和不使用它,没有看似影响**)。 5.读取OUT_TEMP_H并将其值视为温度。 有人可以指出我们是否在这个过程中做错了什么? 另外 - 我们需要以不同的方式对待结果吗?手册说“温度数据存储在OUT_TEMP_H内部,作为8位格式左对齐的两个补码数据”,但我不确定我理解这个含义。如果有人能举例说明可能有用的实际数字。 最后,手册没有指定结果的单位以及是否需要进行一些校准。 我们在假设单位是否正确 摄氏度,不需要校准? 提前致谢! 塔尔 以上来自于谷歌翻译 以下为原文 We're using in our device and manage to get reasonable acceleration data, interrupts etc. However, when we try to read the temperature form the designated register, we clearly get wrong results. Here is what we try to do: 1. write 0xC0 to TEMP_CFG_REG. 2. write 0x80 to CTRL_REG4. 3. read OUT_TEMP_L. 4. small delay (**we tried with and without it, with no seeming affect**). 5. reading OUT_TEMP_H and treating its value as the temperature. Can someone point out if we're doing something wrong in the process? Also - do we need to treat the outcome differently? the manual says 'Temperature data is stored inside OUT_TEMP_H as two’s complement data in 8-bit format left-justified', but i'm not sure I understand the meaning of this. If someone could give an example with actual numbers that might be helpful. Finally, the manual doesn't specify the units of the result and whether it needs some calibration. Are we correct in assuming the units are Celsius and that no calibration is needed? Thanks in advance! Tal |
|
相关推荐
5个回答
|
|
温度传感器可用于测量温度变化。
如何正确使用温度传感器: - 启用TEMP_CFG_REG(1Fh)中的第6位和第7位 - 启用块数据更新,BDU功能。 CTRL_REG4(0x23),BDU(位#7)= 1。 - 读取两个临时寄存器(由于BDU使能):OUT_TEMP_L(0x0C)和OUT_TEMP_H(0x0D)。 数据表示: https://en.wikipedia.org/wiki/Two 有用位:8,左对齐,因此OUT_TEMP_H中有用的数据。 温度传感器输出变化与温度的关系:1位数/摄氏度 以上来自于谷歌翻译 以下为原文 The temperature sensor can be used to measure temperature variations. Do following to correctly work with temperature sensor: - enable the bits 6 and 7 in TEMP_CFG_REG (1Fh) - enable Block Data Update, BDU, feature. CTRL_REG4(0x23) , BDU (bit#7)=1. - read both temp registers (because of BDU enabled): OUT_TEMP_L (0x0C) and OUT_TEMP_H (0x0D). Data representation: https://en.wikipedia.org/wiki/Two Useful bits: 8, left aligned, hence useful data in OUT_TEMP_H. Temperature sensor output change vs temperature: 1 digit/degree of Celsius |
|
|
|
非常感谢您的快速回复!
手册中有没有提到这个事实(温度是相对的,不是绝对的)? 塔尔 以上来自于谷歌翻译 以下为原文 Thank you very much for the speedy reply! Is there anywhere in the manual where this fact (that the temperatures are relative, not absolute) is mentiond? Tal |
|
|
|
另外,有没有办法知道参考值(给出差异的参考值),而不是手动测量每个设备?
以上来自于谷歌翻译 以下为原文 also, is there any way to know the reference value (against which the difference is given), without measuring manually for each device? |
|
|
|
我不知道数据表中提到的地方,但确实如此:-)。
ST不保证参考值,如果要用于测量绝对温度,则必须校准每个设备。 温度传感器在内部使用,输出仅为辅助功能。 以上来自于谷歌翻译 以下为原文 I'm not aware about a place in datasheet where it is mentioned, but it is true :-). The reference value is not guaranteed by ST, if you want to use to measure absolute temperature you have to calibrate each device. The temperature sensor is used internally and the output is let say only secondary function. |
|
|
|
奇怪的是,在其他ST微型产品中,Temp_L和Temp_H两个寄存器都有信息。我注意到Temp_L似乎也以与Temp_H中正在发生的事情相协调的方式改变。尝试这个:
uint8_t rawTemp [2] = {0,0}; LIS2DE12 _read_register(0x0C,(uint8_t *)rawTemp,2,BUS_ACC); float temperature =(float)((int16_t)(rawTemp [1]&lt;&lt; 8)+(int16_t)(rawTemp [0]))/ 256.0;似乎有一点额外的信息 Temp_L,以上 似乎以0.5C的增量给出温度,以T = 25℃为中心。 以上来自于谷歌翻译 以下为原文 Curiously, in other ST micro products, there is information in both registers, Temp_L and Temp_H. I noticed that Temp_L seems to change, too, in a way that is coordinated with what is going on in Temp_H. Try this: uint8_t rawTemp[2] = {0,0}; LIS2DE12 _read_register( 0x0C, (uint8_t*)rawTemp, 2, BUS_ACC ); float temperature = (float)((int16_t)(rawTemp[1] << 8) + (int16_t)(rawTemp[0])) / 256.0;There seems to be one bit of extra info in Temp_L, and the above seems to give the temperature in 0.5C increments, centered on T = 25C. |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2566 浏览 1 评论
3190 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1761 浏览 1 评论
3586 浏览 6 评论
5962 浏览 21 评论
920浏览 4评论
1296浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
560浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1284浏览 3评论
1334浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-2 17:09 , Processed in 1.223411 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号