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

📄 elcd.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 4 页
字号:
//DESCRIPTION : 
//PARAMETERS  : 
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetReadOnPolarity(ELCD_read_on_polarity_t polarity){

  SetGroupBits32(ELCD_ONOFFTIME_REG, ELCD_ONOFFTIME_REG_RON_POLARITY_POS, ELCD_ONOFFTIME_REG_RON_POLARITY_NUMB, polarity);

}



//---------------------------------------------------------
//NAME        : ELCD_SetWriteOnPolarity
//DESCRIPTION : 
//PARAMETERS  : 
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetWriteOnPolarity(ELCD_write_on_polarity_t polarity){
  
  SetGroupBits32(ELCD_ONOFFTIME_REG, ELCD_ONOFFTIME_REG_WON_POLARITY_POS, ELCD_ONOFFTIME_REG_WON_POLARITY_NUMB, polarity);

}


//---------------------------------------------------------
//NAME        : ELCD_SetWriteOnPulse
//DESCRIPTION : To define the number of FCLK cycle(s) for the "write on" pulse
//PARAMETERS  : nb_fclk_cycles is the desired number of FCLK cycle(s) for the "write on" pulse
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetWriteOnPulse(UWORD8 nb_fclk_cycles){
  
  SetGroupBits32(ELCD_ONOFFTIME_REG, ELCD_ONOFFTIME_REG_WRITE_ON_POS, ELCD_ONOFFTIME_REG_WRITE_ON_NUMB, nb_fclk_cycles-1);

}



//---------------------------------------------------------
//NAME        : ELCD_SetWriteOffPulse
//DESCRIPTION : To define the number of FCLK cycle(s) for the "write off" pulse
//PARAMETERS  : nb_fclk_cycles is the desired number of FCLK cycle(s) for the "write off" pulse
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetWriteOffPulse(UWORD8 nb_fclk_cycles){
  
  SetGroupBits32(ELCD_ONOFFTIME_REG, ELCD_ONOFFTIME_REG_WRITE_OFF_POS, ELCD_ONOFFTIME_REG_WRITE_OFF_NUMB, nb_fclk_cycles-1);

}


//---------------------------------------------------------
//NAME        : ELCD_SetReadOnPulse
//DESCRIPTION : To define the number of FCLK cycle(s) for the "read on" pulse
//PARAMETERS  : nb_fclk_cycles is the desired number of FCLK cycle(s) for the "read on" pulse
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetReadOnPulse(UWORD8 nb_fclk_cycles){
  
  SetGroupBits32(ELCD_ONOFFTIME_REG, ELCD_ONOFFTIME_REG_READ_ON_POS, ELCD_ONOFFTIME_REG_READ_ON_NUMB, nb_fclk_cycles-1);

}



//---------------------------------------------------------
//NAME        : ELCD_SetReadOffPulse
//DESCRIPTION : To define the number of FCLK cycle(s) for the "read off" pulse
//PARAMETERS  : nb_fclk_cycles is the desired number of FCLK cycle(s) for the "read off" pulse
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetReadOffPulse(UWORD8 nb_fclk_cycles){
  
  SetGroupBits32(ELCD_ONOFFTIME_REG, ELCD_ONOFFTIME_REG_READ_OFF_POS, ELCD_ONOFFTIME_REG_READ_OFF_NUMB, nb_fclk_cycles-1);

}



//---------------------------------------------------------
//NAME        : ELCD_SetPrescaler
//DESCRIPTION : FCLK = OCPCLK / (prescaler+1) 
//PARAMETERS  : 
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetPrescaler(UWORD8 prescaler){
  
  SetGroupBits32(ELCD_ONOFFTIME_REG, ELCD_ONOFFTIME_REG_PRESCALER_POS, ELCD_ONOFFTIME_REG_PRESCALER_NUMB, prescaler);

}


//---------------------------------------------------------
//NAME        : ELCD_SetDMAorIT
//DESCRIPTION : To programme Tx & Rx FIFO threshold
//PARAMETERS  : 1st is Tx FIFO threshold, 2nd is the Rx one
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetDMAorIT(UWORD8 tx_threshold, UWORD8 rx_threshold, ELCD_dma_it_t mode){
  
  ELCD_DMAIT_REG = (UWORD32)( ((UWORD32)tx_threshold << ELCD_DMAIT_REG_TXFIFO_THRESHOLD_POS) | ((UWORD32)rx_threshold << ELCD_DMAIT_REG_RXFIFO_THRESHOLD_POS) | (UWORD32)mode );
  
}



