⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uwire.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 3 页
字号:
   //Commit Register Update
   UWIRE_CSR_REG = uwireCSR;
}	

//----------------------------------------------------------
//   UWIRE_Read
//-----------------------------------------------------------
UWORD16 UWIRE_Read(void)
{
UWORD16 uwireCSR;
  //Wait data is ready
  do {
    uwireCSR = UWIRE_CSR_REG;
  } while ( (uwireCSR & UWIRE_CSR_CSRB_MASK) || (!(uwireCSR & UWIRE_CSR_RDRB_MASK)) );

  //Get Receive Data Register
  return (UWIRE_RDR_REG);
}

//-----------------------------------------------------------------------
//  UWIRE_M46EepromWriteEnable
//-----------------------------------------------------------------------
void UWIRE_M46EepromWriteEnable (void)
{
    UWIRE_Select(UWIRE_CS0_INDEX);			// select EEPROM
    UWIRE_Write(UWIRE_EEPROM_WEN, UWIRE_M46_CMD_LEN, 0);	// write WEN
    UWIRE_Release();				// free up the uwire
}


//-----------------------------------------------------------------------
//  UWIRE_Xl66EepromWriteEnable
//-----------------------------------------------------------------------

void UWIRE_Xl66EepromWriteEnable (void)
{
    UWIRE_Select(UWIRE_CS0_INDEX);			// select EEPROM
    UWIRE_Write(UWIRE_EEPROM_WEN, UWIRE_XL66_CMD_LEN, 0);	// write WEN
    UWIRE_Release();				// free up the uwire
}



//-----------------------------------------------------------------------
//   XL93LC66 EEPROM_EraseAll :	EEPROM Erase All
//-----------------------------------------------------------------------

void UWIRE_Xl66EepromEraseAll (void)
{
    UWIRE_Select(UWIRE_CS0_INDEX);			// select UWIRE_EEPROM
    UWIRE_Write(UWIRE_EEPROM_ERAL, UWIRE_XL66_CMD_LEN, 0);	// write Erase
    UWIRE_Release();				// free up the uwire
}

//-----------------------------------------------------------------------
//   M93LC46 EEPROM_EraseAll :	EEPROM Erase All
//-----------------------------------------------------------------------

void UWIRE_M46EepromEraseAll (void)
{
    UWIRE_Select(UWIRE_CS0_INDEX);			// select EEPROM
    UWIRE_Write(UWIRE_EEPROM_ERAL, UWIRE_M46_CMD_LEN, 0);	// write Erase
    UWIRE_Release();				// free up the uwire
}

//-----------------------------------------------------------------------
//   XL93LC66 EEPROM_Setup
//-----------------------------------------------------------------------

void UWIRE_Xl66EepromSetup (void)
{
   UWIRE_SR1_REG = 0x00;  // ????? DEBUGGING ONLY ?????
			  //      (to be removed)
   UWIRE_Setup3(UWIRE_CLOCK_ENABLE, UWIRE_CK_FREQ_DIV_10);

   UWIRE_SetupSr1OrSr2(UWIRE_CS0_INDEX,
                       UWIRE_RISING_EDGE_READ, UWIRE_FALLING_EDGE_WRITE,
                       UWIRE_CS_ACTIVE_LEVEL_1, UWIRE_CS_CLOCK_FREQ_DIV_2,
                       UWIRE_CS_CHECK_DEVICE_READY_ON_WRITE);

   UWIRE_CSR_REG = 0x00; // ????? DEBUGGING ONLY ?????
			 //      (to be removed)
   UWIRE_Xl66EepromWriteEnable();
}

//-----------------------------------------------------------------------
//   M93LC46 EEPROM_Setup
//-----------------------------------------------------------------------

