欢迎来到天天文库
浏览记录
ID:41718008
大小:70.13 KB
页数:4页
时间:2019-08-30
《基于ARMLinux下IIC设备驱动程序设计(ok)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于ARMLinux下IIC设备驱动程序设计与实现朱华生(南昌工程学院计算机系,江西南吕330029)摘要:为了设计出稳定可靠的驱动程序,首先介绍了嵌入式Linux系统驱动程序的框架结构和11C总线数据传输的时序,然后分析了基于ARMLinux系统IIC设备驱动程序设计的技术难点及解决方法,最后介绍了基于X1227芯片RTC设备驱动程序的实现步骤。关键词:ARM;Linux;IIC总线;驱动程序中图分类号:TP311文献标识码:ADesignandImplementationofIICDriversBasedonARMLinuxZHUHua-shcng(Com
2、puterScienceandtechnologydepartmentofNIT,Nanchang,330099)Abstract:Todesigncredibledrivers,firstintroduccstheframeofdriverinembeddedlinuxandtimesequenceofdatatransmissiononIICbus,thcnanalysesdifficultiesofdesigningdriverbasedonARMLlinux,finallyintroducesapproachofdesigningRTCdriversb
3、asedonXI227・Keywords:ARM;linux;IICbus;drivers0前言IIC总线是Philips公司首先推出的新一代串行扩展总线,在嵌入式系统中得到了广泛的应用。嵌入式Linux操作系统因具有免费、开放源代、强大的网络功能等特点,在嵌入式产品中正在得到广泛的应用。本文主要研究ARMLinux系统1IC设备驱动程序的设计方法。1嵌入式Linux驱动程序的框架在嵌入式Linux系统中设备驱动程序是内核的一部分,完成对设备初始化、读写操作和控制等功能。驱动程序隐藏了硬件设备的具体细节,对不同的设备提供一致的接口,这些接口通过file_ope
4、rations结构⑴來定义,设计驱动程序的大部分工作就是根据硬件结构來“填写”结构体中定义的函数。主要的函数包括open()sread()swrite()sioctl()和release。等等。Open()函数的主要功能是提供给驱动程序初始化能力,为以示的设备操作做好准备。read()函数的主要功能是读设备数据。write()^i数的主要功能是写设备数据。ioctl()函数的主要功能是执行读、写Z外的操作,如:配置设备。releaseO®数功能与open()函数相反。除以上几个函数以外,还冇2个非常重要的函数module_init()和module_exit(
5、),驱动程序是从module_init()函数开始执行,它是在加载模块时执行的。它的功能是:将初始化两数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,Z后驱动便停止等待被应用软件调用。modulc_cxit()a数的功能刚好和module_init()相反。2ARM9嵌入式系统IIC总线的工作时序在ARM9嵌入式系统IIC总线中,一•般微处理器(如:S3C2410)是总线上的主机,其它是从机。IIC总线上可同时接多个从机,每个从机都冇一个唯一的地址。主机负责IIC总线的初始化、数据传输、产生时钟信号等工作。IIC
6、总线传输的时序⑵是:从START(开始位)开始传输,STOP(结束位)结朿传输。传送到SDA上的每一个字节必须是8位,每次传送的字节数不限,每一个字节后面必须跟一个应答位。如果在传输Stop过程中,从设备不能一次接受完一个字节,此时它就会使时钟置为低电平,迫使主设备等待;当从设备能接收下一个数据字节后,将释放SCL线,继续后面的数据传输。数据传输的时序如图1所示。sdaA_^OOC::::)ODC2^_00(;::OOOl_ClockLineHeldLovbyreceiverand/ortransaitterSCL瓜・・・.・•爪—ACKACKConditio
7、nCondition图1lie总线数据传输时序图2」IIC总线写操作时序IIC总线写操作主要有二种方式:字节写和页而写。字节写是指:每次在指定位置写入一个字节数据。它的时序如图2(a)所示,首先主机向从机发送启动信号和“从机地址+写”,然后等待应答信号;当应答信号来到之后再发一个器件内部地址,然后再次等待应答信号;当应答信号來到之后立即发送待写数据,肖应答信号來到之后发送停止信号。页面写和字节写操作很类似,只是主机在进行完成第一伦资料传送Z后不发送停止信号,而继续发送待写的数据,它的时序如图2(b)所示。⑹图2IIC总线写数据时序图2.2IIC总线读操作时序I
8、IC总线读操作主要有2种方式:指定位置
此文档下载收益归作者所有