当前位置: 首页 > news >正文

做预算查价格的网站是哪个定西企业网站制作

做预算查价格的网站是哪个,定西企业网站制作,好网站123,微网站怎么做一.SD5075芯片简介 SD5075 是一款高准确度温度传感器芯片内含高精度测温 ADC#xff0c;在-40C ~100C 范围内典型误差小于0.5C#xff0c;在-55C~125C 范围内典型误差小于士1.0C。通过两线 IC/SMBus接口可以很方便与其他设备建立通信。设置 A2~A0 的地址线#xff0c;可支持…一.SD5075芯片简介 SD5075 是一款高准确度温度传感器芯片内含高精度测温 ADC在-40C ~100°C 范围内典型误差小于0.5°C在-55C~125°C 范围内典型误差小于士1.0°C。通过两线 IC/SMBus接口可以很方便与其他设备建立通信。设置 A2~A0 的地址线可支持8 片芯片并联总线连接 本芯片可选 3 种工作模式: 连续测温模式单次测温模式关断模式。可根据速度或功耗的需求灵活选择和配置。 管脚描述 二.SD5075温度检测原理 原理 SD5075芯片经过ALARM引脚检测温度的变化经过模数转换器的转换把温度值写入寄存器中SOC再通过IIC读取寄存器的值从而拿到温度值。 寄存器列表 通过配置0x01寄存器为0x00通过寄存器0x00读取到温度结果。 三.代码实现 #include linux/miscdevice.h #include linux/cdev.h #include linux/device.h #include linux/fs.h #include linux/i2c-dev.h #include linux/i2c.h #include linux/init.h #include linux/kernel.h #include linux/module.h #include linux/notifier.h #include linux/slab.h #include linux/uaccess.h #include linux/compat.h #include linux/printk.h #include linux/kobject.h #include linux/version.h#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x00) #define DRIVER_NAME IST_TEMP/*define logging*/ #define IST_TEMP_DEBUG 0 #if IST_TEMP_DEBUG #define DBG(format, args...) \printk(KERN_DEBUG %s: format, DRIVER_NAME, ##args) #define ERR(format, args...) \printk(KERN_ERR %s: format, DRIVER_NAME, ##args) #define WARNING(format, args...) \printk(KERN_WARN %s: format, DRIVER_NAME, ##args) #define INFO(format, args...) \printk(KERN_INFO %s: format, DRIVER_NAME, ##args) #else #define DBG(format, args...) #define ERR(format, args...) #define WARNING(format, args...) #define INFO(format, args...) #endifstruct temp_dev {struct device *dev;struct miscdevice miscdev;struct i2c_client *client;u32 value; };struct temp_dev *g_temp; struct temp_dev *temp; static int last_value 0;//charstatic void i2c_wr(struct temp_dev *temp, u16 reg, u8 *val, u32 n) {struct i2c_msg msg;struct i2c_client *client temp-client;int err;u8 data[128];data[0] reg;memcpy(data[1], val, n);msg.addr client-addr;msg.flags 0;msg.buf data;msg.len n 1;err i2c_transfer(client-adapter, msg, 1);if (err ! 1) {ERR(%s: writing register 0x%x from 0x%x failed\n, __func__,reg, client-addr);} else {switch (n) {case 1:INFO(I2C write 0x%02x 0x%02x\n, reg, data[1]);break;case 2:INFO(I2C write 0x%02x 0x%02x%02x\n, reg, data[2],data[1]);break;case 4:INFO(I2C write 0x%02x 0x%02x%02x%02x%02x\n, reg,data[4], data[3], data[2], data[1]);break;default:INFO(I2C write %d bytes from address 0x%02x\n, n,reg);}} }static void i2c_rd(struct temp_dev *temp, u16 reg, u8 *val, u32 n) {struct i2c_msg msg[2];struct i2c_client *client temp-client;int err;u8 buf[1] { reg };/*msg[0] addr to read*/msg[0].addr client-addr;msg[0].flags 0;msg[0].buf buf;msg[0].len 1;/*msg[1] read data*/msg[1].addr client-addr;msg[1].flags I2C_M_RD;msg[1].buf val;msg[1].len n;err i2c_transfer(client-adapter, msg, ARRAY_SIZE(msg));if (err ! ARRAY_SIZE(msg)) {ERR(%s: reading register 0x%x from 0x%x failed\n, __func__,reg, client-addr);} }static void i2c_rd8(struct temp_dev *temp, u16 reg, u8 *val) {i2c_rd(temp, reg, val, 1); }static void i2c_wr8(struct temp_dev *temp, u16 reg, u8 buf) {i2c_wr(temp, reg, buf, 1); }static void i2c_wr_word(struct temp_dev *temp, u16 reg, u16 val) {unsigned char data[2] {0};data[0] (unsigned char)(val 0xFF);data[1] (unsigned char)((val 0xFF00) 8);i2c_wr(temp, reg, data, 2); }static void i2c_rd_word(struct temp_dev *temp, u16 reg, u8 *val) {i2c_rd(temp, reg, val, 2); }static long temperature_ioctl(struct file *file, uint32_t cmd, unsigned long arg) {return 0; }static ssize_t temperature_write(struct file *file, const char __user *buf,size_t size, loff_t *ppos) {return 1; }static ssize_t temperature_read(struct file *file, char __user *buf, size_t size,loff_t *ppos) {return 1; }static ssize_t temperature_value_read(struct device *dev,struct device_attribute *attr, char *buf) {struct temp_dev *temp g_temp;int result -1;unsigned char reg;unsigned char reg_value;unsigned short value 0;unsigned char value1[2] {0};reg 0x01;reg_value 0x00;i2c_wr8(temp, reg, reg_value);reg 0x00;i2c_rd_word(temp, reg, value1);value (value1[0]8|value1[1])4;if(value 0x800){printk( temperature_value_read !!!);value (value - 2048)4;result value - 128;}else{result value4;printk( temperature_value_read !!!);}if(result -1){result - last_value;printk( temperature_value_read !!!);if((result 8) || (result (-8))){result last_value;}else{result -1;}}temp-value result;return sprintf(buf, %d\n, temp-value); }static ssize_t temperature_value_write(struct device *dev,struct device_attribute *attr,const char *buf, size_t count) {return count; }static DEVICE_ATTR(value, 0644,temperature_value_read, temperature_value_write);static void temp_init(struct temp_dev *temp) {}static const struct file_operations temp_fops {.owner THIS_MODULE,.read temperature_read,.write temperature_write,.unlocked_ioctl temperature_ioctl, };struct miscdevice temp_miscdev {.minor MISC_DYNAMIC_MINOR,.name temp_dev,.fops temp_fops, };static int temp_probe(struct i2c_client *client,const struct i2c_device_id *id) {struct temp_dev *temp;struct device *dev client-dev;int ret;dev_info(dev, driver version: %02x.%02x.%02x,DRIVER_VERSION 16,(DRIVER_VERSION 0xff00) 8,DRIVER_VERSION 0x00ff);if (!i2c_check_functionality(client-adapter, I2C_FUNC_SMBUS_BYTE_DATA))return -EIO;DBG(chip found 0x%x (%s)\n, client-addr 1,client-adapter-name);temp devm_kzalloc(dev, sizeof(struct temp_dev), GFP_KERNEL);if (!temp)return -ENOMEM;temp-client client;client-flags | I2C_CLIENT_SCCB;ret misc_register(temp_miscdev);if (ret) {ERR( temp ERROR: could not register ist_temp device\n);return ret;}ret device_create_file(temp_miscdev.this_device,dev_attr_value);if (ret) {dev_err(temp-dev, failed to create attr hdmirxsel!\n);return ret;}temp_init(temp);g_temp temp;INFO(%s found 0x%x (%s)\n, client-name, client-addr 1,client-adapter-name);return 0; }static int temp_remove(struct i2c_client *client) {misc_deregister(temp_miscdev);kfree(temp);return 0; }static const struct of_device_id temp_of_match[] {{ .compatible temperature },{} }; MODULE_DEVICE_TABLE(of, temp_of_match);static struct i2c_driver temp_driver {.probe temp_probe,.remove temp_remove,.driver {.owner THIS_MODULE,.name DRIVER_NAME,.of_match_table of_match_ptr(temp_of_match),}, };static int __init temp_driver_init(void) {return i2c_add_driver(temp_driver); }static void __exit temp_driver_exit(void) {i2c_del_driver(ist_temp_driver); }device_initcall_sync(temp_driver_init); module_exit(temp_driver_exit);MODULE_DESCRIPTION(temperature sensor); MODULE_AUTHOR(); MODULE_LICENSE(GPL v2);
http://www.pierceye.com/news/80792/

