Ejemplo n.º 1
0
/*---------------------------------------------------------------------------*/
void
board_i2c_shutdown()
{
  interface = NO_INTERFACE;

  if(accessible()) {
    ti_lib_i2c_master_disable(I2C0_BASE);
  }

  ti_lib_prcm_peripheral_run_disable(PRCM_PERIPH_I2C0);
  ti_lib_prcm_load_set();
  while(!ti_lib_prcm_load_get());

  /*
   * Set all pins to GPIO Input and disable the output driver. Set internal
   * pull to match external pull
   *
   * SDA and SCL: external PU resistor
   * SDA HP and SCL HP: MPU PWR low
   */
  ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SDA_HP);
  ti_lib_ioc_io_port_pull_set(BOARD_IOID_SDA_HP, IOC_IOPULL_DOWN);
  ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SCL_HP);
  ti_lib_ioc_io_port_pull_set(BOARD_IOID_SCL_HP, IOC_IOPULL_DOWN);

  ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SDA);
  ti_lib_ioc_io_port_pull_set(BOARD_IOID_SDA, IOC_IOPULL_UP);
  ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SCL);
  ti_lib_ioc_io_port_pull_set(BOARD_IOID_SCL, IOC_IOPULL_UP);
}
Ejemplo n.º 2
0
/*---------------------------------------------------------------------------*/
void
board_i2c_select(uint8_t new_interface, uint8_t address)
{
  slave_addr = address;

  if(accessible() == false) {
    board_i2c_wakeup();
  }

  if(new_interface != interface) {
    interface = new_interface;

    ti_lib_i2c_master_disable(I2C0_BASE);

    if(interface == BOARD_I2C_INTERFACE_0) {
      ti_lib_ioc_io_port_pull_set(BOARD_IOID_SDA, IOC_NO_IOPULL);
      ti_lib_ioc_io_port_pull_set(BOARD_IOID_SCL, IOC_NO_IOPULL);
      ti_lib_ioc_pin_type_i2c(I2C0_BASE, BOARD_IOID_SDA, BOARD_IOID_SCL);
      ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SDA_HP);
      ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SCL_HP);
    } else if(interface == BOARD_I2C_INTERFACE_1) {
      ti_lib_ioc_io_port_pull_set(BOARD_IOID_SDA_HP, IOC_NO_IOPULL);
      ti_lib_ioc_io_port_pull_set(BOARD_IOID_SCL_HP, IOC_NO_IOPULL);
      ti_lib_ioc_pin_type_i2c(I2C0_BASE, BOARD_IOID_SDA_HP, BOARD_IOID_SCL_HP);
      ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SDA);
      ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SCL);
    }

    /* Enable and initialize the I2C master module */
    ti_lib_i2c_master_init_exp_clk(I2C0_BASE, ti_lib_sys_ctrl_clock_get(),
                                   true);
  }
}
Ejemplo n.º 3
0
uint_least8_t ADS7846_rd_spi(void)
{
#if defined(SOFTWARE_SPI)
	ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SPI_MOSI);

	uint_least8_t data = 0;
	MOSI_LOW();
	for (uint_least8_t bit = 8; bit != 0; bit--) {
		ADS7846_delay_ms(1);
		SCK_HIGH();
		ADS7846_delay_ms(1);

		data <<= 1;
		if (MISO_READ()) {
			data |= 1;
		} else {
			//data |= 0;
		}
		SCK_LOW();
	}
	return data;
#else
	return SPI.transfer(0x00);
#endif
}
Ejemplo n.º 4
0
/*---------------------------------------------------------------------------*/
static void
configure_unused_pins(void)
{
  /* Turn off 3.3-V domain (lcd/sdcard power, output low) */
  ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_3V3_EN);
  ti_lib_gpio_pin_write(BOARD_3V3_EN, 0);

  /* Accelerometer (PWR output low, CSn output, high) */
  ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_ACC_PWR);
  ti_lib_gpio_pin_write(BOARD_ACC_PWR, 0);

  /* Ambient light sensor (off, output low) */
  ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_ALS_PWR);
  ti_lib_gpio_pin_write(BOARD_ALS_PWR, 0);
  ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_ALS_OUT);
  ti_lib_ioc_io_port_pull_set(BOARD_IOID_ALS_OUT, IOC_NO_IOPULL);
}
Ejemplo n.º 5
0
/*---------------------------------------------------------------------------*/
static void
configure_unused_pins(void)
{
  uint32_t pins[] = {
    BOARD_IOID_CS, BOARD_IOID_TDO, BOARD_IOID_TDI, BOARD_IOID_DIO12,
    BOARD_IOID_DIO15, BOARD_IOID_DIO21, BOARD_IOID_DIO22, BOARD_IOID_DIO23,
    BOARD_IOID_DIO24, BOARD_IOID_DIO25, BOARD_IOID_DIO26, BOARD_IOID_DIO27,
    BOARD_IOID_DIO28, BOARD_IOID_DIO29, BOARD_IOID_DIO30,
    IOID_UNUSED
  };

  uint32_t *pin;

  for(pin = pins; *pin != IOID_UNUSED; pin++) {
    ti_lib_ioc_pin_type_gpio_input(*pin);
    ti_lib_ioc_io_port_pull_set(*pin, IOC_IOPULL_DOWN);
  }
}
Ejemplo n.º 6
0
void ADS7846_begin(void)
{
	ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_TOUCH_CS);
	ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_SPI_MOSI);
	ti_lib_ioc_pin_type_gpio_output(BOARD_IOID_SPI_SCK);
	ti_lib_ioc_pin_type_gpio_input(BOARD_IOID_SPI_MISO);

	CS_DISABLE();

#ifdef IRQ_PIN
	pinMode(IRQ_PIN, INPUT);
	digitalWrite(IRQ_PIN, HIGH);	//pull-up
#endif
#ifdef BUSY_PIN
	pinMode(BUSY_PIN, INPUT);
	digitalWrite(BUSY_PIN, HIGH);	//pull-up
#endif

#if !defined(SOFTWARE_SPI)
	SPI.setDataMode(SPI_MODE0);
	SPI.begin();
#endif

	//set vars
	tp_matrix.div = 0;
	tp_x = 0;
	tp_y = 0;
	tp_last_x = 0;
	tp_last_y = 0;
	lcd_x = 0;
	lcd_y = 0;
	pressure = 0;
	ADS7846_setOrientation(0);

	return;
}