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

📄 mmcsd.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 5 页
字号:
//----->     //  else RES_Set(RES_OK);
//----->       
//----->     //  if(
//----->     //     Bit_39_Response_R3_ie_Bit15_MMCSD_adp_rsp7_reg_after_CMD1_OR_ACMD41 
//----->     //     != 
//----->     //     BIT39_RESPONSE_R3_ie_BIT15_MMCSD_ADP_RSP7_REG_AFTER_CMD1_OR_ACMD41_EQUAL1
//----->     //    )
//----->     //  RES_Set(RES_BAD);
//----->     //  else RES_Set(RES_OK);
//----->        
//----->     //RESPONSE R3:READ MMCSD_ADP_RESP_REG6 AND MMCSD_ADP_RESP_REG7
//----->     //  if(MMCSD_ReadWord16AtAddress16(MMCSD_ADP_RSP6_REG_ADDR) != MMC_OCR_REG_VOLTAGE_RANGE_LEAST_SIGNIFICANTS_BITS)
//----->         //verif that is equal to arg_reg_1
//----->     //  RES_Set(RES_BAD);
//----->     //  else  RES_Set(RES_OK);
//----->  
//----->     //  if((MMCSD_ReadWord16AtAddress16(MMCSD_ADP_RSP7_REG_ADDR) & 0x7FFF) != MMC_OCR_REG_VOLTAGE_RANGE_MOST_SIGNIFICANTS_BITS)
//----->         //verif that is equal to arg_reg_2
//----->     //  RES_Set(RES_BAD);
//----->     //  else  RES_Set(RES_OK);
//----->   
//----->   //////////////////////CMD1////////////////////////////////////////////
//-----> return(result_value);
//----->}  
//----->
//----->
//----->//-------------------------------------------------------------------------
//----->// NAME        : ACmd41
//----->// DESCRIPTION : set mmcsd command ACmd41 with its arguments, SEND_APP_OP_COND,
//----->//               asks the accessed card to send its operating condition register
//----->//               (OCR) content in the response on the CMD line.
//----->// PARAMETERS  :  
//----->//		
//----->//		                                                       
//----->// RETURN VALUE: 
//----->// LIMITATIONS : None                                                         
//----->//-------------------------------------------------------------------------
//----->UWORD16 ACmd41(void)
//----->{
//-----> UWORD16 result_value;
//-----> UWORD8 Counter_time_out;
//-----> 
//-----> result_value = MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR; 
//-----> 
//-----> write_word16_at_address16((DEMASK_ALL_IRQ_IN_MMCSD_ADP_IE_REG & MASK_OF_MMCSD_ADP_IE_REG), MMCSD_ADP_IE_REG_ADDR);
//-----> 
//-----> Counter_time_out = 0;
//-----> Counter_IRQ_MMCSD = 0;
//-----> Content_of_MMCSDAdp_Stat_Reg = INITIALISATION_CONTENT_OF_MMCSD_ADP_STAT_REG;  
//-----> do
//-----> {
//----->    End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD;
//----->    Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg = MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR;
//----->    Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR;
//----->    Ocr_Busy_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_OCR_BUSY_AFTER_CMD1_OR_ACMD41_BIT_EQUAL_NO_OCR_BUSY;
//----->    Card_Err_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_CARD_ERR_BIT_EQUAL_NO_ERROR;    
//----->    ( Bit_39_Response_R3_ie_Bit15_MMCSD_adp_rsp7_reg_after_CMD1_OR_ACMD41 
//----->      =
//----->      NEGATION_OF_BIT39_RESPONSE_R3_ie_BIT15_MMCSD_ADP_RSP7_REG_AFTER_CMD1_OR_ACMD41_EQUAL1
//----->    );
//----->    
//----->    RES_Set(0xCD41);//detection of CMD
//----->    
//----->    MMC_SetMmcCommand(MMCSD_OCR_REG_VOLTAGE_RANGE_LEAST_SIGNIFICANTS_BITS, MMCSD_ADP_ARG1_REG_ADDR,
//----->                    MMCSD_OCR_REG_VOLTAGE_RANGE_MOST_SIGNIFICANTS_BITS, MMCSD_ADP_ARG2_REG_ADDR,
//----->                    ACMD41, MMCSD_ADP_CMD_REG_ADDR);
//----->                    
//----->    Test_IRQ();
//----->    
//----->    if(
//----->       Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg 
//----->       == 
//----->       NEGATION_OF_MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR
//----->      )
//----->      { result_value = NEGATION_OF_MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR;
//----->        break;
//----->      }                    
//----->    
//-----> }
//-----> while(
//----->       (
//----->         (End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD)
//----->         //  || 
//----->         //  (Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg != //----->MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR)
//----->         ||
//----->         (Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR)
//----->         ||
//----->         (Ocr_Busy_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_OCR_BUSY_AFTER_CMD1_OR_ACMD41_BIT_EQUAL_NO_OCR_BUSY)
//----->         ||
//----->         (Card_Err_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CARD_ERR_BIT_EQUAL_NO_ERROR)
//----->         ||
//----->         ( 
//----->           Bit_39_Response_R3_ie_Bit15_MMCSD_adp_rsp7_reg_after_CMD1_OR_ACMD41 
//----->           != 
//----->           BIT39_RESPONSE_R3_ie_BIT15_MMCSD_ADP_RSP7_REG_AFTER_CMD1_OR_ACMD41_EQUAL1
//----->         )
//----->          //Bit_39_Response_R3_ie_Bit15_MMCSD_adp_rsp7_reg_after_CMD1_OR_ACMD41 = 0 <=> card has not finished the power up //----->routine
//----->        )  
//----->        &&
//----->        (Counter_time_out++ < TIME_OUT)
//----->      );
//----->      
//-----> return(result_value);      
//----->}
//----->
//----->//-------------------------------------------------------------------------
//----->// NAME        : Cmd2
//----->// DESCRIPTION : set mmcsd command 2 with its arguments, ALL_SEND_CID;
//----->//               asks any card to send the CID numbers on the CMD line.
//----->//               Any card that is connected to the host will respond.
//----->//
//----->// PARAMETERS  :  
//----->//		
//----->//		                                                       
//----->// RETURN VALUE: 
//----->// LIMITATIONS : None                                                         
//----->//-------------------------------------------------------------------------  
//----->void Cmd2(void)
//----->{
//-----> 
//-----> UWORD8 Counter_time_out;
//----->
//----->  //////////////////////CMD2///////////////////////
//----->
//----->  //configure interrupt int_mask_reg RQUE : a bit of int_mask_reg at 1 <=> demask the interrupt,
//----->  //a bit of int_mask_reg at 0 <=> mask the interrupt
//----->  
//----->
//----->  write_word16_at_address16((DEMASK_ALL_IRQ_IN_MMCSD_ADP_IE_REG & MASK_OF_MMCSD_ADP_IE_REG), MMCSD_ADP_IE_REG_ADDR);
//----->
//----->  Counter_time_out = 0;
//----->  Counter_IRQ_MMCSD = 0;
//----->  Content_of_MMCSDAdp_Stat_Reg = INITIALISATION_CONTENT_OF_MMCSD_ADP_STAT_REG;
//----->  do
//----->  {
//----->   End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD;
//----->   Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg = //----->NEGATION_OF_MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR;
//----->   Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR;
//----->   
//----->   //////////////////////////////////////////////
//----->   //CMD2:ALL_SEND_CID,
//----->   //This command CMD2 :asks all cards to send their CID (Card Identification number) numbers
//----->   //
//----->   //Bits of mmc_adp_st_reg concerned:
//----->   //---------------bit 0  : End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg at 1 it's OK----------------
//----->   //---------------bit 7  : Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg at 0 it's OK----------------   
//----->   //---------------bit 8  : Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg at 0 it's OK---------------   
//----->   //
//----->   //RESPONSE R2: READ ALL ADP_RESP_REGi 1 =< i =< 8.Read the bits 1 <-> 127 in all ADP_RESP_REGi (CID card) is not necessary.
//----->   //it would be better :
//----->   //1)to set ARGUMENTS_OF_CMD3 and CMD3
//----->   //2)to wait the signal irq_o_sn at low state, indicating an IRQ, and consequently read the card status
//----->   //in the RESPONSE R1 of CMD3, read response R1 bits 39<->8 to detect CARD_STATUS_IS_IN_IDENT_STATE_IN_RESPONSE_R1_OF_CMD3
//----->   RES_Set(0xCD02);//detection of CMD    
//----->   //----->   MMC_SetMmcCommand(NO_ARGUMENT_BITS_IN_MMC_ARG_REG_1,NO_ARGUMENT_BITS_IN_MMC_ARG_REG_2,CMD2);
//----->   MMC_SetMmcCommand(NO_ARGUMENT_BITS_IN_MMCSD_ARG1_REG, MMCSD_ADP_ARG1_REG_ADDR,
//----->                   NO_ARGUMENT_BITS_IN_MMCSD_ARG2_REG, MMCSD_ADP_ARG2_REG_ADDR,
//----->                   CMD2, MMCSD_ADP_CMD_REG_ADDR);
//----->   //CMD2
//----->   //////////////////////////////////////////////
//----->   
//----->   Test_IRQ();
//----->
//----->  }
//----->  while(
//----->         ( 
//----->          (End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD)
//----->          || 
//----->          (Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR)
//----->          ||
//----->          (Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR)
//----->         ) 
//----->         &&
//----->         (Counter_time_out++<TIME_OUT)
//----->       );
//----->  
//----->      //  if(End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD)
//----->      //  RES_Set(RES_BAD); 
//----->      //  else RES_Set(RES_OK);
//----->        
//----->      //  if(Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg != //----->MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR)
//----->      //  RES_Set(RES_BAD); 
//----->      //  else RES_Set(RES_OK);
//----->         
//----->      //  if(Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR)
//----->      //  RES_Set(RES_BAD); 
//----->      //  else RES_Set(RES_OK);
//----->
//----->
//----->  ////////////////////////CMD2//////////////////////// 
//----->}
//----->
//----->
//----->//-------------------------------------------------------------------------
//----->// NAME        : Cmd3        
//----->// DESCRIPTION : set mmcsd command 3 with its arguments,SEND_RELATIVE_ADDR,
//----->//               ask the card to publish a new relative address(RCA).
//----->// PARAMETERS  :  
//----->//		
//----->//		                                                       
//----->// RETURN VALUE: 
//----->// LIMITATIONS : None                                                         
//----->//-------------------------------------------------------------------------
//----->void Cmd3(UWORD16 relative_card_address)
//----->{
//-----> 
//-----> UWORD8 Counter_time_out;
//----->  ///////////////////////CMD3////////////////////
//----->  
//----->  //configure interrupt int_mask_reg RQUE : a bit of int_mask_reg at 1 <=> demask the interrupt,
//----->  //a bit of int_mask_reg at 0 <=> mask the interrupt
//----->  
//----->  write_word16_at_address16((DEMASK_ALL_IRQ_IN_MMCSD_ADP_IE_REG & MASK_OF_MMCSD_ADP_IE_REG), MMCSD_ADP_IE_REG_ADDR);
//----->
//----->  Counter_time_out = 0;
//----->  Counter_IRQ_MMCSD = 0;
//----->  Content_of_MMCSDAdp_Stat_Reg = INITIALISATION_CONTENT_OF_MMCSD_ADP_STAT_REG;  
//----->  do
//----->  {
//----->   End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD;
//----->   Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg = //----->NEGATION_OF_MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR;
//----->   Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR;
//----->   Card_Err_Bit_of_MMCSD_Adp_Stat_Reg = NEGATION_OF_MMCSD_ADP_STAT_REG_CARD_ERR_BIT_EQUAL_NO_ERROR;
//----->   Response_R1_IN_MMCSD_adp_rsp6_reg_of_cmd3 = NEGATION_OF_CARD_STATUS_IS_IN_IDENT_STATE;
//----->   
//----->   //////////////////////////////////////////////
//----->   //CMD3:SET_RELATIVE_ADDR,
//----->   //This command CMD3 sets relative adress,i-e sets an arbitrary card number of identification(RCA),
//----->   //given by the user.this arbitrary number is set in the arg_reg_2.
//----->   //REPONSE:READ RESPONSE R1, READ ADP_RESP_REG7 AND ADP_RESP_REG8 read bits card status : bits 8 <-> 39 of response R1
//----->   //to detect CARD_STATUS_IS_IN_IDENT_STATE_IN_RESPONSE_R1_OF_CMD3
//----->   //
//----->   //Bits of mmc_adp_st_reg concerned:
//----->   //---------------bit 0  : End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg at 1 it's OK----------------
//----->   //---------------bit 7  : Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg at 0 it's OK----------------   
//----->   //---------------bit 8  : Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg at 0 it's OK--------------- 
//----->   //---------------bit14  : Card_Err_Bit_of_MMCSD_Adp_Stat_Reg at 0 it's OK----------
//----->   //Response in Resp_Reg  : Response_R1_IN_MMCSD_adp_rsp6_reg_of_cmd3 = CARD_STATUS_IS_IN_IDENT_STATE it's OK
//----->   RES_Set(0xCD03);//detection of CMD
//----->   MMC_SetMmcCommand(NO_ARGUMENT_BITS_IN_MMCSD_ARG1_REG, MMCSD_ADP_ARG1_REG_ADDR,
//----->                   relative_card_address, MMCSD_ADP_ARG2_REG_ADDR,
//----->                   CMD3MMC, MMCSD_ADP_CMD_REG_ADDR);
//----->   //CMD3
//----->   //////////////////////////////////////////////
//----->   
//----->    Test_IRQ();
//----->  
//----->  }
//----->  while(
//----->        (
//----->         (End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD)
//----->         || 
//----->         (Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR)
//----->         ||
//----->         (Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR)
//----->         ||
//----->         (Card_Err_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CARD_ERR_BIT_EQUAL_NO_ERROR)
//----->         ||
//----->         (Response_R1_IN_MMCSD_adp_rsp6_reg_of_cmd3 =! CARD_STATUS_IS_IN_IDENT_STATE)
//----->        )
//----->        && 
//----->        (Counter_time_out++ < TIME_OUT)
//----->      );
//----->      
//----->     //  if(End_of_Cmd_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_END_OF_CMD_BIT_EQUAL_END_OF_CMD)
//----->     //  RES_Set(RES_BAD);
//----->     //  else RES_Set(RES_OK);
//----->       
//----->     //  if(Cmd_Timeout_Bit_of_MMCSD_Adp_Stat_Reg != //----->MMCSD_ADP_STAT_REG_CMD_TIMEOUT_NO_RESPONSE_BIT_EQUAL_NO_CMD_TIME_OUT_ERROR)
//----->     //  RES_Set(RES_BAD);
//----->     //  else RES_Set(RES_OK);
//----->         
//----->     //  if(Cmd_Crc_Error_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CMD_CRC_ERROR_BIT_EQUAL_NO_CRC_ERROR)
//----->     //  RES_Set(RES_BAD);
//----->     //  else RES_Set(RES_OK);
//----->       
//----->     //  if(Card_Err_Bit_of_MMCSD_Adp_Stat_Reg != MMCSD_ADP_STAT_REG_CARD_ERR_BIT_EQUAL_NO_ERROR)
//----->     //  RES_Set(RES_BAD);
//----->     //  else RES_Set(RES_OK);
//----->         
//----->     //  if(Response_R1_IN_MMCSD_adp_rsp6_reg_of_cmd3 =! CARD_STATUS_IS_IN_IDENT_STATE)
//----->     //  RES_Set(RES_BAD);

⌨️ 快捷键说明

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