阅读:2466回复:5
IIC接口的矩阵键盘驱动
首先,跨平台到wince上来了,对于驱动的开发停留在只能操作寄存器的基础上了,可谓是零起点。
工作重点:1。了解wince的驱动体系结构,确定键盘为本地驱动。Wince50的键盘本地驱动主要分几个层:PDD和MDD 主要的改动集中在PDD这一层上。也就是说,注册表,platform.bib文件全都不用改,只需要改BSP下的KBDCOMMON下的:kbd.cpp和s3c2440kbd.cpp MATRIX_0409下的:s3c2440.cpp(在这个文件里改键盘映射) 回到kdb.cpp里,这个函数:Matrix_Entry是整个键盘驱动的主入口,一行行分析不难发现,硬件初始化加在这里面。 2。wince的驱动处理流程搞清楚了后,进入到中断的响应Arminit.c和cfw.c这两个文件里,根据自已CPU的中断引脚更改, 把对应的中断处理case分支,返回SYSINTR_KEYBOARD,或者处理SYSINTR_KEYBOARD对应case分支内容。 我做的工作也就这么多。感想:1.别急着调,先做几个测试点,确保硬件是通的。 2.多花时间在wince的驱动的体系结构和流程上,PB的help是个不错的工具。 其它的就是相通的了,硬件初始化看仔细,不要肓目相信datasheet,反过来多试试。 自已做的第一个wince的驱动,可能对于高手来说相当简单,就当是抛砖引玉了。 多多交流:liyong983@163.com 最后还要感谢几乎和我同时进行wince键盘驱动开发工作的wikee和sunignol,虽未曾谋面,但你们的贴子对我的帮助很大。 |
|
沙发#
发布于:2007-08-14 20:59
|
|
板凳#
发布于:2007-08-15 09:14
恭喜!
其实学习WINCE驱动,最重要的就是熟悉它的开发流程。 改驱动和自己从头写驱动还是有区别的,很多很具体很细的问题还是需要自己写大量的代码才能发现。所以,做WINCE驱动的同志们,千万不要仅仅满足于在别人的驱动下修改,需要花时间深入去读懂代码,自己多写代码才能真正提高编程水平。 |
|
地板#
发布于:2007-08-15 22:00
坛子里面有个兄弟,就是做的IIC键盘驱动,不过他好象是接的PHILP的一个芯片,然后接PS2吧,不是太清楚了,你自己搜索一下
|
|
地下室#
发布于:2007-08-17 15:44
感谢buaadallas , dillonhua 的提醒
|
|
5楼#
发布于:2007-08-24 15:47
现在出现一个这样的问题了:和音频的驱动集成在一起后,一按键,就会不断的有音频设备响应到中断。用示波器量,这个中断并不是我的键盘IC产生的,而且我的2440中断脚设的为上下沿中断,按理说,按键弹起时也会发生一个中断通知系统的啊。
小弟实在是不明白。 |
|