wince6下6410的I2C驱动问题

时间:2021-09-27 17:51:29

收发缓冲区 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指针为什么 会出错,可能是我的水平问题,看不出在哪里出错,有知道的请赐教了,多谢多谢!