首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Linux/Qtopia的车载温度网络采集 02

基于Linux/Qtopia的车载温度网络采集 02

本设计采用寄生电源连接方式,12位分辨率。寄生电源的优点为:远程温度检测无需本地电源;缺少正常电源条件下也可以读ROM。为确保 DS18B20在其有效变换期内得到足够的电源电流,在I/O线上通过MOSFET提供强的上拉(如图2所示)。当使用寄生电源方式时,VDD引脚必须连接到地。
  系统核心控制器S3C2410X是三星公司基于arm920T核的芯片。S3C2410X集成了1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)、SDRAM、触摸屏、USB、SPI、SD和MMC等控制器,4个具有PWM功能的计时器和1个内部时钟,8通道的10位 ADC,117位通用I/O口和24位外部中断源,8通道10位AD控制器,处理器工作频率最高达到203 MHz。系统显示采用SHARP 3.5 in的TFT_LCD液晶显示屏。系统框图如图2所示。
  图2 信息采集系统及部分电路连接原理
  3 驱动实现
  本节将实现一线制温度传感器网络的驱动模块。驱动从总体上看分为两部分:驱动与内核接口层、硬件设备接口层。
  3.1 驱动与内核接口层
  驱动与内核接口层主要完成驱动模块在Linux内核的注册加载、卸载清除工作。这部分工作分别由初始化和退出函数完成。
  ① 初始化函数完成驱动模块加载:
  static int __init DS18B20_init(void){
  ……
  register_chrdev(DS18B20_MAJOR,DEVICE_NAME, &DS18B20_fops);//完成设备注册
  #ifdefCONFIG_DEVFS_FS//创建设备文件系统
  devfs_mk_cdev(MKDEV(DS18B20_MAJOR,0),S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP,DEVICE_NAME);
  #endif
  ……
  }
  ② 退出函数完成驱动模块卸载:
  static void __exit DS18B20_exit(void) {
  #ifdef CONFIG_DEVFS_FS
  devfs_remove(DEVICE_NAME);//移除设备文件
  #endif
  unregister_chrdev(DS18B20_MAJOR,DEVICE_NAME); //完成设备注销
  ……
  }
返回列表