Keil Logo Arm Logo

Technical Support

On-Line Manuals

RL-ARM User's Guide

RL-RTX RL-FlashFS RL-TCPnet RL-CAN RL-USB Example Programs Library Reference Data Types BIT BOOL CAN_ERROR CAN_msg CDC_LINE_CODING DCACHE FAT_VI FATINFO FCACHE FILE FINFO CID_REG FATVAR Media_INFO OS_ID RL_TIME S8 S16 S32 S64 U8 U16 U32 U64 Include Files can_cfg.h file_config.h net_config.h rtl.h rtx_can.h rtx_config.h stdio.h Reference _alloc_box _calloc_box _declare_box _declare_box8 _free_box _init_box _init_box8 accept ADC_IF_GetRequest ADC_IF_SetRequest arp_cache_ip arp_cache_mac arp_get_info bind CAN_init CAN_receive CAN_request CAN_rx_object CAN_send CAN_set CAN_start CAN_tx_object cgi_func cgi_process_data cgi_process_var cgx_content_type closesocket cls.config cls.get_last_error cls.init cls.unconfig cls.uninit com_getchar com_putchar com_tx_active connect dhcp_cbfunc dhcp_disable efs.EraseChip efs.EraseSector efs.Init efs.ProgramPage efs.ReadData efs.UnInit fanalyse fat.DeviceCtrl fat.Init fat.ReadInfo fat.ReadSect fat.UnInit fat.WriteSect fattrib fcheck fclose fdefrag fdelete feof ferror ffind fflush fformat ffree fgetc fgets finit FIQ_Handler fopen fprintf fputc fputs fread frename fs_get_date fs_get_time fscanf fseek ftell ftp_accept_host ftp_check_account ftp_fclose ftp_fdelete ftp_ffind ftp_file_access ftp_fopen ftp_fread ftp_frename ftp_fwrite ftp_get_user_id ftpc_cbfunc ftpc_connect ftpc_fclose ftpc_fopen ftpc_fread ftpc_fwrite funinit fvol fwrite get_host_by_name gethostbyname getpeername getsockname HID_GetReport HID_SetReport http_accept_host http_check_account http_date http_fclose http_fgets http_file_access http_finfo http_fopen http_fread http_get_content_type http_get_info http_get_lang http_get_session http_get_user_id http_get_var icmp_ping igmp_join igmp_leave init_ethernet init_serial init_TcpNet int_disable_eth int_enable_eth interrupt_ethernet ioc_getcb ioc_init ioc_read_info ioc_read_sect ioc_uninit ioc_write_sect ioctlsocket isr_evt_set isr_mbx_check isr_mbx_receive isr_mbx_send isr_sem_send isr_tsk_get listen main_TcpNet mci.BusMode mci.BusSpeed mci.BusWidth mci.CheckMedia mci.Command mci.Delay mci.Init mci.ReadBlock mci.SetDma mci.UnInit mci.WriteBlock modem_dial modem_hangup modem_init modem_listen modem_online modem_process modem_run MSC_Inquiry MSC_MemoryRead MSC_MemoryVerify MSC_MemoryWrite nand.BlockErase nand.Init nand.PageRead nand.PageWrite nand.UnInit os_dly_wait os_evt_clr os_evt_get os_evt_set os_evt_wait_and os_evt_wait_or os_itv_set os_itv_wait os_mbx_check os_mbx_declare os_mbx_init os_mbx_send os_mbx_wait os_mut_init os_mut_release os_mut_wait os_resume os_sem_init os_sem_send os_sem_wait os_suspend os_sys_init os_sys_init_prio os_sys_init_user OS_Tick_Handler os_tick_init os_tick_irqack os_time_get os_tmr_call os_tmr_create os_tmr_kill os_tsk_create os_tsk_create_ex os_tsk_create_user os_tsk_create_user_ex os_tsk_delete os_tsk_delete_self os_tsk_pass os_tsk_prio os_tsk_prio_self os_tsk_self poll_ethernet ppp_close ppp_connect ppp_is_up ppp_listen recv recvfrom rewind send send_frame sendto slip_close slip_connect slip_is_up slip_listen smtp_accept_auth smtp_cbfunc smtp_connect snmp_set_community snmp_trap sntp_get_time socket spi.BusSpeed spi.CheckMedia spi.Init spi.RecBuf spi.Send spi.SendBuf spi.SetSS spi.UnInit tcp_abort tcp_check_send tcp_close tcp_connect tcp_get_buf tcp_get_socket tcp_get_state tcp_listen tcp_max_dsize tcp_release_socket tcp_reset_window tcp_send tftp_accept_host tftp_fclose tftp_fopen tftp_fread tftp_fwrite tftpc_fclose tftpc_fopen tftpc_fread tftpc_fwrite tftpc_get tftpc_put timer_tick tnet_accept_host tnet_cbfunc tnet_ccmp tnet_check_account tnet_get_info tnet_get_user_id tnet_msg_poll tnet_process_cmd tnet_set_delay tsk_lock tsk_unlock udp_close udp_get_buf udp_get_socket udp_mcast_ttl udp_open udp_release_socket udp_send ungetc USB_Core USB_Device USB_EndPointNumber USB_EndPoint0 USB_IRQHandler USB_ISR USB_ReadEP USB_TaskInit USB_WriteEP usbd_adc_init USBD_CDC_ACM_DataAvailable USBD_CDC_ACM_DataRead USBD_CDC_ACM_DataSend USBD_CDC_ACM_GetChar USBD_CDC_ACM_Notify USBD_CDC_ACM_PortGetLineCoding USBD_CDC_ACM_PortInitialize USBD_CDC_ACM_PortReset USBD_CDC_ACM_PortSetControlLineState USBD_CDC_ACM_PortSetLineCoding USBD_CDC_ACM_PortUninitialize USBD_CDC_ACM_PutChar usbd_cdc_init usbd_cdc_ser_availchar usbd_cdc_ser_closeport usbd_cdc_ser_initport usbd_cdc_ser_linestate usbd_cdc_ser_openport usbd_cdc_ser_read usbd_cdc_ser_write usbd_cls_dev_req usbd_cls_ep_req usbd_cls_if_req usbd_cls_init usbd_cls_sof usbd_configured usbd_connect usbd_hid_get_protocol usbd_hid_get_report usbd_hid_get_report_trigger usbd_hid_init usbd_hid_set_protocol usbd_hid_set_report usbd_init usbd_msc_init usbd_msc_read_sect usbd_msc_start_stop usbd_msc_write_sect usbd_reset_core usbd_vcom_chkserstate usbd_vcom_serial2usb usbd_vcom_usb2serial usbh_ehci_hw_delay_ms usbh_ehci_hw_get_capabilities usbh_ehci_hw_init usbh_ehci_hw_irq_en usbh_ehci_hw_pins_config usbh_ehci_hw_port_power usbh_ehci_hw_reg_rd usbh_ehci_hw_reg_wr usbh_engine usbh_engine_all usbh_get_error_string usbh_get_last_error usbh_hid_data_in usbh_hid_data_in_callback usbh_hid_data_out usbh_hid_get_last_error usbh_hid_kbd_getkey usbh_hid_mouse_getdata usbh_hid_parse_report_desc usbh_hid_status usbh_hw_delay_ms usbh_hw_ep_add usbh_hw_ep_config usbh_hw_ep_remove usbh_hw_get_capabilities usbh_hw_get_connect usbh_hw_get_speed usbh_hw_init usbh_hw_pins_config usbh_hw_port_power usbh_hw_port_reset usbh_hw_urb_cancel usbh_hw_urb_submit usbh_init usbh_init_all usbh_mem_alloc usbh_mem_free usbh_mem_init usbh_msc_get_last_error usbh_msc_read usbh_msc_read_config usbh_msc_status usbh_msc_write usbh_ohci_hw_delay_ms usbh_ohci_hw_get_capabilities usbh_ohci_hw_init usbh_ohci_hw_irq_en usbh_ohci_hw_pins_config usbh_ohci_hw_port_power usbh_ohci_hw_reg_rd usbh_ohci_hw_reg_wr usbh_transfer usbh_uninit usbh_uninit_all Library Files Appendix