//---------------------------------------------------------
//NAME        : ELCD_SetDmaLcdTxMode
//DESCRIPTION : To programme the DMA LCD channel use
//PARAMETERS  : 
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetDmaLcdTxMode(void){
  
  ELCD_DMAIT_REG = DMA_LCD;
  
}



//---------------------------------------------------------
//NAME        : ELCD_SetBusSize
//DESCRIPTION : To set the Data Bus size
//PARAMETERS  : desired bus_size can be :
//
//              BUS_SIZE_6_BITS,
//              BUS_SIZE_8_BITS,
//              BUS_SIZE_9_BITS,
//              BUS_SIZE_12_BITS,
//              BUS_SIZE_16_BITS,
//              BUS_SIZE_18_BITS,
//              BUS_SIZE_24_BITS 
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_SetBusSize(ELCD_bus_size_t bus_size){
  
  SetGroupBits32(ELCD_ELCDCTL_REG, ELCD_ELCDCTL_REG_BUS_SIZE_POS, ELCD_ELCDCTL_REG_BUS_SIZE_NUMB, bus_size);
  
}


//---------------------------------------------------------
//NAME        : ELCD_EnableRxPacking
//DESCRIPTION : To Enable RX Packing
//PARAMETERS  : 
//RETURN VALUE:
//LIMITATIONS : ELCD Bus size must be less than 16-bit
//---------------------------------------------------------
void ELCD_EnableRxPacking(void){

   SetGroupBits32(ELCD_ELCDCTL_REG, ELCD_ELCDCTL_REG_RX_PACKING_POS, ELCD_ELCDCTL_REG_RX_PACKING_NUMB, 1); 

}


//---------------------------------------------------------
//NAME        : ELCD_InsertDummyReadCycles
//DESCRIPTION : To specify the number of dummy read cycle
//              00: 0 dummy read cycle 
//              01: 1 dummy read cycle
//              10: 2 dummy read cycles
//              11: reserved
//              These dummy reads will be add only for the first read access 
//PARAMETERS  : 
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_InsertDummyReadCycles(ELCD_dummy_read_cycles_t nb_cycles){

   SetField32(ELCD_ELCDCTL_REG, NDUMMY, nb_cycles); 

}


//---------------------------------------------------------
//NAME        : ELCD_DisableRxPacking
//DESCRIPTION : To Disable RX Packing
//PARAMETERS  : 
//RETURN VALUE:
//LIMITATIONS : 
//---------------------------------------------------------
void ELCD_DisableRxPacking(void){

  SetGroupBits32(ELCD_ELCDCTL_REG, ELCD_ELCDCTL_REG_RX_PACKING_POS, ELCD_ELCDCTL_REG_RX_PACKING_NUMB, 0); 

}


//---------------------------------------------------------
//NAME        : ELCD_SendCommand
//DESCRIPTION : Send a command to the External LCD controler on the ELCD bus
//PARAMETERS  : command to send to external LCd controler & CS on which it will be performed (nCS1 or nCS0)
//RETURN VALUE: TEST_OK if command has been sent before time out, TEST_BAD else...
//LIMITATIONS : command is in fact 24-bit wide
//---------------------------------------------------------
UWORD16 ELCD_SendCommand(UWORD32 *p_command, ELCD_cs_type cs, UWORD8 nb_command){

  UWORD32 register_value = ELCD_ELCDCTL_REG;
  UWORD32 i = ELCD_CMDTX_END_TIMEOUT;
  UWORD8  j;
  
  
  ELCD_CMDTX_REG = *p_command++; // Command value 
  
  register_value &= (UWORD32)~( (1 << ELCD_ELCDCTL_REG_ELCD_DNC_POS) ); // To clear the DnC field to select Control instead of Data 
  register_value |= ( (1 << ELCD_ELCDCTL_REG_ELCD_NCS1_POS) | (1 << ELCD_ELCDCTL_REG_ELCD_NCS0_POS) ); // To ensure than no CS is active
  register_value &= ~(UWORD32)(cs); // To activate the desired CS 
  
  ELCD_ELCDCTL_REG = register_value; 
  
  
  for ( j = nb_command-1; j > 0; j--){
    
    // waiting loop for CMD_TX register to be ready to accept the next command data
    while ( !GetGroupBits32(ELCD_STATUS_REG, ELCD_STATUS_REG_CMDTX_END_POS, ELCD_STATUS_REG_CMDTX_END_NUMB) && (i > 0) ) 
      i--; 
    
    if (i == 0) return TEST_BAD;
    
    ELCD_CMDTX_REG = *p_command++; // next Command value 
    
  }
  
  
  // Each command has been put on the ELCD Bus, we must wait for the fsm to come back into idle before releasing the CS & DnC
  i = ELCD_CMDTX_END_TIMEOUT;
  while ( !GetGroupBits32(ELCD_STATUS_REG, ELCD_STATUS_REG_IDLE_POS, ELCD_STATUS_REG_IDLE_NUMB) && (i > 0) ) 
    i--; 
  
  // Release the CS & DnC
  register_value |= (UWORD32)( (1 << ELCD_ELCDCTL_REG_ELCD_NCS1_POS) | (1 << ELCD_ELCDCTL_REG_ELCD_NCS0_POS) );
  register_value |= (1 << ELCD_ELCDCTL_REG_ELCD_DNC_POS);
  
  ELCD_ELCDCTL_REG = register_value;  
  
  // return OK if time out didn't occured
  if (i == 0)
    return TEST_BAD;
  else
    return TEST_OK;
  
}


