int i2c_init(i2c_connection conn) { struct i2c_state *c = (struct i2c_state *) conn; c->base = I2CA0_BASE; c->sda_pin_mode = MAP_PinModeGet(c->scl_pin); MAP_PinConfigGet(c->sda_pin, &c->sda_pin_strength, &c->sda_pin_type); MAP_PinTypeI2C(c->sda_pin, PIN_MODE_1); /* SDA */ c->scl_pin_mode = MAP_PinModeGet(c->scl_pin); MAP_PinConfigGet(c->scl_pin, &c->scl_pin_strength, &c->scl_pin_type); MAP_PinTypeI2C(c->scl_pin, PIN_MODE_1); /* SCL */ MAP_PRCMPeripheralClkEnable(PRCM_I2CA0, PRCM_RUN_MODE_CLK); MAP_PRCMPeripheralReset(PRCM_I2CA0); MAP_I2CMasterInitExpClk(c->base, SYS_CLK, 0 /* 100 KHz */); return 0; }
//***************************************************************************** // //! Mandatory MCU Initialization Routine //! //! \param None //! //! \return None // //***************************************************************************** void MCUInit(void) { unsigned long ulRegVal; // // DIG DCDC NFET SEL and COT mode disable // HWREG(0x4402F010) = 0x30031820; HWREG(0x4402F00C) = 0x04000000; UtilsDelay(32000); // // ANA DCDC clock config // HWREG(0x4402F11C) = 0x099; HWREG(0x4402F11C) = 0x0AA; HWREG(0x4402F11C) = 0x1AA; // // PA DCDC clock config // HWREG(0x4402F124) = 0x099; HWREG(0x4402F124) = 0x0AA; HWREG(0x4402F124) = 0x1AA; // // Enable RTC // if(MAP_PRCMSysResetCauseGet()== PRCM_POWER_ON) { HWREG(0x4402F804) = 0x1; } // // TD Flash timing configurations in case of MCU WDT reset // if((HWREG(0x4402D00C) & 0xFF) == 0x00000005) { HWREG(0x400F707C) |= 0x01840082; HWREG(0x400F70C4)= 0x1; HWREG(0x400F70C4)= 0x0; } // // JTAG override for I2C in SWD mode // if(((HWREG(0x4402F0C8) & 0xFF) == 0x2)) { MAP_PinModeSet(PIN_19,PIN_MODE_2); MAP_PinModeSet(PIN_20,PIN_MODE_2); HWREG(0x4402E184) |= 0x1; } // // Take I2C semaphore,##IMPROTANT:REMOVE IN PG1.32 DEVICES## // ulRegVal = HWREG(COMMON_REG_BASE + COMMON_REG_O_I2C_Properties_Register); ulRegVal = (ulRegVal & ~0x3) | 0x1; HWREG(COMMON_REG_BASE + COMMON_REG_O_I2C_Properties_Register) = ulRegVal; // // Take GPIO semaphore##IMPROTANT:REMOVE IN PG1.32 DEVICES## // ulRegVal = HWREG(COMMON_REG_BASE + COMMON_REG_O_GPIO_properties_register); ulRegVal = (ulRegVal & ~0x3FF) | 0x155; HWREG(COMMON_REG_BASE + COMMON_REG_O_GPIO_properties_register) = ulRegVal; // // Change UART pins(55,57) mode to PIN_MODE_0 if they are in PIN_MODE_1(NWP mode) // if((MAP_PinModeGet(PIN_55)) == PIN_MODE_1) { MAP_PinModeSet(PIN_55,PIN_MODE_0); } if((MAP_PinModeGet(PIN_57)) == PIN_MODE_1) { MAP_PinModeSet(PIN_57,PIN_MODE_0); } // // Enable Peripheral Clocks // MAP_PRCMPeripheralClkEnable(PRCM_UARTA0, PRCM_RUN_MODE_CLK); // // Configure PIN_55 for UART0 UART0_TX // MAP_PinTypeUART(PIN_55, PIN_MODE_3); // // Configure PIN_57 for UART0 UART0_RX // MAP_PinTypeUART(PIN_57, PIN_MODE_3); InitTerm(); //set the parameters of uart0 }