RL-ARM User's Guide

mci.Command

Summary
#include <file_config.h>

BOOL Command  (
     U8   cmd,           /* Command code for SD Card    */
     U32  arg,           /* Command Argument            */
     U32  resp_type,     /* Command Response type       */
     U32* rp);           /* Buffer to recive a response */
Description

The function Command sends a command to the Flash memory card.

The parameter cmd is one of the available SD/MMC Commands. The parameter arg is a 32-bit SD Command argument. The parameter resp_type specifies the expected response type:

Type Description
RESP_NONE No response expected.
RESP_SHORT 4-byte short response expected.
RESP_LONG 16-byte long response expected.

The parameter rp is a pointer to a buffer to store the response.

The function is part of the MCI Driver. The prototype is defined in the file File_Config.h. Developers must customize the function.

Return Value
  • __TRUE - on success.
  • __FALSE - on failure.
See Also

mci.BusMode, mci.BusSpeed, mci.BusWidth, mci.CheckMedia, mci.Delay, mci.Init, mci.ReadBlock, mci.SetDma, mci.UnInit, mci.WriteBlock

Example
/* MCI Device Driver Control Block */
MCI_DRV mci0_drv = {
  Init,
  UnInit,
  Delay,
  BusMode,
  BusWidth,
  BusSpeed,
  Command,
  ReadBlock,
  WriteBlock,
  NULL,
  CheckMedia
};

