int main(void)
{
	
	//! [init]
	system_clock_config(CLOCK_RESOURCE_XO_26_MHZ, CLOCK_FREQ_26_MHZ);
	
	configure_i2c_slave();

	//! [packet]
	struct i2c_slave_packet packet = {
		.data_length = DATA_LENGTH,
		.data        = write_buffer,
	};
	//! [packet]

	//! [init]
	//! [while]
	while (true) {
		packet.data = read_buffer;
		i2c_slave_read_packet_wait(&i2c_slave_instance, &packet);
		packet.data = write_buffer;
		i2c_slave_write_packet_wait(&i2c_slave_instance, &packet);
	}
	//! [while]
}
示例#2
0
int main(void)
{
	system_init();

	//! [run_initialize_i2c]
	//! [config]
	configure_i2c_slave();
	//! [config]

	//! [dir]
	enum i2c_slave_direction dir;
	//! [dir]
	//! [pack]
	struct i2c_slave_packet packet = {
		.data_length = DATA_LENGTH,
		.data        = buffer,
	};
	//! [pack]
	//! [run_initialize_i2c]

	//! [while]
	while (true) {
		/* Wait for direction from master */
		//! [get_dir]
		dir = i2c_slave_get_direction_wait(&i2c_slave_instance);
		//! [get_dir]

		/* Transfer packet in direction requested by master */
		//! [transfer]
		if (dir == I2C_SLAVE_DIRECTION_READ) {
			i2c_slave_read_packet_wait(&i2c_slave_instance, &packet);
		} else if (dir == I2C_SLAVE_DIRECTION_WRITE) {
			i2c_slave_write_packet_wait(&i2c_slave_instance, &packet);
		}
		//! [transfer]
	}
	//! [while]
}