Example #1
0
void GPIO_mode(GPIO_pin_type pin, GPIO_mode_type mode) {

	// ignore unimplemented pins
	if (pin < 0 || pin >= SIZE_OF_ARRAY(gpio_info) || NULL == gpio_info[pin].name) {
		return;
	}

	switch (mode) {
	default:
	case GPIO_INPUT:
		if (gpio_info[pin].fd < 0 && !GPIO_enable(pin)) {
			return;
		}
		write_file(gpio_info[pin].direction, DIRECTION_in "\n", CONST_STRLEN(DIRECTION_in "\n"));
		write_file(gpio_info[pin].active_low, "0\n", 2);
		write_file(gpio_info[pin].state, STATE_rxEnable_pullNone "\n", CONST_STRLEN(STATE_rxEnable_pullNone "\n"));
		break;

	case GPIO_OUTPUT:
		if (gpio_info[pin].fd < 0 && !GPIO_enable(pin)) {
			return;
		}
		write_file(gpio_info[pin].direction, DIRECTION_out "\n", CONST_STRLEN(DIRECTION_out "\n"));
		write_file(gpio_info[pin].active_low, "0\n", 2);
		write_file(gpio_info[pin].state, STATE_rxDisable_pullNone "\n", CONST_STRLEN(STATE_rxDisable_pullNone "\n"));
		break;

	case GPIO_PWM:  // only certain pins allowed
		switch (pin) {
		case GPIO_P9_14:    // EHRPWM1A
			PWM_enable(0, "P9_14");
			break;
		case GPIO_P9_16:    // EHRPWM1B
			PWM_enable(1, "P9_16");
			break;
		case GPIO_P8_19:    // EHRPWM2A
			PWM_enable(2, "P8_19");
			break;
		case GPIO_P8_13:    // EHRPWM2B
			PWM_enable(3, "P8_13");
			break;
		default:
			break;
		}
		break;
	}
}
Example #2
0
static void LED_enable_intern(led_t led) {
  led_shift.current_led |= led;
  led_shift.dirty = TRUE;
  // TODO PETER REMOVE
  if (led & LED_SPI_FLASH) {
    GPIO_enable(GPIOD, GPIO_Pin_13);
  }
}
BOOTLOADER_TEXT void b_spif_write(u32_t addr, u8_t *b, u16_t len) {
  GPIO_disable(SPI_FLASH_GPIO_PORT, SPI_FLASH_GPIO_PIN);
  b_spi_txrx(0x06); // write enable
  GPIO_enable(SPI_FLASH_GPIO_PORT, SPI_FLASH_GPIO_PIN);
  volatile int a = 0x100;
  while (a--)
    ;
  GPIO_disable(SPI_FLASH_GPIO_PORT, SPI_FLASH_GPIO_PIN);
  b_spi_txrx(0x02); // write
  b_spi_txrx((addr >> 16) & 0xff);
  b_spi_txrx((addr >> 8) & 0xff);
  b_spi_txrx((addr >> 0) & 0xff);
  // write data
  while (len--) {
    b_spi_txrx(*b++);
  }
  GPIO_enable(SPI_FLASH_GPIO_PORT, SPI_FLASH_GPIO_PIN);
}
Example #4
0
// Configure un port en alternate output push-pull (utilisation de PWM) 
char Port_IO_Init_Alternate_Output( GPIO_TypeDef * Port, u8 Broche) {
	GPIO_enable(Port);
	
	if (Broche > 7) 
	{
		Broche -= 8;
		Port->CRH = (Port->CRH & ~(0xF << Broche*4))| (0b1010 << Broche*4);
	}
	else 
	{
		Port->CRL = (Port->CRL & ~(0xF << Broche*4))| (0b1010 << Broche*4);
	}
	return 1;
}
BOOTLOADER_TEXT void b_spif_read(u32_t addr, u8_t *b, u16_t len) {
  GPIO_disable(SPI_FLASH_GPIO_PORT, SPI_FLASH_GPIO_PIN);

  b_spi_txrx(0x03); // read
  b_spi_txrx((addr >> 16) & 0xff);
  b_spi_txrx((addr >> 8) & 0xff);
  b_spi_txrx((addr >> 0) & 0xff);
  // get data
  while (len--) {
    *b++ = b_spi_txrx(0xff);
  }

  GPIO_enable(SPI_FLASH_GPIO_PORT, SPI_FLASH_GPIO_PIN);
}
Example #6
0
File: gpio.c Project: RavenB/gratis
void GPIO_mode(GPIO_pin_type pin, GPIO_mode_type mode) {

	// ignore unimplemented pins
	if (pin < 0 || pin >= SIZE_OF_ARRAY(gpio_info) || NULL == gpio_info[pin].name) {
		return;
	}

	switch (mode) {
	default:
	case GPIO_INPUT:
		if (gpio_info[pin].fd < 0 && !GPIO_enable(pin)) {
			return;
		}
		write_pin_file(GPIO_DIRECTION, pin, GPIO_DIRECTION_in "\n", CONST_STRLEN(GPIO_DIRECTION_in "\n"));
		write_pin_file(GPIO_ACTIVE_LOW, pin, "0\n", 2);
		write_pin_file(GPIO_EDGE, pin, GPIO_EDGE_none "\n", CONST_STRLEN(GPIO_EDGE_none "\n"));
		//write_pin_file(GPIO_STATE, pin, STATE_rxEnable_pullNone "\n", CONST_STRLEN(STATE_rxEnable_pullNone "\n"));
		break;

	case GPIO_OUTPUT:
		if (gpio_info[pin].fd < 0 && !GPIO_enable(pin)) {
			return;
		}
		write_pin_file(GPIO_DIRECTION, pin, GPIO_DIRECTION_out "\n", CONST_STRLEN(GPIO_DIRECTION_out "\n"));
		write_pin_file(GPIO_ACTIVE_LOW, pin, "0\n", 2);
		write_pin_file(GPIO_EDGE, pin, GPIO_EDGE_none "\n", CONST_STRLEN(GPIO_EDGE_none "\n"));
		//write_pin_file(GPIO_STATE, pin, STATE_rxDisable_pullNone "\n", CONST_STRLEN(STATE_rxDisable_pullNone "\n"));
		break;

	case GPIO_PWM:  // only certain pins allowed
		if (gpio_info[pin].fd < 0 && !PWM_enable(pin)) {
			return;
		}
		break;
	}
}
Example #7
0
//Configure un port en input floating
char Port_IO_Init_Input( GPIO_TypeDef * Port, u8  Broche) {
	u8 Decal;
	GPIO_enable(Port);
	//Broche 0..7 : config sur registre CRL
	if (Broche > 0 && Broche <= 7)
	{
		Decal = Broche * 4;
		Port->CRL = (Port->CRL & (~ (0xF << Decal))) | (0x4 << Decal);
	}
	
	//Broche sur 8..15 : config sur registre CRH
	else if (Broche > 7 && Broche <=15) {
		Decal = (Broche-8) * 4;
		Port->CRH = (Port->CRH & (~ (0xF << Decal))) | (0x4 << Decal);
	}
	
	//Numéro de broche incorrect
	else
		return 1;
	
	return 0;
}
Example #8
0
void gpio_enable(gpio_port port, gpio_pin pin) {
  GPIO_enable(io_ports[port], io_pins[pin]);
}