5347|10

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用ZLG7290芯片设计一款IIC键盘驱动,通过S3C2440的IIC接7290,内核是2.6.13,不知改如何下手,希望高手指点! [复制链接]

小弟我现在要用ZLG7290芯片设计一款IIC键盘驱动,通过S3C2440的IIC接7290,内核是2.6.13,那位大哥有代码共享,有类似代码也可以,
    刚开始我在linux2.6.13内核的目kernel/driver/i2c/busses目录下,找到了S3C2410的I2C驱动源程序:i2c-s3c2410.c,不知道你所说的针对S3C2410的I2C驱动程序是不是这个,还是i2c文件夹下的所有源程序。我仔细研究了i2c-s3c2410.c程序,发现这个程序包了很多层,因为我之前一直学习的是linux2.4.18,2.6的驱动结构比2.4的变化很大,目前感觉linux自带的I2C驱动太庞大,不知从何下手修改,考虑到I2C的原理还是比较简单的,所以想自己重新写一个I2C驱动程序,但是由于没有经验,所以也不知到如何下手,我要写的驱动程序要达到的目的是:通过S3C2410的I2C控制器和I2C芯片ZLG7290通讯,当ZLG7290所扩展的键盘有键按下时,向CPU发出中断,然后利用I2C通讯,CPU去ZLG7290的寄存器01H中读取键值。

    在这里我想问的是那位大侠类似功能基于linux2.6内核的I2C驱动程序(当然源程序最好了),如果有的话能否提供给我,让我做些修改,就可以实现我要的功能。下面我从网上看到的一个别人写的S3C2410的I2C驱动程序(这个程序的网址:http://www.cublog.cn/u/3063/showart_217716.html),我是否可以在这个程序的基础上,做些修改就可以实现我要的功能(不使用Linux自带的I2C驱动),各位大侠在这里能给我指指方向,或者直接给个框架让我修改修改,自己编程能力实在太差,只会修改了,真是郁闷。
我的邮箱:panwsecjtu@yahoo.com.cn
QQ:157456260
希望能得到高手的指点!

最新回复

呵呵,跟楼主一样在弄这个芯片,用在STM32上面,裸机的,比楼主的简单多了。 不过还是难倒我了,I2C不稳定啊  详情 回复 发表于 2009-6-26 16:02
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
ing
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你要实现的功能比那个程序简单多了

struct IIC_dev{
        wait_queue_head_t rq;   // 读取等待队列
        uint8_t *buffer;
        uint32_t size;
        uint32_t index;
        struct semaphore sem;
        struct cdev cdev;
};

可以简化为
struct IIC_dev{
        wait_queue_head_t rq;   // 读取等待队列
        struct semaphore sem;
        struct cdev cdev;
};
因为你不需要在缓冲区中保存键值
sem实现对IIC设备的互斥访问

rq实现IIC_read和中断任务的同步操作
应用层任务循环调用IIC_read,此时无按键信息,应用层任务挂起等待
当有按键按下时,7290产生IIC中断,中断服务程序up等待队列,唤醒IIC_read
其读取键值后返回,处理完相关按键信息后,应用层任务再次调用IIC_read,等待下一次按键的到来

将那个代码简化下就完全可以实现你的功能了,不要总是指望大家给你现成的代码
任意一个简单的字符设备驱动程序,只要含有一个中断任务和一个read方法就可以实现了
当你学会了借鉴模仿时,一切都将变得很简单,这些都是应该培养的学习能力
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

4
 
我在看wince怎么实现。哈哈。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
up
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 
up
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
看看I2C的时序和器件手册
不要看太深的代码方式
研究CPU的器件手册关于I2C控制器的部分 按照时序可以实现自己的功能
可以采用中断服务程序的方式通过信号量来控制read任务

如果嫌自己研究器件手册太慢的话可以在针对该CPU在网上找一些源代码改改
vxWorks之类的也可以呀
道理都是一样的

如果任务不是很着急的话  建议按照器件手册自己写一个
这样更有助于学习CPU的工作原理 而且可以提高自信  对以后的学习和发展都有好处
 
 
 

回复

63

帖子

0

TA的资源

禁止发言

8
 
楼上说的非常在理,学习了。
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

9
 
这个东西还是认真看DATASHEET为好。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 
ZLG7290  从 51 跑到 arm 无语了
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

11
 
呵呵,跟楼主一样在弄这个芯片,用在STM32上面,裸机的,比楼主的简单多了。
不过还是难倒我了,I2C不稳定啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表