示例#1
0
uint8_t i2cFlashRead(uint16_t addr, int numBytes, char *dataPtr){
	int ret;
	int index;
	index = 0; 
	numBytes--;
	i2c_start(intI2c);
	ret = i2c_write(intI2c, i2cFlashAddr | I2C_WRITE);
	//if (ret) return 1;
	ret = i2c_write(intI2c, ((addr) >> 8));// upper byte first
	//if (ret) return 1;
	ret = i2c_write(intI2c, ((addr) & 0xFF));
	//if (ret) return 1;
	i2c_repeated_start(intI2c);
	i2c_write(intI2c, i2cFlashAddr | I2C_READ); // Send the read. 
	i2c_set_rx(intI2c);
	dataPtr[0] = i2c_read(intI2c); // Dummy read 
	i2c_wait(intI2c);
	while (numBytes--){
		
		dataPtr[index++] = i2c_read(intI2c);
		i2c_give_ack(intI2c);
		i2c_wait(intI2c);
	}
	dataPtr[index++] = i2c_read(intI2c);
	i2c_give_nack(intI2c);
	i2c_stop(intI2c);
	return index;
}
示例#2
0
uint8_t mma8451_read(uint8_t addr)
{
    delay(1);
    i2c_start(I2C0_B);
    i2c_write(I2C0_B, MMA8451_I2C_ADDRESS | I2C_WRITE);
    i2c_write(I2C0_B, addr);
    i2c_repeated_start(I2C0_B);
    i2c_write(I2C0_B, MMA8451_I2C_ADDRESS | I2C_READ);
    i2c_set_rx(I2C0_B);
    i2c_give_nack(I2C0_B);
    i2c_read(I2C0_B);
    i2c_wait(I2C0_B);
    i2c_stop(I2C0_B);
    return i2c_read(I2C0_B);
}
示例#3
0
uint8_t mag3110_read(uint8_t addr)
{
	  i2c_delay();
    i2c_start(I2C0);
    i2c_write(I2C0, MAG3110_I2C_ADDR | I2C_WRITE);
    i2c_write(I2C0, addr);
    i2c_repeated_start(I2C0);
    i2c_write(I2C0, MAG3110_I2C_ADDR | I2C_READ);
    i2c_set_rx(I2C0);
    i2c_give_nack(I2C0);
    i2c_read(I2C0);
    i2c_wait(I2C0);
    i2c_stop(I2C0);
    return i2c_read(I2C0);
}
示例#4
0
uint8_t mma8451_read(uint8_t addr)
{
    short n;
    for(n=0; n<100; n++)
        asm("nop");

    i2c_start(I2C0_B);
    i2c_write(I2C0_B, MMA8451_I2C_ADDRESS | I2C_WRITE);
    i2c_write(I2C0_B, addr);
    i2c_repeated_start(I2C0_B);
    i2c_write(I2C0_B, MMA8451_I2C_ADDRESS | I2C_READ);
    i2c_set_rx(I2C0_B);
    i2c_give_nack(I2C0_B);
    i2c_read(I2C0_B);
    i2c_wait(I2C0_B);
    i2c_stop(I2C0_B);
    return i2c_read(I2C0_B);
}
示例#5
0
inline void i2c_stop(I2C_MemMapPtr p)
{
    i2c_set_slave(p);
    i2c_set_rx(p);
}
示例#6
0
文件: i2c.c 项目: kamejoko80/BamBooOS
void i2c_stop(I2C_Type *p)
{
    i2c_set_slave(p);
    i2c_set_rx(p);
}