//---------------------------------------------------------
//NAME        : ELCD_ReleaseResetPin
//DESCRIPTION : Control of ELCD_nRESET pin : set value to 1
//PARAMETERS  : 
//RETURN VALUE: 
//LIMITATIONS : 
//---------------------------------------------------------
void ELCD_ReleaseResetPin(void){

  SetGroupBits32(ELCD_ELCDCTL_REG, ELCD_ELCDCTL_REG_ELCD_NRESET_POS, ELCD_ELCDCTL_REG_ELCD_NRESET_NUMB, 1); 

}
  
//---------------------------------------------------------
//NAME        : ELCD_ResetExternalLCD
//DESCRIPTION : Control of ELCD_nRESET pin : set value to 0
//PARAMETERS  : 
//RETURN VALUE: 
//LIMITATIONS : 
//---------------------------------------------------------
void ELCD_ResetExternalLCD(void){

  SetGroupBits32(ELCD_ELCDCTL_REG, ELCD_ELCDCTL_REG_ELCD_NRESET_POS, ELCD_ELCDCTL_REG_ELCD_NRESET_NUMB, 0); 

}
  
//---------------------------------------------------------
//NAME        : ELCD_EnableIT
//DESCRIPTION : To enable the ELCD Tx & Rx ITs generation from ELCD I/F
//
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_EnableIT(void){

  UWORD32 register_value = ELCD_DMAIT_REG;
  
  register_value |= ( 1 << ELCD_DMAIT_REG_IT_RX_EN_POS | 1 << ELCD_DMAIT_REG_IT_TX_EN_POS | 1 << ELCD_DMAIT_REG_TX_MODE_POS );
  ELCD_DMAIT_REG = register_value;
  
}


//---------------------------------------------------------
//NAME        : ELCD_DisableIT
//DESCRIPTION : To disable the ELCD Tx & Rx ITs generation from ELCD I/F
//
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_DisableIT(void){
  
  UWORD32 register_value = ELCD_DMAIT_REG;
  
  register_value &= ~( 1 << ELCD_DMAIT_REG_IT_RX_EN_POS | 1 << ELCD_DMAIT_REG_IT_TX_EN_POS );
  ELCD_DMAIT_REG = register_value;
 
}

//---------------------------------------------------------
//NAME        : ELCD_DisableTXIT
//DESCRIPTION : To disable the ELCD Tx ITs generation from ELCD I/F
//
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_DisableTXIT(void){  
  
  UWORD32 register_value = ELCD_DMAIT_REG;
  
  register_value &= ~( 1 << ELCD_DMAIT_REG_IT_TX_EN_POS );
  ELCD_DMAIT_REG = register_value;
 
}


//---------------------------------------------------------
//NAME        : ELCD_DisableRXIT
//DESCRIPTION : To disable the ELCD Rx ITs generation from ELCD I/F
//
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_DisableRXIT(void){  
  
  UWORD32 register_value = ELCD_DMAIT_REG;
  
  register_value &= ~( 1 << ELCD_DMAIT_REG_IT_RX_EN_POS );
  ELCD_DMAIT_REG = register_value;
 
}


//---------------------------------------------------------
//NAME        : ELCD_DisableTXDMAreq
//DESCRIPTION : To disable the ELCD Tx DMA requests generation from ELCD I/F
//
//RETURN VALUE:
//LIMITATIONS :
//---------------------------------------------------------
void ELCD_DisableTXDMAreq(void){  
  
  UWORD32 register_value = ELCD_DMAIT_REG;
  
  register_value &= ~( 1 << ELCD_DMAIT_REG_DMA_TX_EN_POS );
  ELCD_DMAIT_REG = register_value;

⌨️ 快捷键说明

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