能提供一个CH582可用的硬件IIC读写24C256的例程吗?
    GPIOB_ModeCfg(GPIO_Pin_13 | GPIO_Pin_12, GPIO_ModeIN_PU);

#if(I2C_MODE == HOST_MODE)
    PRINT("IIC Host mode\r\n");
    I2C_Init(I2C_Mode_I2C, 400000, I2C_DutyCycle_16_9, I2C_Ack_Enable, I2C_AckAddr_7bit, TxAdderss);
    while(I2C_GetFlagStatus(I2C_FLAG_BUSY) != RESET);

    I2C_GenerateSTART(ENABLE);

    while(!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
    I2C_Send7bitAddress(RxAdderss, I2C_Direction_Transmitter);

    while(!I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

    while(i < 6)
    {
        if(I2C_GetFlagStatus(I2C_FLAG_TXE) != RESET)
        {
            I2C_SendData(TxData[i]);
            i++;
        }
    }

    while(!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED));
    I2C_GenerateSTOP(ENABLE);

#elif(I2C_MODE == SLAVE_MODE)
    PRINT("IIC Slave mode\r\n");
    I2C_Init(I2C_Mode_I2C, 400000, I2C_DutyCycle_16_9, I2C_Ack_Enable, I2C_AckAddr_7bit, RxAdderss);

    while(!I2C_CheckEvent(I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED));

    while(i < 6)
    {
        if(I2C_GetFlagStatus(I2C_FLAG_RXNE) != RESET)
        {
            RxData[i] = I2C_ReceiveData();
            i++;
        }
    }

    PRINT("RxData:\r\n");
    for(i = 0; i < 6; i++)
    {
        PRINT("%02x\r\n", RxData[i]);
    }

#endif

例程里面提供的IIC例程如上所示,虽然做了很多改动,但是还是无法读写24C256.不知道错在哪里了,帮忙传一个可用的硬件IIC例程。谢谢

公司的研发部无法上网,所以不能上传实际写的代码。


我们这里提供的是一个例程,可以作为参考用,将主机的PB12、PB13分别上拉电阻到3.3v,阻值在2-5K之间,可以再进行尝试看看。如果没有实现你的功能可以软件模拟IIC。


只有登录才能回复,可以选择微信账号登录