/* Send a Command to Flash card and get a response. */
static BOOL Command (U8 cmd, U32 arg, U32 resp_type, U32 *rp)  {
  U32 cmdval,stat;

  cmd   &= 0x3F;
  cmdval = 0x400 | cmd;
  switch (resp_type)  {
    case RESP_SHORT:
      cmdval |= 0x40;
      break;
    case RESP_LONG:
      cmdval |= 0xC0;
      break;
  }
  MCI_ARGUMENT = arg;
  MCI_COMMAND  = cmdval;                               /* Send the command. */

  if (resp_type == RESP_NONE)  {
    while (MCI_STATUS & MCI_CMD_ACTIVE);               /* Wait until command finished. */
    MCI_CLEAR = 0x7FF;
    return (__TRUE);
  }

  for (;;)  {
    stat = MCI_STATUS;
    if (stat & MCI_CMD_TIMEOUT)  {
      MCI_CLEAR = stat & MCI_CLEAR_MASK;
      return (__FALSE);
    }
    if (stat & MCI_CMD_CRC_FAIL)  {
      MCI_CLEAR = stat & MCI_CLEAR_MASK;
      if ((cmd == SEND_OP_COND)      ||
          (cmd == SEND_APP_OP_COND)  ||
          (cmd == STOP_TRANS))  {
        MCI_COMMAND = 0;
        break;
      }
      return (__FALSE);
    }
    if (stat & MCI_CMD_RESP_END)  {
      MCI_CLEAR = stat & MCI_CLEAR_MASK;
      break;
    }
  }
  if ((MCI_RESP_CMD & 0x3F) != cmd)  {
    if ((cmd != SEND_OP_COND)     &&
        (cmd != SEND_APP_OP_COND) &&
        (cmd != ALL_SEND_CID)     &&
        (cmd != SEND_CSD))         {
      return (__FALSE);
    }
  }

  rp[0] = MCI_RESP0;                                   /* Read MCI response registers */
  if (resp_type == RESP_LONG) {
    rp[1] = MCI_RESP1;
    rp[2] = MCI_RESP2;
    rp[3] = MCI_RESP3;
  }
  return (__TRUE);
}

Keil logo

Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.