Linux I2C驱动

Linux I2C驱动
Linux I2C驱动

Linux I2C驱动框架

----闫孝军

一.I2C总线概述

I2C(内置集成电路)总线是由Philips公司开发的两线式串行总线,产生于20世纪80年代,用于连接微控制器及其外围设备。I2C总线简单而有效,占用很少的PCB(印刷电路板)空间,芯片管脚数量少,设计成本低。I2C总线支持多主控(multi-mastering)模式,任何能够进行发送和接收的设备都可以成为主设备。主控能够控制数据的传输和时钟频率,在任意时刻只能有一个主控。

组成I2C总线的两个信号为数据线SDA和时钟线SCL。为了避免总线信号的混乱,要求各设备连接到总线的输出端必须是开漏输出或集电极开路输出的结构。总线空闲时,上拉电阻使SDA和SCL线都保持高电平。根据开漏输出或集电极开路输出信号的“线与”逻辑,I2C总线上任意器件输出低电平都会使相应总线上的信号线变低。

I2C设备上的串行数据线SDA接口电路是双向的,输出电路用于向总线发送数据,输入电路用于接收总线上的数据。同样地,串行时钟线SCL也是双向的,作为控制总线数据传送的主机要通过SCL 输出电路发送时钟信号,并检测总线上SCL 上的电平以决定什么时候发下一个时钟脉冲电平;作为接收主机命令的从设备需按总线上SCL的信号发送或接收SDA上的信号,它也可以向SCL 线发出低电平信号以延长总线时钟信号周期。

当SCL 稳定在高电平时,SDA 由高到低的变化将产生一个开始位,而由低到高的变化则产生一个停止位,如图1所示:

图1 I2C总线开始位和停止位

开始位和停止位都由I2C 主设备产生。在选择从设备时,如果从设备采用7 位地址,则主设备在发起传输过程前,需先发送1 字节的地址信息,前7 位为设备地址,最后1 位为读写标志。之后,每次传输的数据也是1 个字节,从MSB 位开始传输。每个字节传完后,在SCL的第9 个上升沿到来之前,接收方应该发出1 个ACK 位。SCL上的时钟脉冲由I2C主控方发出,在第8个时钟周期之后,主控方应该释放SDA,I2C总线的时序如图2 所示。

串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s。

二、Linux中I2C驱动框架

Linux 的I2C协议栈分为三层:核心层(i2c-core.c),总线适配器驱动(adapter和algorithm,这个一般由平台厂商提供的BSP实现),设备驱动

(i2c-client,这个要自己实现)。

1.I2C核心层

I2C核心位于drivers/i2c/i2c-core.c,他主要提供一组不依赖于硬件平台的接口,它有Linux内核提供,一般不需要被工程师修改,它是I2C总线驱动和设备驱动之间相互联系的纽带。主要包含以下重要函数:

(1)增加/删除i2c_adapter。

int i2c_add_adapter(struct i2c_adapter *adap);

int i2c_del_adapter(struct i2c_adapter *adap);

(2)增加/删除i2c_driver。

int i2c_register_driver(struct module *owner, struct i2c_driver

*driver);

int i2c_del_driver(struct i2c_driver *driver);

inline int i2c_add_driver(struct i2c_driver *driver);

(3)i2c_client依附/脱离。

int i2c_attach_client(struct i2c_client *client);

int i2c_detach_client(struct i2c_client *client);

2.I2C总线层

I2C 总线驱动是对I2C 硬件体系结构中适配器端的实现,适配器可由CPU 控制,甚至可以直接集成在CPU内部。I2C 总线驱动主要包含了I2C 适配器数据结构i2c_adapter、I2C适配器的algorithm数据结构i2c_algorithm和控制I2C适配器产生通信信号的函数。经由I2C 总线驱动的代码,我们可以控制I2C适配器以主控方式产生开始位、停止位、读写周期,以及以从设备方式被读写、产生ACK 等。它一般位于drivers/busses目录下,例如在RK281X的BSP中,对应的驱动为i2c 总线驱动为drivers/busses/i2c-rk28.c。

rock28_i2c_transfer()

Linux2.6.32 I2C驱动

module_init(xxx_init);

i2c_add_driver(&xxx_driver);

i2c_register_driver(THIS_MODULE, driver);

bus_add_driver(drv);

driver_attach(drv);

__driver_attach();

driver_match_device(drv, dev) //调用i2c_device_match匹配id_tabel和driver_probe_device(drv, dev)//device中的设备名称如果client的名字和

//driver->id_table[]中的名称匹配即为成功↓

really_probe(dev, drv);

DF12型手扶拖拉机变速驱动系统设计

本科毕业设计 题目:DF12型手扶拖拉机变速驱动系统设计 学院: 姓名: 学号: 专业:机械设计制造及其自动化 年级: 指导教师:

摘要 随着变型运输拖拉机和农用运输车的发展,原来依靠农村运输业发展起来的小四轮拖拉机逐步转向田间地头。然而,目前小四轮拖拉机田间作业能力差,又没有很多配套的农业机械,农忙季节短,致使大量小四轮拖拉机一年中作业时间短,被迫长期闲置着。这影响了农村专业户的作业效益,也造成了不应该有的资源浪费。针对这些情况,我们在原有小四轮拖拉机的基础上稍微作些改动,使它的功能延伸。譬如可在原来小四轮拖拉机的基础上,改变座位、方向盘、离合、油门、刹车的方位,把拖拉机变成倒开式,在变速箱后安装挖掘装置、铲运装置或装载装置而成。 本次毕业设计是对机械专业学生在毕业前的一次全面训练,目的在于巩固和扩大学生在校期间所学的基础知识和专业知识,训练学生综合运用所学知识分析和解决问题的能力。是培养、锻炼学生独立工作能力和创新精神之最佳手段。毕业设计要求每个学生在工作过程中,要独立思考,刻苦钻研,有所创造的分析、解决技术问题。通过毕业设计,使学生掌握改造方案的拟定、比较、分析及进行必要的计算。 关键字:齿轮操纵机构轴轴承锁定机构

