How to setup stop condition on VEML7700 through I2C library? I am not getting the ACK from reading

111 Views Asked by At
int I2C_Master_ReadReg(unsigned char dev_addr, unsigned char reg_addr, unsigned char count, unsigned char *pData, void (* Sub)(void)) {
    uint8_t cnt;   
    start();    
    sda(dev_addr);
    
    if (!(dev_addr == 0x10)) {
        cnt = 0;
    }
    
    if (count > 0x05) {
        cnt = 0;
    }
   
    if (clk() == 1) {
        I2C_Ack_Error(1);
        return -1;
    }   
    sda(reg_addr + 0);
    if (clk() == 1) {
        I2C_Ack_Error(2);
        return -2;
    }       
    start();
    sda(dev_addr + 1);
    if (clk() == 1) {
        I2C_Ack_Error(3);
        return -3;
    }  
    for (cnt = 0; cnt < count; ++cnt) {  
        *(pData + cnt) = read(); 
        //printf("D: %x\n\r", read());
        if (clk() == 0) {
            I2C_Ack_Error(4);
            return -4;
        }   
        stop();        
    }
    return 0;
}
0

There are 0 best solutions below