请教大家一个问题,请大家帮帮忙。
我在使用的是WINCE5.0,硬件上只有一个I2C接口,挂接了4个设备(I2C支持很多个从设备)。
其中包括一个电源管理芯片,一个IO扩展,一个A/D转换,还有一个EEPROM。
我现在要分别编写这几个设备的驱动,应用层序不会直接去使用I2C来操作这些设备的。因此需要独立开来。
现在遇到一个问题就是,怎么写这个驱动比较好,I2C接口只有一个,I2C控制器也只有一个,同一时刻只能有一个设备使用。怎么写才好呢。
有两种方案:
1。 每个设备驱动自己去操作I2C的寄存器,然后自己在几个驱动中做互斥。
2。 编写I2C驱动,另外几个设备驱动再使用这个I2C驱动去访问外围设备。
大家给个提示,谢谢,刚开始写驱动,有很多不懂的,希望有经验的朋友提供一些帮助
方法2
通常的总线驱动如PCI,USB都是这么做的
那这个驱动被打开多次!怎么去管理数据收发呢 !
有没有好的建议
谢谢
可以参考串口驱动,同一个驱动加载多次,访问不同的UART,而你要做的是在驱动中访问同一个IIC,做些互斥。串口驱动是个很好的驱动,可以学到不少东西。
基本都是用方法2。
i2c 总线 本身就支持一个总线 挂多个从设备。
楼主只需要 实现一个带地址为参数的的I2C总线驱动,然后上层调用时,根据每个I2C设备的地址不一样,根据地址作为参数,进行访问,就可以保证没问题。
还有一个方法就是写一个IIC的PDD驱动,然后再针对不同的IIC外设写MDD驱动,实现时需要注意互斥。