DESING of a CERTAIN TYPE of TRACTOR GEARBOX With variant transport tractors and agricultural the development of carriage car, depends on rural transportation industry to develop the small four-wheel tractor to field edge of a field. However, at present, small four-wheel the tractor field work ability is poor, and not many ancillary agricultural machinery, busy season is short, resulting in a large number of small four-wheel tractor year short operation time, forced long-term idle. The influence of rural specialist work benefit, also cause should not be some waste of resources. In light of these circumstances, we in the original small four-wheel tractor based on slightly to make some changes, make it functional extension. For example, in the original small four-wheel tractor based on, change seats, steering wheel, clutch, throttle, brake position, the tractor into inverted open, in a gearbox installed after digging device, lifting device or a loading device. The graduation design is about mechanical speciality students before graduation and a comprehensive training, purpose is to consolidate and expand the students learn the basic knowledge and professional knowledge, training students' comprehensive use of the knowledge the ability to analyze and solve problems. Is training, training students the ability to work independently and the spirit of innovation is the best means. Graduation design requirements of each student in the course of the work, we need to think independently, study assiduously, create somewhat analysis, solving technical problems. Through the graduation project, so that students master the transformation plan formulation, comparison, analysis and necessary calculation. Key words:Gear Manipulation of body Axis Bearing Locking mechanism

电动车辆无级变速驱动系统、变速控制系统及方法与设计方案

一种电动车辆技术领域的电动车辆无级变速驱动系统、变速控制系统及方法,包括:第一驱动电机、行星轮系、第二驱动电机和第三输出机构,其中,行星轮系设有齿圈、行星支架、太阳轮和若干行星齿轮,行星齿轮周向均布在行星支架上,行星支架和齿圈之一与第二驱动电机的输出轴啮合、另一与第三输出机构啮合,齿圈与行星齿轮啮合,太阳轮与第一驱动电机输出端连接并与行星齿轮啮合。本技术采用行星减速机构,通过第二驱动电机带动行星支架或者齿圈的转动达到所需要的减速比,完成电动车的无级变速,实现换挡自动化。 技术要求 1.一种电动车辆无级变速驱动系统,其特征在于,包括:第一驱动电机、行星轮系、第二驱动电机和第三输出机构,其中:行星轮系设有齿圈、行星支架、太阳轮和若干行星齿轮,行星齿轮周向均布在行星支架上,行星支架和齿圈之一与第二驱动电机的输出轴啮合、另一与第三输出机构啮合,齿圈与行星齿轮啮合,太阳轮与第一驱动电机输出端连 接并与行星齿轮啮合。 2.根据权利要求1所述的电动车辆无级变速驱动系统,其特征是,所述的齿圈、行星支架和太阳轮均套设在主轴上。 3.根据权利要求1所述的电动车辆无级变速驱动系统,其特征是,所述第三输出机构设有轮轴,所述的轮轴与电动车辆的驱动轴固定连接。 4.根据权利要求2所述的电动车辆无级变速驱动系统,其特征是,所述的第一驱动电机包括转子总成和绕线定子,其中,转子总成设有转子内衬套,转子内衬套一端固定有太阳轮。 5.根据权利要求2所述的电动车辆无级变速驱动系统,其特征是,所述第一驱动电机的输出端与太阳轮通过减速机构相连,所述的减速机构为皮带、链条、齿轮传动机构中任意 一种。

6.一种应用于上述任一权利要求所述电动车辆无级变速驱动系统的变速控制系统,其特征在于,包括:行车电脑、制动传感器、变速传感器、第一驱动电机控制单元、第二驱动电机控制单元、第一转速传感器和第二转速传感器,其中, 制动传感器与行车电脑相连并输出制动信号; 变速传感器与行车电脑相连并输出加速信号或减速信号; 行车电脑与第一驱动电机控制单元、第二驱动电机控制单元相连并传输两驱动电机的控制信息; 第一转速传感器与行车电脑相连并输出第一驱动电机转速信息; 第二转速传感器与行车电脑相连并输出第二驱动电机转速信息。 7.根据权利要求6所述电动车辆无级变速驱动系统的变速控制系统,其特征在于,所述的变速控制系统还包括:第一电流传感器、第二电流传感器、第一电压传感器、第二电压传感器、第一扭矩传感器和第二扭矩传感器,其中, 第一扭矩传感器与行车电脑相连并输出第一驱动电机扭矩信息; 第二扭矩传感器与行车电脑相连并输出第二驱动电机扭矩信息; 第一电流传感器、第一电压传感器与第一驱动电机控制单元相连并分别输出第一驱动电机的输入电流和输入电压信息; 第二电流传感器、第二电压传感器与第二驱动电机控制单元相连并分别输出第二驱动电机的输入电流和输入电压信息。 8.一种基于权利要求6或7所述变速控制系统的电动车辆变速控制方法,其特征在于,包括以下步骤: S1,首先判断输入信号是否为制动信号,若为制动信号,则第一驱动电机和第二驱动电机停转,电动车辆停车,否则判断为变速信号;

相关主题
相关文档
最新文档