Exemple #1
0
/*iic recv data*/
uint8_t iic_master_recv_one_char(uint8_t addr)
{
	uint8_t data;
	int i;
	S3C24X0_I2C * const i2c = S3C24X0_GetBase_I2C();
	
	/*dummy write*/
	//send iic slave addr
	iic_xfer_byte(0xa0);
	i2c->IICSTAT=0xF0;
	iic_check_sts();
	//i2c->IICCON &= ~(1<<4);
	iic_xfer_byte(addr);
	
	//i2c->IICCON &= ~(1<<4); 
	for(i=0;i<10;i++)
		;
	//i2c->IICCON = 0xaf; 
	i2c->IICCON &= ~(1<<4);
	//iic_check_ack();
	iic_check_sts();
	/*clear intr flag,write 1 to clear*/
	
	
	/*begin read eepom data*/
	iic_xfer_byte(0xa0);

	i2c->IICSTAT=0xB0;
	//i2c->IICCON = 0xaf; 
	i2c->IICCON &= ~(1<<4);

	iic_check_sts();
	//fist addr is output
	
	data = iic_recv_byte();
	/*clear intr flag,write 1 to clear*/
	i2c->IICCON = 0x2f; 
	iic_check_sts();

	
	/*clear intr flag,write 1 to clear*/
	
	//data is output
	data = iic_recv_byte();
	/*stop*/
	iic_master_recv_stop();
	return data;
}
Exemple #2
0
static u8_t iic_read_byte(u8_t slave, u8_t reg,  u8_t * val)
{
	iic_start();

	if (!iic_send_byte(slave << 0x1))
		return 0;

	if (!iic_send_byte(reg))
		return 0;

	iic_stop();
	iic_start();

	if (!iic_send_byte((slave << 0x1) | 0x1))
		return 0;

	*val = iic_recv_byte();

	iic_send_ack();

	iic_stop();
	return 1;
}