bool i2c_initialize(uint8_t i2c_interface, uint32_t i2c_mode, uint8_t slave_addr, uint32_t baud_rate, void *handler) { //puts("i2c_initialize begin...\n"); printf("i2cInterface = %d\n", i2c_interface); i2c_clear_buffer((uint8_t *) i2c_master_buffer, I2C_BUFSIZE * sizeof(uint8_t)); //activate power for I2C2 i2c_active_power(i2c_interface); //select I2C2 functionality for pins x.xx (SDAx) and x.xx (SCLx) i2c_pin_select(i2c_interface); // clear I2CCON register flags i2c_clear_control_register(i2c_interface); //set baud rate i2c_set_baud_rate(i2c_interface, baud_rate); //set slave mode if (i2c_mode == I2CSLAVE) { i2c_set_slave_mode(i2c_interface, slave_addr); } /* Install interrupt handler */ if (!i2c_irq_handler_register(i2c_interface, handler)) { return false; } i2c_initial_master_transmitter_mode(i2c_interface); //puts("...i2c_initialize ended\n"); return (true); }
void i2c_stop(I2C_MemMapPtr p) { i2c_set_slave_mode(p); i2c_set_rx_mode(p); }