概述
文章目录
- 一 芯片操作步骤
- 二 驱动层实现
- 三 应用层实现
- 四 测试
一 芯片操作步骤
参考<<Hi3516DV300专业型Smart IP Camera SoC用户指南.pdf>>的3.10.5.2 芯片内部温度检测
芯片内部集成温度传感器(T-Sensor),温度的检测范围为-40~125℃。使能温度传感器数
据采集的流程如下:
T-sensor 相关的寄存器为 MISC 寄存器 MISC_CTRL45~MISC_CTRL50。
步骤 1 设置 T-Sensor 采集模式 MISC_CTRL45[30]。
步骤 2 如果设置为循环采集模式,需设置循环采集周期 MISC_CTRL45[27:20];如果设置为单次采集模式,可略过此步骤。
循环采集周期计算公式为:
T = N × 2 (ms)
其中 N=MISC_CTRL45[27:20]。
步骤 3 使能 T-Sensor MISC_CTRL45[31],开始温度采集。
步骤 4 软件读取 T-Sensor 采集到的温度码(十六进制值)。
单次采集模式下,只有 MISC_CTRL47[9:0]中记录的温度记录码 0 有效。
循环采集模式下,MISC_CTRL47[31:0]~MISC_CTRL50[31:0]记录了最近八次温度记录码 0~7,其中最新的温度记录值为温度记录码 0。
步骤 5 根据温度记录码计算出对应的温度值。
Temperature = (tsensor_result − 136)/793 × 165 − 40(℃)
注:tsensor_result 是步骤 4 中获取的温度记录码的十进制值。
二 驱动层实现
主要实现通过寄存器读写实现基本功能和文件设备操作的ioctl
依赖海思系统抽象层smp/a7_linux/osal
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/printk.h>
#include <linux/version.h>
#include <linux/of_platform.h>
#include <linux/types.h>
#include <asm/io.h>
#include "tsensor.h"
#include "hi_osal.h"
#define TSENSOR_MINOR 111
#define SYS_WRITEL(Addr, Value) ((*(volatile unsigned int *)(Addr)) = (Value))
#define SYS_READ(Addr) (*((volatile int *)(Addr)))
static void *reg_misc_base =0;
static int mode = 0;
static int circletime = 15;
module_param(mode, int, 0600);
module_param(circletime, int, 0600);
MODULE_PARM_DESC(mode,"0: oneshot, 1: circle");
MODULE_PARM_DESC(circletime,"circle time (actual value = circle time x2) ms");
/* tsensor info */
static struct tsensor_info ident = {
.support = 1,
.enable = 0,
.mode = 0,
.circletime = 15,
.version = 0,
};
static inline void reg_write32(unsigned long value, unsigned long mask, unsigned long addr)
{
unsigned long t;
t = SYS_READ((const volatile void *)addr);
t &= ~mask;
t |= value & mask;
SYS_WRITEL((volatile void *)addr, t);
}
/* single mode implement */
static unsigned long tsensor_get_singleshot(void)
{
unsigned long val;
reg_write32(0x0<<31, 0x1<<30, (uintptr_t)reg_misc_base+0x00B4); // oneshot mode
reg_write32(0x0<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4); // tsensor disable
reg_write32(0x1<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4); // tsensor enable
val = SYS_READ((const volatile void *)reg_misc_base+0x00BC);
printk("tsensor_get_singleshot val = %lun", val&0x3FF);
return val&0x3FF;
}
/* circle mode implement */
static void tsensor_set_circle(int enable)
{
unsigned long val;
reg_write32(0x1<<30, 0x1<<30, (uintptr_t)reg_misc_base+0x00B4); // circle mode
val = (circletime&0xFF)<<20;
reg_write32(val, 0x0FF00000, (uintptr_t)reg_misc_base+0x00B4); // circle time
reg_write32(0x0<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4); // tsensor disable
if (enable)
{
reg_write32(0x1<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4); // tsensor enable
printk("tsensor circle startn");
}
}
/* umap REG_MISC_BASE addr with disable tsensor */
static void tsensor_comm_exit(void)
{
if (NULL != reg_misc_base)
{
reg_write32(0x0<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4); // tsensor disable
iounmap(reg_misc_base);
reg_misc_base = 0;
}
}
/* read (single/circle) mode tempeprate */
static void tsensor_update(void)
{
unsigned long t;
/* read tsensor enable */
t = SYS_READ((const volatile void *)reg_misc_base+0x00B4);
ident.enable = (t>>31)&0x1;
/* read tsensor mode */
t = SYS_READ((const volatile void *)reg_misc_base+0x00B4);
ident.mode = (t>>30)&0x1;
/* read circletime */
t = SYS_READ((const volatile void *)reg_misc_base+0x00B4);
ident.circletime = (t>>20)&0xFF;
/* read temperature, if enable */
if (ident.enable)
{
if (ident.mode) // circle mode
{
t = SYS_READ((const volatile void *)reg_misc_base+0x00BC);
ident.temperature[0] = t&0x3FF;
ident.temperature[1] = (t>>16)&0x3FF;
t = SYS_READ((const volatile void *)reg_misc_base+0x00C0);
ident.temperature[2] = t&0x3FF;
ident.temperature[3] = (t>>16)&0x3FF;
t = SYS_READ((const volatile void *)reg_misc_base+0x00C4);
ident.temperature[4] = t&0x3FF;
ident.temperature[5] = (t>>16)&0x3FF;
t = SYS_READ((const volatile void *)reg_misc_base+0x00C8);
ident.temperature[6] = t&0x3FF;
ident.temperature[7] = (t>>16)&0x3FF;
}
else // single mode
{
reg_write32(0x0<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4); // tsensor disable
reg_write32(0x1<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4); // tsensor enable
t = SYS_READ((const volatile void *)reg_misc_base+0x00BC);
ident.temperature[0] = t&0x3FF;
}
}
else
{
memset(ident.temperature, 0x00, sizeof(unsigned int)*8);
}
}
static int tsensor_open(void *private_data)
{
return 0;
}
static int tsensor_release(void *private_data)
{
return 0;
}
static long tsensor_ioctl (unsigned int cmd, unsigned long arg, void *private_data)
{
void *argp = (void *)arg;
unsigned long *p = argp;
unsigned long t;
switch (cmd) {
case TSIOC_GETSTATUS: // get tsensor enable/mode/circletime/temperature
tsensor_update();
osal_memcpy(argp, &ident, sizeof(ident));
return 0;
case TSIOC_GETENABLE: // get tsensor enable
t = SYS_READ((const volatile void *)reg_misc_base+0x00B4);
*p = (t>>31)&0x1;
return 0;
case TSIOC_GETMODE: // get tsensor mode
t = SYS_READ((const volatile void *)reg_misc_base+0x00B4);
*p = (t>>30)&0x1;
return 0;
case TSIOC_GETCIRCLETIME: // get tsensor circle time
t = SYS_READ((const volatile void *)reg_misc_base+0x00B4);
*p = (t>>20)&0xFF;
return 0;
case TSIOC_SETENABLE: // set tsensor enable
t = *p;
if (t)
reg_write32(0x1<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4);
else
reg_write32(0x0<<31, 0x1<<31, (uintptr_t)reg_misc_base+0x00B4);
return 0;
case TSIOC_SETMODE: // set tsensor mode
t = *p;
if (t)
reg_write32(0x1<<30, 0x1<<30, (uintptr_t)reg_misc_base+0x00B4);
else
reg_write32(0x0<<30, 0x1<<30, (uintptr_t)reg_misc_base+0x00B4);
return 0;
case TSIOC_SETCIRCLETIME: // set tsensor circletime
t = *p;
if (t)
reg_write32(0x1<<20, 0x0FF00000, (uintptr_t)reg_misc_base+0x00B4);
else
reg_write32(0x0<<20, 0x0FF00000, (uintptr_t)reg_misc_base+0x00B4);
return 0;
default:
return -1;
}
}
static struct osal_fileops tsensor_fops = {
// .write = tsensor_write,
// .ioctl = tsensor_ioctl,
.unlocked_ioctl = tsensor_ioctl,
.open = tsensor_open,
.release = tsensor_release,
};
static struct osal_dev *tsensor_miscdev = NULL;
static int __init hi_tsensor_init(void)
{
int ret;
reg_misc_base = (void*)ioremap(0x12030000, 0x10000);
if (NULL == reg_misc_base)
{
goto out;
}
if (mode == 0)
{
tsensor_get_singleshot();
}
else
{
tsensor_set_circle(1);
}
// create cdev
tsensor_miscdev = osal_createdev("tsensor");
if(NULL == tsensor_miscdev) {
osal_printk("fail to create devn");
goto out;
}
// register cdev
osal_printk("register devn");
tsensor_miscdev->minor = TSENSOR_MINOR;
tsensor_miscdev->fops = &tsensor_fops;
ret = osal_registerdevice(tsensor_miscdev);
if (ret)
{
osal_printk("fail to register devn");
goto tsensor_out;
}
osal_printk("hi_tsensor_init okn");
return 0;
tsensor_out:
osal_destroydev(tsensor_miscdev);
out:
tsensor_comm_exit();
return -1;
}
static void __exit hi_tsensor_exit(void)
{
// unregister and destroy cdev
osal_deregisterdevice(tsensor_miscdev);
osal_destroydev(tsensor_miscdev);
// tsenor disable and umap REG_MISC_BASE addr
tsensor_comm_exit();
osal_printk("hi_tsensor_exit okn");
return;
}
module_init(hi_tsensor_init);
module_exit(hi_tsensor_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("WEI(Cameray)");
三 应用层实现
基本功能函数:初始化、获取温度、转换温度、反初始化
/**
* @file hi_hal_tsensor.c
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <linux/ioctl.h>
#include <sys/ioctl.h>
#include <pthread.h>
#include <sys/prctl.h>
#include "tsensor.h"
#include "hi_appcomm.h"
#include "hi_type.h"
#include "hi_appcomm_util.h"
#include "hi_hal_tsensor.h"
#include "hi_hal_common.h"
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */
#define HAL_TSENSOR_DEV "/dev/tsensor"
static HI_S32 s_s32HALTSENSORfd = HAL_FD_INITIALIZATION_VAL;
/**
* @brief init temperature sensor
* @param[in] s32Mode: 0 oneshot, 1 circle
* @param[in] s32Time_s: circle time, range: [1, 255]
* @return 0 success,non-zero error code.
* @exception None
* @author WEI
* @date 2021/02/02
*/
HI_S32 HI_HAL_TSENSOR_Init(HI_S32 s32Mode, HI_S32 s32Time_ms)
{
HI_S32 s32Ret = HI_SUCCESS;
if (s_s32HALTSENSORfd != HAL_FD_INITIALIZATION_VAL)
{
MLOGE("already init");
return HI_HAL_EINITIALIZED;
}
if (s32Mode < 0 || s32Mode > 1)
{
MLOGE("Mode should not be 0 or 1. %dn", s32Mode);
return HI_HAL_EINVAL;
}
if (s32Time_ms < 1 || s32Time_ms > 255)
{
MLOGE("Circle time should not be less then 1 and bigger then 255. %dn", s32Time_ms);
return HI_HAL_EINVAL;
}
HI_CHAR szString[HI_APPCOMM_MAX_PATH_LEN] = {0};
snprintf(szString, HI_APPCOMM_MAX_PATH_LEN, " mode=%d circletime=%d", s32Mode, s32Time_ms);
#if defined(__HI3516DV300__)
s32Ret = HI_insmod("/komod/tsensor.ko", szString);
if(HI_SUCCESS != s32Ret && s32Ret != EEXIST)
{
MLOGE("insmod tsensor.ko: failed, errno(%d)n", s32Ret);
return HI_HAL_EINTER;
}
#endif
s_s32HALTSENSORfd = open(HAL_TSENSOR_DEV, O_RDWR);
if (s_s32HALTSENSORfd < 0)
{
MLOGE("open [%s] failedn",HAL_TSENSOR_DEV);
return HI_HAL_EINVOKESYS;
}
s32Ret = ioctl(s_s32HALTSENSORfd, TSIOC_SETMODE, &s32Mode);
if(-1 == s32Ret)
{
MLOGE("TSIOC_SETMODE: failed, errno(%d)n", errno);
return HI_HAL_EINTER;
}
MLOGI(BLUE"TSIOC_SETMODE: mode=%dsn"NONE, s32Mode);
s32Ret = ioctl(s_s32HALTSENSORfd, TSIOC_SETCIRCLETIME, &s32Time_ms);/**feed dog */
if(-1 == s32Ret)
{
MLOGE("TSIOC_SETCIRCLETIME: failed, errno(%d)n", errno);
return HI_HAL_EINTER;
}
MLOGI(BLUE"TSIOC_SETMODE: mode=%dsn"NONE, s32Time_ms);
HI_U32 u32Enable = 1;
s32Ret = ioctl(s_s32HALTSENSORfd, TSIOC_SETENABLE, &u32Enable);/**feed dog */
if(-1 == s32Ret)
{
MLOGE("TSIOC_SETENABLE: failed, errno(%d)n", errno);
return HI_HAL_EINTER;
}
return HI_SUCCESS;
}
/**
* @brief get temerature
* @param[out] pau32Temp: temperatue array, array size is 8. oneshot valid size is 1, circle valid size is 8.
* @return 0 success,non-zero error code.
* @exception None
* @author WEI
* @date 2021/02/02
*/
HI_S32 HI_HAL_TSENSOR_GetTemp(HI_U32 *pau32Temp)
{
HI_S32 s32Ret = HI_SUCCESS;
HI_S32 i;
struct tsensor_info tsensor_info = {0};
HI_APPCOMM_CHECK_POINTER(pau32Temp, HI_FAILURE);
s32Ret = ioctl(s_s32HALTSENSORfd, TSIOC_GETSTATUS, &tsensor_info);
if(-1 == s32Ret)
{
MLOGE("TSIOC_GETSTATUS: failed, errno(%d)n", errno);
return HI_HAL_EINTER;
}
memset(pau32Temp, 0x00, sizeof(HI_U32)*8);
if (tsensor_info.mode)
{
for (i = 0; i < ARRAY_SIZE(tsensor_info.temperature); i++)
{
pau32Temp[i] = tsensor_info.temperature[i];
}
}
else
{
pau32Temp[0] = tsensor_info.temperature[i];
}
return HI_SUCCESS;
}
/**
* @brief actual temperature convert
* @param[in] u32Temp: param from HI_HAL_TSENSOR_GetTemp
* @return float temperature. range: [-40, 125], other is invalid!
* @exception None
* @author WEI
* @date 2021/02/02
*/
HI_DOUBLE HI_HAL_TSENSOR_Convert(HI_U32 u32Temp)
{
HI_DOUBLE fRet = u32Temp;
fRet = (fRet - 136)/793*165 - 40;
return fRet;
}
/**
* @brief destroy tsensor task
* @return 0 success,non-zero error code.
* @exception None
* @author WEI
* @date 2021/02/02
*/
HI_S32 HI_HAL_TSENSOR_Deinit(HI_VOID)
{
HI_S32 s32Ret;
if (s_s32HALTSENSORfd == HAL_FD_INITIALIZATION_VAL)
{
MLOGE("tsensor not initialized,no need to closen");
return HI_HAL_ENOINIT;
}
s32Ret = close(s_s32HALTSENSORfd);
if (0 > s32Ret)
{
MLOGE("tsensor fd[%d] close,fail,errno(%d)n",s_s32HALTSENSORfd,errno);
return HI_HAL_EINVOKESYS;
}
s_s32HALTSENSORfd = HAL_FD_INITIALIZATION_VAL;
return HI_SUCCESS;
}
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
四 测试
int HI_PDT_TEST_TSENSOR()
{
printf("tsensor in 100sn");
HI_S32 s32Cnt = 100;
plan(102);
cmp_ok(HI_HAL_TSENSOR_Init(1, 100), "==", 0, "HI_HAL_TSENSOR_Init");
while(s32Cnt--)
{
HI_U32 au32Temp[8];
cmp_ok(HI_HAL_TSENSOR_GetTemp(au32Temp), "==", 0, "HI_HAL_TSENSOR_GetTemp");
printf("Temp[%f]: %d, %d, %d, %d, %d, %d, %d, %dn", HI_HAL_TSENSOR_Convert(au32Temp[0]),
au32Temp[0], au32Temp[1], au32Temp[2], au32Temp[3],
au32Temp[4], au32Temp[5], au32Temp[6], au32Temp[7]);
sleep(1);
}
cmp_ok(HI_HAL_TSENSOR_Deinit(), "==", 0, "HI_HAL_TSENSOR_Deinit");
done_testing();
}
tsensor in 100s
1..102
[04:25:01:671 ERROR-]:HI_insmod[212]:can't insert '/komod/tsensor.ko': File exists
[04:25:01:671 INFO-]:HI_HAL_TSENSOR_Init[82]:WDIOC_SETMODE: mode=1s
[04:25:01:671 INFO-]:HI_HAL_TSENSOR_Init[90]:WDIOC_SETMODE: mode=100s
ok 1 - HI_HAL_TSENSOR_Init
ok 2 - HI_HAL_TSENSOR_GetTemp
Temp[55.920555]: 597, 596, 597, 596, 597, 596, 597, 597
ok 3 - HI_HAL_TSENSOR_GetTemp
Temp[55.712484]: 596, 597, 597, 597, 597, 597, 597, 596
ok 4 - HI_HAL_TSENSOR_GetTemp
Temp[55.712484]: 596, 597, 597, 597, 597, 597, 597, 596
ok 5 - HI_HAL_TSENSOR_GetTemp
Temp[55.920555]: 597, 597, 596, 597, 596, 596, 597, 597
ok 6 - HI_HAL_TSENSOR_GetTemp
Temp[55.920555]: 597, 597, 597, 596, 597, 597, 597, 597
ok 7 - HI_HAL_TSENSOR_GetTemp
Temp[55.920555]: 597, 597, 597, 597, 597, 597, 597, 597
ok 8 - HI_HAL_TSENSOR_GetTemp
Temp[55.920555]: 597, 597, 597, 596, 596, 597, 597, 596
ok 9 - HI_HAL_TSENSOR_GetTemp
Temp[54.047919]: 588, 588, 588, 588, 588, 588, 589, 589
ok 10 - HI_HAL_TSENSOR_GetTemp
Temp[53.007566]: 583, 583, 583, 583, 582, 583, 583, 582
ok 11 - HI_HAL_TSENSOR_GetTemp
Temp[53.423707]: 585, 585, 585, 585, 585, 585, 584, 584
ok 12 - HI_HAL_TSENSOR_GetTemp
Temp[54.464061]: 590, 590, 590, 590, 590, 590, 590, 590
ok 13 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 14 - HI_HAL_TSENSOR_GetTemp
Temp[54.047919]: 588, 589, 589, 589, 589, 590, 590, 590
ok 15 - HI_HAL_TSENSOR_GetTemp
Temp[52.591425]: 581, 581, 581, 581, 581, 581, 581, 582
ok 16 - HI_HAL_TSENSOR_GetTemp
Temp[51.967213]: 578, 579, 579, 579, 579, 579, 579, 579
ok 17 - HI_HAL_TSENSOR_GetTemp
Temp[51.967213]: 578, 578, 578, 578, 578, 578, 578, 578
ok 18 - HI_HAL_TSENSOR_GetTemp
Temp[52.383354]: 580, 580, 580, 580, 580, 580, 580, 580
ok 19 - HI_HAL_TSENSOR_GetTemp
Temp[53.215637]: 584, 585, 585, 584, 584, 585, 585, 584
ok 20 - HI_HAL_TSENSOR_GetTemp
Temp[53.839849]: 587, 586, 587, 587, 587, 587, 587, 587
ok 21 - HI_HAL_TSENSOR_GetTemp
Temp[54.047919]: 588, 588, 588, 588, 588, 588, 588, 588
ok 22 - HI_HAL_TSENSOR_GetTemp
Temp[54.255990]: 589, 589, 589, 589, 589, 589, 589, 589
ok 23 - HI_HAL_TSENSOR_GetTemp
Temp[54.464061]: 590, 590, 590, 590, 590, 590, 590, 590
ok 24 - HI_HAL_TSENSOR_GetTemp
Temp[54.464061]: 590, 590, 590, 590, 590, 590, 590, 590
ok 25 - HI_HAL_TSENSOR_GetTemp
Temp[54.464061]: 590, 590, 591, 590, 591, 591, 591, 590
ok 26 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 27 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 28 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 29 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 592, 591
ok 30 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 592, 592, 591, 591, 591
ok 31 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 591, 592, 591, 591, 592
ok 32 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 33 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 591, 592, 592, 592, 592
ok 34 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 591, 592, 592, 592, 591
ok 35 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 591, 591, 592, 591, 592
ok 36 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 591, 591, 592, 592, 592
ok 37 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 592, 592, 592, 591, 591
ok 38 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 592, 592, 591, 592, 592, 592
ok 39 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 592, 592, 592, 592, 592, 591, 591
ok 40 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 592, 592, 591, 591, 592
ok 41 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 591, 592, 592, 592
ok 42 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 591, 591, 591, 592, 592
ok 43 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 44 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 591, 591, 591, 591, 592
ok 45 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 591, 591, 591, 591, 591
ok 46 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 47 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 48 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 49 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 50 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 590, 591, 591
ok 51 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 52 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 53 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 54 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 590, 591
ok 55 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 590, 591, 591
ok 56 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 57 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 590, 591
ok 58 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 59 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 60 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 61 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 62 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 63 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 64 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 65 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 66 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 67 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 68 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 592, 592, 591, 591, 591, 591, 591
ok 69 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 591, 591, 591, 591, 591, 591
ok 70 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 592, 591, 591, 592, 591, 592
ok 71 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 591, 592, 591, 591, 591, 591, 591
ok 72 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 592, 591, 592, 592, 592, 592, 591
ok 73 - HI_HAL_TSENSOR_GetTemp
Temp[54.672131]: 591, 592, 592, 592, 592, 592, 592, 591
ok 74 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 591, 592, 591
ok 75 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 591, 591, 592, 592, 592
ok 76 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 77 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 591, 592, 592, 591, 591
ok 78 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 79 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 591, 592, 592, 592, 592, 592
ok 80 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 81 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 591, 592, 592, 591, 592, 592, 591
ok 82 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 83 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 84 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 85 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 86 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 591, 592, 592
ok 87 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 88 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 89 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 90 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 591, 592, 592, 592, 592, 592
ok 91 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 92 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 93 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 94 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 95 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 96 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 97 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 98 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 99 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 592
ok 100 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 593, 592, 592, 592, 592, 592, 592
ok 101 - HI_HAL_TSENSOR_GetTemp
Temp[54.880202]: 592, 592, 592, 592, 592, 592, 592, 593
ok 102 - HI_HAL_TSENSOR_Deinit
最后
以上就是可靠灰狼为你收集整理的【海思篇】【Hi3516DV300】十八、TSENSOR 芯片温度检测驱动 开发的全部内容,希望文章能够帮你解决【海思篇】【Hi3516DV300】十八、TSENSOR 芯片温度检测驱动 开发所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复