32 lines
812 B
C
32 lines
812 B
C
|
|
#define TWI0_BAUD(F_SCL, T_RISE) \
|
|
((((((float)10000000 / (float)F_SCL)) - 10 - ((float)10000000 * T_RISE / 1000000))) / 2)
|
|
|
|
#include "helpers_i2c.h"
|
|
|
|
void i2c_init(void) {
|
|
PORTMUX.TWISPIROUTEA = 0x23;
|
|
TWI0.CTRLA = 0x14;
|
|
|
|
//Debug Run
|
|
TWI0.DBGCTRL = 0x00;
|
|
|
|
//Master Baud Rate Control
|
|
TWI0.MBAUD = (uint8_t)TWI0_BAUD(100000, 0);
|
|
|
|
//RIEN disabled; WIEN disabled; QCEN disabled; TIMEOUT DISABLED; SMEN disabled; ENABLE enabled;
|
|
TWI0.MCTRLA = 0x01;
|
|
|
|
//RIF disabled; WIF disabled; CLKHOLD disabled; ARBLOST disabled; BUSERR disabled; BUSSTATE UNKNOWN;
|
|
TWI0.MSTATUS = 0x00;
|
|
|
|
//Master Address
|
|
TWI0.MADDR = 0x00;
|
|
|
|
//FLUSH disabled; ACKACT ACK; MCMD NOACT;
|
|
TWI0.MCTRLB = 0x00;
|
|
|
|
//Master Data
|
|
TWI0.MDATA = 0x00;
|
|
|
|
}; |