Exemplo n.º 1
0
unsigned char I2C_Read (int ack) {

  /* Enable/disable Master acknowledge                                        */
  if (ack) I2C1->CR1 |=  0x0400;
  else     I2C1->CR1 &= ~0x0400;

  while (!(I2C_sr() & 0x00000040));     /* Wait until RxNE bit set            */
  return (I2C1->DR);
}
Exemplo n.º 2
0
/*-----------------------------------------------------------------------------
 *      WaitFlagSet:  Wait until flag is cleared or timeout occured
 *
 * Parameters:  fl  - flag to check
 *
 * Return:      0   - flag is cleared
 *              1   - flag not cleared, timeout occured
 *----------------------------------------------------------------------------*/
static uint32_t WaitFlagClr (uint32_t fl) {
  uint32_t i;
  for (i = I2C_TOUT; i; i--) {
    if (!(I2C_sr() & fl)) {
      return (0);
    }
  }
  return (1);
}
Exemplo n.º 3
0
void I2C_Addr (unsigned char adr) {

  I2C1->DR = adr;
  while (!(I2C_sr() & 0x0002));
}
Exemplo n.º 4
0
void I2C_Stop (void) {

  I2C1->CR1 |= 0x0200;
  while (I2C_sr() & 0x00020000);        /* Wait until BUSY bit reset          */
}
Exemplo n.º 5
0
void I2C_Start (void) {

  I2C1->CR1 |= 0x0100;
  while (!(I2C_sr() & 0x0001));
}
Exemplo n.º 6
0
void I2C_Write (unsigned char c) {

  I2C1->DR = c;
  while (!(I2C_sr() & 0x00000004));     /* Wait until BTF bit set             */ 
}