📄 uwire.c
字号:
//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 + -