LM75A移植_linux开发 lm75ad

参考:基于FS_S5PC100的LM75温度传感器驱动程序添加与测试


LM75A是嵌入式中常用的温度传感器,常用来监测板上温度。
LM75A的接口是i2c接口,i2c的设备地址一般为48(要根据原理图来定),温度采集范围是-55°C-+125°C


原理图

image

u-boot中的移植

在配置文件中添加相应的宏定义,重新编译烧写。

$vi include/configs/p1020ndae
/\* I2C SYSMON (LM75) \*/
#define CONFIG\_DTT\_LM75 1 /\* ON Semi's LM75 \*/
#define CONFIG\_DTT\_SENSORS {0} /\* Sensor addresses \*/
#define CONFIG\_SYS\_DTT\_MAX\_TEMP 70
#define CONFIG\_SYS\_DTT\_LOW\_TEMP -30
#define CONFIG\_SYS\_DTT\_HYSTERESIS 3

在u-boot中移植,没有相应的命令可以直接读取温度,但是可以用i2c调试命令来读取寄存器。

linux Drivers移植

硬件描述部分

新版的内核,大部分芯片都是使用device tree来描述硬件信息的,但是为了兼容老芯片,还是提供platform的移植方法。

以下只用其一即可。

platform总线移植

以S5PC100平台为例,在内核S5PC100平台代码中添加一个I2C设备用来描述LM75

  1. 打开平台代码源文件:

$ vim (kernel_dir)/arch/arm/mach-s5pc100/mach-smdkc100.c
2. 在结构体:

static struct platform_device \*smdkc100_devices[] __initdata = {
	...
};

的定义后面添加如下代码:

static struct i2c_board_info i2c_devs0[] __initdata = {
    { I2C\_BOARD\_INFO("lm75", 0x90 >> 1 ), },
};

在函数smdkc100_machine_init中的

 /\* i2c \*/
s3c\_i2c0\_set\_platdata(NULL);
s3c\_i2c1\_set\_platdata(NULL);

之后添加如下代码:

 i2c\_register\_board\_info(0, i2c_devs0, ARRAY\_SIZE(i2c_devs0));

device tree移植

在相应的i2c设备子树中添加lm75a的节点

i2c@3000 {                                  
    lm75a@48 {							+
        compatible = "nxp,lm75a";		+
        reg = <0x48>;					+
    };									+
    rtc@68 {
        compatible = "dallas,ds1339";
        reg = <0x68>;
    };
};

driver移植

执行make menuconfig,在内核菜单中使用/来搜索lm75

image

结果

image

找到lm75的驱动配置所在位置,进入配置后选择lm75温度传感器的驱动程序:

 Location:
	-> Device Drivers
		-> Hardware Monitoring support (HWMON [=y])
        	-> <\*>   National Semiconductor LM75 and compatibles

image

重新编译内核和设备树
$make uImage
$make p1020rdb-pd_32b.dtb

重新烧写u-boot或者kernel和设备树

使用tftp烧写。

linux下的lm75验证

sensors命令

sensors是linux下自动检测和读取传感器的命令


image

用手捂住lm75,温度会有变化。

测试程序验证

以下是测试程序源码,例程中也展示了sysfs接口的使用方法

#include <stdio.h>
#include <fcntl.h>

int main() {
    int n, temp_int;
    float temp_float;
    char buf[10];
    int fd = open("/sys/bus/i2c/devices/0-0048/temp1\_input", O_RDONLY);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值