相关文章:

  • 网站怎么做用户体验南昌网站建设多少钱
  • 服装网站建设的目的仙游县网站建设
  • 杭州富阳网站建设台州建设信息港网站
  • 建设文明网站包括哪些内容网站运营意义
  • 河北住房和城乡建设局网站首页做行业门户网站要投资多少钱
  • 网站被做镜像什么意思wordpress显示指定分类目录
  • 石家庄百度推广家庄网站建设wordpress设置仅自己可见
  • 杭州网站开发凡客长沙南站建站
  • 大连本站运营公司网站seo推广哪家值得信赖
  • python搭建网站制作的网站
  • 谁在万网建设的网站手机管理网站模板下载软件
  • 本地网站架设工具网站开发中涉及的侵权行为
  • 山东郓城网站建设wordpress被墙
  • 帮人做分销网站违法么vi设计哪些品牌比较好
  • 网站搭建 主机推荐网页制作模板ppt报告
  • 电商网站建设需要多少钱一年前端开发主要做什么
  • 海南网站备案wordpress加底纹
  • 怎么检查外包做的网站快速开发小程序
  • 咸阳做网站的公司有哪些青岛网站建设方案托管
  • 哪个网站可以帮忙做简历南京网站设计课程
  • 如何做公司培训网站2022最新引流推广平台
  • 公司没有备案了网站北京建设工程信息网上报名基础信息
  • 论坛网站建设多少钱怎样看一个网站做的网络广告
  • 那些网站可以接私活做网站开发技术与应用课程设计
  • 用asp.net做网站怎么打电话给网络服务商
  • 设计师都上什么网站2345浏览器免费版
  • 网站容量网站中英文转换怎么做
  • 潍坊高新建设局网站聊城网站建设项目
  • 逻辑网络设计的目标是什么?seo排名赚app
  • 定兴做网站建筑设计案例网站推荐