voidconfigure_i2c_slave(void){/* Create and initialize config_i2c_slave structure */structi2c_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 = 1000;/* Initialize and enable device with config_i2c_slave */i2c_slave_init(&i2c_slave_instance, CONF_I2C_SLAVE_MODULE, &config_i2c_slave);i2c_slave_enable(&i2c_slave_instance);}
structi2c_slave_config config_i2c_slave;i2c_slave_get_config_defaults(&config_i2c_slave);
config_i2c_slave.address = SLAVE_ADDRESS;config_i2c_slave.address_mode = I2C_SLAVE_ADDRESS_MODE_MASK;config_i2c_slave.buffer_timeout = 1000;
i2c_slave_init(&i2c_slave_instance, CONF_I2C_SLAVE_MODULE, &config_i2c_slave);
i2c_slave_enable(&i2c_slave_instance);
structdma_resource_config config;
dma_get_config_defaults(&config);
config.peripheral_trigger = CONF_I2C_DMA_TRIGGER;config.trigger_action = DMA_TRIGGER_ACTON_BEAT;
dma_allocate(resource, &config);
structdma_descriptor_config descriptor_config;
dma_descriptor_get_config_defaults(&descriptor_config);
descriptor_config.beat_size = DMA_BEAT_SIZE_BYTE;descriptor_config.src_increment_enable =false;descriptor_config.block_transfer_count = DATA_LENGTH;descriptor_config.destination_address = (uint32_t)read_buffer + DATA_LENGTH;descriptor_config.source_address =(uint32_t)(&i2c_slave_instance.hw->I2CS.DATA.reg);
dma_descriptor_create(descriptor, &descriptor_config);