新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于嵌入式Linux的ARM/DSP多机I2C通信

基于嵌入式Linux的ARM/DSP多机I2C通信

作者:时间:2012-05-08来源:网络收藏

内核源代码中drivers目录下的i2c_dev.c文件,是通用的总线设备驱动文件,为应用程序提供open()、write()、read()、ioctl()和close()等操作接口来访问设备。应用层可以借用这些接口访问挂接在适配器上的总线设备的存储空间或寄存器,并控制总线设备的工作方式。
2.1.3 S3C2440的I2C总线驱动及设备驱动
S3C2440内部的I2C总线控制器通过4个寄存器实现对的控制,分别是I2C控制寄存器(I2CCON)、I2C状态寄存器(I2CSTAT)、I2C收发数据移位寄存器(I2CDS)、I2C地址寄存器(I2CADD)。
按照中I2C总线框架要求,S3C2440的I2C总线驱动设计主要完成以下工作:设计i2c_adapter_s3c_init()模板加载函数和对应于i2c_adapter_s3c_exit()模板卸载函数;设计i2c_adapter_s3c_xfer()模板S3C2440适配器方法函数。
i2c_adapter_s3c_init()通过注册s3c2440_i2c_driver结构体实现总线驱动的平台注册,s3c2440_i2c_driver结构体包含了具体适配器的probe()函数、remove()函数、resume()函数指针等信息。代码如下:
g.jpg
完成了S3C2440的I2C总线适配器驱动注册后,就可以将具体设备驱动注册到该总线平台上,实现I2C总线数据。i2c_dev.c文件是内核源码提供的通用I2C总线设备驱动文件,针对每个I2C总线适配器生成一个主设备号为89的设备文件,设备驱动模块加载流程如图6所示。完成加载后,驱动提供i2cdev_read()、i2cdev_write()、i2cdev_ioctl()函数来对应用户空间的read()、write()、ioctl()函数,供用户使用。用户通过这些接口函数实现I2C总线数据的读写功能。

本文引用地址:http://www.eepw.com.cn/article/149119.htm

h.jpg


2.2 数据接收中断程序设计
通过配置F28015的I2C模块寄存器,设置I2C模块为从工作方式,同时利用I2C总线中断响应程序实现对总线上数据的接收和发送,进而完成数据通信。F28015产生了I2C总线中断后,就执行中断服务程序,图7为I2C总线中断服务程序流程。

i.jpg

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程




评论


相关推荐

技术专区

关闭