//! [initialize_i2c] static void configure_i2c_slave(void) { /* Initialize config structure and software module. */ //! [init_conf] struct i2c_slave_config config_i2c_slave; i2c_slave_get_config_defaults(&config_i2c_slave); //! [init_conf] /* Change address and address_mode. */ //! [conf_changes] config_i2c_slave.address = SLAVE_ADDRESS; config_i2c_slave.pin_number_pad0 = PIN_LP_GPIO_14; config_i2c_slave.pin_number_pad1 = PIN_LP_GPIO_15; config_i2c_slave.pinmux_sel_pad0 = MUX_LP_GPIO_14_MUX4_I2C1_SDA; config_i2c_slave.pinmux_sel_pad1 = MUX_LP_GPIO_15_MUX4_I2C1_SCL; //! [conf_changes] /* Initialize and enable device with config, and enable i2c. */ //! [init_module] while(i2c_slave_init(&i2c_slave_instance, I2C1, &config_i2c_slave) \ != STATUS_OK); //! [init_module] //! [enable_module] i2c_enable(i2c_slave_instance.hw); //! [enable_module] //! [enable_interurpt] i2c_slave_rx_interrupt(i2c_slave_instance.hw, true); i2c_slave_tx_interrupt(i2c_slave_instance.hw, true); //! [enable_interurpt] }
// Configure SERCOM channel 4 as I2C slave for VESC communication void configure_i2c_slave(void) { /* Create and initialize config_i2c_slave structure */ struct i2c_slave_config config_i2c_slave; i2c_slave_get_config_defaults(&config_i2c_slave); /* Change address and address_mode */ config_i2c_slave.address = SLAVE_ADDRESS; config_i2c_slave.address_mode = I2C_SLAVE_ADDRESS_MODE_MASK; config_i2c_slave.buffer_timeout = SLAVE_TIMEOUT; config_i2c_slave.pinmux_pad0 = PINMUX_PB08D_SERCOM4_PAD0; config_i2c_slave.pinmux_pad1 = PINMUX_PB09D_SERCOM4_PAD1; /* Initialize and enable device with config_i2c_slave */ i2c_slave_init(&i2c_slave_instance, SERCOM4, &config_i2c_slave); i2c_slave_enable(&i2c_slave_instance); }
//! [initialize_i2c] void configure_i2c_slave(void) { /* Initialize config structure and module instance */ //! [init_conf] struct i2c_slave_config config_i2c_slave; i2c_slave_get_config_defaults(&config_i2c_slave); //! [init_conf] /* Change address and address_mode */ //! [conf_changes] config_i2c_slave.address = SLAVE_ADDRESS; config_i2c_slave.address_mode = I2C_SLAVE_ADDRESS_MODE_MASK; //! [conf_changes] /* Initialize and enable device with config */ //! [init_module] i2c_slave_init(&i2c_slave_instance, CONF_I2C_SLAVE_MODULE, &config_i2c_slave); //! [init_module] //! [enable_module] i2c_slave_enable(&i2c_slave_instance); //! [enable_module] }
//! [initialize_i2c] void configure_i2c_slave(void) { /* Create and initialize config_i2c_slave structure */ //! [init_conf] struct i2c_slave_config config_i2c_slave; i2c_slave_get_config_defaults(&config_i2c_slave); //! [init_conf] /* Change address and address_mode */ //! [conf_changes] config_i2c_slave.address = SLAVE_ADDRESS; config_i2c_slave.address_mode = I2C_SLAVE_ADDRESS_MODE_MASK; config_i2c_slave.buffer_timeout = 1000; //! [conf_changes] /* Initialize and enable device with config_i2c_slave */ //! [init_module] i2c_slave_init(&i2c_slave_instance, SERCOM2, &config_i2c_slave); //! [init_module] //! [enable_module] i2c_slave_enable(&i2c_slave_instance); //! [enable_module] }