微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > I2C总线驱动程序

I2C总线驱动程序

时间:11-21 来源:互联网 点击:

i2c_bus_s3c2440_exit(void)

{

i2c_del_adapter(&s3c2440_i2c_adapter);

free_irq(IRQ_IIC, NULL);

iounmap(s3c2440_i2c_regs);

}

module_init(i2c_bus_s3c2440_init);

module_exit(i2c_bus_s3c2440_exit);

MODULE_LICENSE("GPL");

==============================================================

解析:

编写"总线(适配器adapter)"驱动

Device Drivers

I2C support

I2C Hardware Bus support

< > S3C2410 I2C Driver

nfs 30000000 192.168.1.123:/work/nfs_root/uImage_noi2cbus; bootm 30000000

应用程序发送消息出去时,会调用适配器adapter里面的算法函数algo里面的master_xfer函数,先把消息记录下来之后调用start函数,start函数里发送start启动信号并且把设备地址发送出去,然后休眠。发送完之后产生一个中断,在中断函数里面读出状态,如果没有ack的话认为发生错误发出停止信号唤醒应用程序;如果有ack信号而且是最后一个消息,最后一个数据则发出停止信号,否则进入下一个状态读/写,如果是写判断是否是最后一个数据,若还有数据要发送把数据发送出去,若是最后一个数据但是不是最后一个消息的话开始处理下一个消息,发出start信号和设备地址,若是最后一个消息的最后一个数据则发出停止信号;如果是读判断数据是否读完,如果没有读完但是接收到的不是最后一个数据则发送ack信号,若接收到最后一个数据否则无ack,但若数据已经读完则处理下一个消息发送start信号。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top