void UWIRE_M46EepromSetup (void)
{
  UWIRE_SR1_REG = 0x00; // ????? DEBUGGING ONLY ?????
		        //      (to be removed)
  UWIRE_Setup3(UWIRE_CLOCK_ENABLE, UWIRE_CK_FREQ_DIV_10);

  UWIRE_SetupSr1OrSr2(UWIRE_CS0_INDEX,
                      UWIRE_RISING_EDGE_READ, UWIRE_FALLING_EDGE_WRITE,
                      UWIRE_CS_ACTIVE_LEVEL_1, UWIRE_CS_CLOCK_FREQ_DIV_2,
                      UWIRE_CS_CHECK_DEVICE_READY_ON_WRITE);

  UWIRE_CSR_REG = 0x00;	// ????? DEBUGGING ONLY ?????
			//      (to be removed)
  UWIRE_M46EepromWriteEnable();
}

//-----------------------------------------------------------------------
//   XL93LC66 EEPROM_Write
//-----------------------------------------------------------------------

void UWIRE_Xl66EepromWrite (UWORD16 address, UWORD16 data)
{
    UWIRE_Select(UWIRE_CS0_INDEX);			// select EEPROM
    UWIRE_Write(UWIRE_EEPROM_WRITE | (address << UWIRE_XL66_SHIFT),
		UWIRE_XL66_CMD_LEN, 0);		// write address
    UWIRE_Write(data, UWIRE_EEPROM_DATA_LEN, 0);	// write data
    UWIRE_Release();
}

//-----------------------------------------------------------------------
//   M93LC46 EEPROM_Write
//-----------------------------------------------------------------------

void UWIRE_M46EepromWrite (UWORD16 address, UWORD16 data)
{
    UWIRE_Select(UWIRE_CS0_INDEX);			// select EEPROM
    UWIRE_Write(UWIRE_EEPROM_WRITE | (address << UWIRE_M46_SHIFT),
		UWIRE_M46_CMD_LEN, 0);		// write address
    UWIRE_Write(data, UWIRE_EEPROM_DATA_LEN, 0);	// write data
    UWIRE_Release();
}



//-----------------------------------------------------------------------
//   XL93LC66 EEPROM_Read
//-----------------------------------------------------------------------

UWORD16 UWIRE_Xl66EepromRead (UWORD16 address)
{
    UWORD16 data;

    UWIRE_Select(UWIRE_CS0_INDEX);				// select EEPROM
    UWIRE_Write(UWIRE_EEPROM_READ | (address << UWIRE_XL66_SHIFT),
		UWIRE_XL66_CMD_LEN, UWIRE_EEPROM_DATA_LEN);	// write address
    data = UWIRE_Read();					// get data
    UWIRE_Release();
    return(data);
}

//-----------------------------------------------------------------------
//   M93LC46 EEPROM_Read
// UWIRE_M46EepromRead
//-----------------------------------------------------------------------

UWORD16 UWIRE_M46EepromRead (UWORD16 address)
{
    UWORD16 data;

    UWIRE_Select(UWIRE_CS0_INDEX);  // select EEPROM
    UWIRE_Write(UWIRE_EEPROM_READ | (address << UWIRE_M46_SHIFT),
		UWIRE_M46_CMD_LEN, UWIRE_EEPROM_DATA_LEN);	// write address
    data = UWIRE_Read();					// get data
    UWIRE_Release();
    return(data);
}

//---------------------------------------------
//NAME        : UWIRE_DmaTxMode             -
//DESCRIPTION : Set the SR5 to uwire in       -
//              DMA_TX mode                   -
//RETURN VALUE: None                          -
//---------------------------------------------
void  UWIRE_DmaTxMode(int value)
{
 UWORD16 uwiresr5;
   // load transmit register
   uwiresr5 = UWIRE_SR5_REG ;

  // update register
  if (value == ENABLE)
   uwiresr5 |= UWIRE_SR5_DMA_TX_MASK;
  else
   uwiresr5 &= ~UWIRE_SR5_DMA_TX_MASK;

   //Commit Register Update
   UWIRE_SR5_REG = uwiresr5;
}
//---------------------------------------------
//NAME        : UWIRE_ItMode                 -
//DESCRIPTION : Set the SR5 to uwire in       -
//              IT  mode                      -
//RETURN VALUE: None                          -
//---------------------------------------------
void  UWIRE_ItMode(int value)
{
 UWORD16 uwiresr5;
   // load transmit register
   uwiresr5 = UWIRE_SR5_REG ;

  // update register
  if (value == ENABLE)
   uwiresr5 |= UWIRE_SR5_IT_MASK;
  else
   uwiresr5 &= ~UWIRE_SR5_IT_MASK;

   //Commit Register Update
   UWIRE_SR5_REG = uwiresr5;
}



