OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [sw/] [lib/] [source/] [neorv32_twi.c] - Diff between revs 44 and 48

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 44 Rev 48
Line 63... Line 63...
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Enable and configure TWI controller. The TWI control register bits are listed in #NEORV32_TWI_CT_enum.
 * Enable and configure TWI controller. The TWI control register bits are listed in #NEORV32_TWI_CT_enum.
 *
 *
 * @param[in] prsc Clock prescaler select (0..7). See #NEORV32_CLOCK_PRSC_enum.
 * @param[in] prsc Clock prescaler select (0..7). See #NEORV32_CLOCK_PRSC_enum.
 * @param[in] irq_en Enable transfer-done interrupt when 1.
 
 * @param[in] ckst_en Enable clock-stretching by peripherals when 1.
 * @param[in] ckst_en Enable clock-stretching by peripherals when 1.
 **************************************************************************/
 **************************************************************************/
void neorv32_twi_setup(uint8_t prsc, uint8_t irq_en, uint8_t ckst_en) {
void neorv32_twi_setup(uint8_t prsc, uint8_t ckst_en) {
 
 
  TWI_CT = 0; // reset
  TWI_CT = 0; // reset
 
 
  uint32_t ct_enable = 1;
  uint32_t ct_enable = 1;
  ct_enable = ct_enable << TWI_CT_EN;
  ct_enable = ct_enable << TWI_CT_EN;
 
 
  uint32_t ct_prsc = (uint32_t)(prsc & 0x07);
  uint32_t ct_prsc = (uint32_t)(prsc & 0x07);
  ct_prsc = ct_prsc << TWI_CT_PRSC0;
  ct_prsc = ct_prsc << TWI_CT_PRSC0;
 
 
  uint32_t ct_irq = (uint32_t)(irq_en & 0x01);
 
  ct_irq = ct_irq << TWI_CT_IRQ_EN;
 
 
 
  uint32_t ct_cksten = (uint32_t)(ckst_en & 0x01);
  uint32_t ct_cksten = (uint32_t)(ckst_en & 0x01);
  ct_cksten = ct_cksten << TWI_CT_CKSTEN;
  ct_cksten = ct_cksten << TWI_CT_CKSTEN;
 
 
  TWI_CT = ct_enable | ct_prsc | ct_irq | ct_cksten;
  TWI_CT = ct_enable | ct_prsc | ct_cksten;
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Disable TWI controller.
 * Disable TWI controller.
 **************************************************************************/
 **************************************************************************/
void neorv32_twi_disable(void) {
void neorv32_twi_disable(void) {
 
 
  TWI_CT &= ~((uint32_t)(1 << TWI_CT_IRQ_EN));
  TWI_CT &= ~((uint32_t)(1 << TWI_CT_EN));
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Activate sending ACKs by controller (MACK).
 * Activate sending ACKs by controller (MACK).

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.