又被IIC驱动折腾了一回

      手持机有个外设是IIC接口的,开始用的是自带的IIC 驱动——就是用IIC控制器的驱动。这个驱动很神奇,能外设数据完全正常,但是发送一些命令,外设也100% 能收到,但是发送其中一些命令,偶尔却不行,开始一直怀疑是外设的问题——我发送命令能响应就是最好的证据。后来一直和外设供应商反映,说他的模块有问题,后来他们也很积极,除了销售来打太极,说了一些废话,他们技术支持也比较给力,回去对比发送数据的波形,发现我们的机器的波形和他们正常的demo board不太一样。我们的一些IIC 等待应答只有一个尖峰脉冲,demo board 是一个比较宽的高电平。没办法,后来计算了一下IIC的时钟速度,自带的IIC 速度是5K~10K,表面上是速度很低了,可是demo board 更加不可思议,才400多HZ,后来没办法,自带的IIC最低也不能低于5KHZ了,再低就要牺牲CPU的主频了。

    最后,决定重新写IIC驱动——用GPIO模拟的方式,折腾了好几天,没效果,GPIO能够随意控制,但是就是不出数,先是读出0,后来发现有个位操作逻辑不对,改正后读出一个固定的数据,可是永久不变,又整了半天,找一些人一起看程序,实在找不出什么问题,后来我抱着死马当活马医的态度了。我把IIC 上拉控制器里面设置禁止上拉,我晕,居然正常了!汗,真不懂咋回事,以前是要上拉,我特意设置控制器上拉的...............

   不知道啥原因,虽然外设已经有IIC上拉,我设置上拉应该也没事吧,汗。不管怎么样,最后还是解决了这个问题。

   难题解决了,再去搞一些量产前的善后工作吧。

你可能感兴趣的:(WinCE,驱动开发)