怎么编写 同一个接口上 的 多个设备驱动?

wwbinghai   2010-3-16 23:57 楼主
请教大家一个问题,请大家帮帮忙。

    我在使用的是WINCE5.0,硬件上只有一个I2C接口,挂接了4个设备(I2C支持很多个从设备)。
    其中包括一个电源管理芯片,一个IO扩展,一个A/D转换,还有一个EEPROM。

    我现在要分别编写这几个设备的驱动,应用层序不会直接去使用I2C来操作这些设备的。因此需要独立开来。


    现在遇到一个问题就是,怎么写这个驱动比较好,I2C接口只有一个,I2C控制器也只有一个,同一时刻只能有一个设备使用。怎么写才好呢。

    有两种方案:
    1。 每个设备驱动自己去操作I2C的寄存器,然后自己在几个驱动中做互斥。
    2。 编写I2C驱动,另外几个设备驱动再使用这个I2C驱动去访问外围设备。

大家给个提示,谢谢,刚开始写驱动,有很多不懂的,希望有经验的朋友提供一些帮助

回复评论 (7)

方法2
通常的总线驱动如PCI,USB都是这么做的
点赞  2010-3-17 03:26
那这个驱动被打开多次!怎么去管理数据收发呢 !
    有没有好的建议
谢谢
点赞  2010-3-17 08:25
2 合适一些。符合设计规范。
点赞  2010-3-17 08:32
可以参考串口驱动,同一个驱动加载多次,访问不同的UART,而你要做的是在驱动中访问同一个IIC,做些互斥。串口驱动是个很好的驱动,可以学到不少东西。
点赞  2010-3-17 08:33
基本都是用方法2。

i2c 总线 本身就支持一个总线 挂多个从设备。

楼主只需要 实现一个带地址为参数的的I2C总线驱动,然后上层调用时,根据每个I2C设备的地址不一样,根据地址作为参数,进行访问,就可以保证没问题。
点赞  2010-3-17 08:59
还有一个方法就是写一个IIC的PDD驱动,然后再针对不同的IIC外设写MDD驱动,实现时需要注意互斥。
点赞  2010-3-17 14:20
谢谢大家提供的意见,
点赞  2010-3-18 10:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复