static hal_result_t s_hal_chip_xx_eeprom_writepage(uint8_t* pBuffer, uint16_t WriteAddr, uint16_t* NumByteToWrite)
{ 
    hal_result_t res;
    hal_chip_xx_eeprom_internal_item_t *intitem = s_hal_chip_xx_eeprom_theinternals.items[0];

    hal_i2c_regaddr_t regaddr;
    regaddr.numofbytes = 2;
    regaddr.bytes.two = (uint16_t) WriteAddr;
    res = hal_i2c_write(intitem->config.chipcfg.i2cid, intitem->hwaddress, regaddr, pBuffer, *NumByteToWrite);
    *NumByteToWrite = 0; 
    
    return(res);
}
Beispiel #2
0
result_t i2c_write(i2c_device_t* dev, void* buffer, uint16_t length)
{
    uint16_t busId = dev->busId;
    uint16_t ret;
    
    if((ret = hal_i2c_set_slave_addr(busId, dev->devAddress)) != RV_OK)
        return ret;

    if((ret = hal_i2c_setup_interface(busId, dev->baudrate)) != RV_OK)
        return ret;

    if((ret = hal_i2c_write(busId, buffer, length)) != RV_OK)
        return ret;

    if((ret = hal_i2c_finalize(busId)) != RV_OK)
        return ret;

    return RV_OK;
}
Beispiel #3
0
/*common write */
int i2c_common_write(struct i2c_dev_info_s *dev, void *data, int offset, int size)
{
	int fd = 0, write_len, ret;
	halI2CLock();
	fd = hal_i2c_init(i2c_dev->i2c_controler);
	if(fd < 0)
	{
		ret = ERROR;
		goto out;
	}
	i2c_channel_switch(dev, fd);

	ret = hal_i2c_write(fd, i2c_dev->dev_addr[0], offset, buf, size);
	if(ret < 0)
		goto out;
out:
	if(fd > 0)
		i2c_close(fd);
	halI2CUnLock();
	return ret;
}