//---------------------------------------------
//NAME        : UWIRE_AutoTxMode            -
//DESCRIPTION : Set the SR5 to uwire in       -
//              AUTO_TX mode                  -
//RETURN VALUE: None                          -
//---------------------------------------------

void  UWIRE_AutoTxMode(int value)
{
 UWORD16 uwiresr5;
   // load transmit register
   uwiresr5 = UWIRE_SR5_REG ;

  // update register
  if (value == ENABLE)
   uwiresr5 |= UWIRE_SR5_AUTO_TX_MASK;
  else
   uwiresr5 &= ~UWIRE_SR5_AUTO_TX_MASK;

   //Commit Register Update
   UWIRE_SR5_REG = uwiresr5;
}


//---------------------------------------------
//NAME        : UWIRE_CsToggleMode          -
//DESCRIPTION : Set the SR5 to uwire in       -
//              CS toggle mode                -
//            ( only if AUTOTX selected       -
//RETURN VALUE: None                          -
//---------------------------------------------

void  UWIRE_CsToggleMode(int value)
{
 UWORD16 uwiresr5;
   // load transmit register
   uwiresr5 = UWIRE_SR5_REG ;

  // update register
  if (value == ENABLE)
   uwiresr5 |= UWIRE_SR5_CS_TOGGLE_MASK;
  else
   uwiresr5 &= ~UWIRE_SR5_CS_TOGGLE_MASK;

   //Commit Register Update
   UWIRE_SR5_REG = uwiresr5;
}

//-----------------------------------------------------------------------
//              UWIRE_ReadRxRegister                                  -
//              Read RX register                                        -
//-----------------------------------------------------------------------

UWORD16  UWIRE_ReadRxRegister (void)
{
return(UWIRE_TDR_REG);
}


//---------------------------------------------
//NAME        : UWIRE_WaitTransmitionEnd    -
//DESCRIPTION : wait the reset of the CSRB bit-
//              does polling                  -
//RETURN VALUE: None                          -
//---------------------------------------------
void UWIRE_WaitTransmitionEnd()
{
UWORD16 uwireCSR;

  do {
    uwireCSR = UWIRE_CSR_REG;
  } while (uwireCSR & UWIRE_CSR_CSRB_MASK);
}


//---------------------------------------------
//NAME        : UWIRE_WriteAutoTx           -
//DESCRIPTION : allow a write process whithout-
//            selecting the chip select       -
//                                            -
//          data      : data to transmit      -
//          write_len : bit number to transmit-
//          read_len  : bit number to write   -
//                                            -
//RETURN VALUE: None                          -
//---------------------------------------------
void UWIRE_WriteAutoTx(UWORD16 data, UWORD8 write_len, UWORD8 read_len)
{
UWORD16 uwireCSR;
  // wait Control Status register ready to receive new data
  do
  {
    //Set uwireCSR to Control & status register's contents
    uwireCSR = UWIRE_CSR_REG;
  } while(uwireCSR & UWIRE_CSR_CSRB_MASK);


   // erase previous lengths
   uwireCSR &= ~UWIRE_CSR_NB_BITS_RD_WR_MASK;
   // set bits nb and start
   uwireCSR |= (read_len | (write_len << 5));

   //Commit Register Update
   UWIRE_CSR_REG = uwireCSR;

   // load transmit register
   UWIRE_TDR_REG = data;

   //Commit Register Update
   UWIRE_CSR_REG = uwireCSR;

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -