问答

汇集网友智慧,解决技术难题

21ic问答首页 - 国民技术系列的MCU硬件I2C例程逻辑

单片机 国产芯片

国民技术系列的MCU硬件I2C例程逻辑

ccccccczq2022-08-11
不是很理解这里的逻辑,在还有三个数的时候就DISABLE了ACK的应答,之后接收数据也不影响,硬件部分的逻辑是怎么算的呢  if (len == 3)
            {
                I2CTimeout = I2CT_LONG_TIMEOUT;
                while (!I2C_GetFlag(I2C1, I2C_FLAG_BYTEF))
                {
                    if ((I2CTimeout--) == 0)
                    {
                        CommTimeOut_CallBack(MASTER_BYTEF);
                    }
                }
                I2C_ConfigAck(I2C1, DISABLE);
                *recvBufferPtr++ = I2C_RecvData(I2C1);
                len--;

                I2CTimeout = I2CT_LONG_TIMEOUT;
                while (!I2C_GetFlag(I2C1, I2C_FLAG_BYTEF))
                {
                    if ((I2CTimeout--) == 0)
                    {
                        CommTimeOut_CallBack(MASTER_BYTEF);
                    }
                }

                if (Comm_Flag == C_READY)
                {
                    Comm_Flag = C_STOP_BIT;
                    I2C_GenerateStop(I2C1, ENABLE);
                }

                *recvBufferPtr++ = I2C_RecvData(I2C1);
                len--;
                *recvBufferPtr++ = I2C_RecvData(I2C1);
                len--;

                break;
            }

回答 +关注 5
536人浏览 0人回答问题 分享 举报
0 个回答

您需要登录后才可以回复 登录 | 注册