wince6下6410的I2C驱动问题

收发缓冲区 g_pcIIC_BUFFER有BUG,会造成内存出错。

解决办法是:

1、接收:

先使用数组保存数据,完成后再复制到接收缓冲区

        case Master_receive:
            if (g_uIIC_PT>0)
            {
                bDone = FALSE;
              #ifdef DEBUG_BUG //20100714 xiehb
    g_pcReBuffer[g_uIIC_PT-1] = g_pIICReg->IICDS;
       RETAILMSG(DEBUFMSG_ENABLE,(TEXT("[I2C_IST] Receive Byte: 0x%02X/n"),g_pcReBuffer[g_uIIC_PT-1]));    
     #else    
       g_pcIIC_BUFFER[g_uIIC_PT-1] = g_pIICReg->IICDS;
     #endif
            }

然后:

 if(g_uIIC_PT != 0)
 {
  memcpy(g_pcIIC_BUFFER, g_pcReBuffer, g_uIIC_PT); //20100625 xiehb
  DEBUGMSG(ZONE_INFO,(TEXT("[IIC READ]g_uIIC_PT = %d/r/n"),g_uIIC_PT));
 }

 

2、发送:

将要发送的数据保存到发送缓冲数组,再在IIC_IST里面发送

g_pIICReg->IICDS = g_pcSeBuf[g_uIIC_PT];

发送模式完成避开了g_pcIIC_BUFFER指针

 

这样修改之后,数据读写就完全正确了,不会再出现内存错误了,但是还有一点我还没有搞明白,g_pcIIC_BUFFER指针为什么 会出错,可能是我的水平问题,看不出在哪里出错,有知道的请赐教了,多谢多谢!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值