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

📄 bsp_sdio_sd.txt

📁 stm32-SDIO+FatFS文件系统txt-int-ascii
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00008e  200f              MOVS     r0,#0xf               ;2577
000090  e7cd              B        |L5.46|
                  |L5.146|
000092  4640              MOV      r0,r8                 ;2580
000094  e7cb              B        |L5.46|
;;;2582   
                          ENDP

000096  0000              DCW      0x0000
                  |L5.152|
                          DCD      0x40018000

                          AREA ||i.CmdResp7Error||, CODE, READONLY, ALIGN=2

                  CmdResp7Error PROC
;;;2270     */
;;;2271   static SD_Error CmdResp7Error(void)
000000  b570              PUSH     {r4-r6,lr}
;;;2272   {
;;;2273     SD_Error errorstatus = SD_OK;
000002  262a              MOVS     r6,#0x2a
;;;2274     uint32_t status;
;;;2275     uint32_t timeout = SDIO_CMD0TIMEOUT;
000004  f44f3580          MOV      r5,#0x10000
;;;2276   
;;;2277     status = SDIO->STA;
000008  480f              LDR      r0,|L6.72|
00000a  6b44              LDR      r4,[r0,#0x34]
;;;2278   
;;;2279     while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)) && (timeout > 0))
00000c  e002              B        |L6.20|
                  |L6.14|
;;;2280     {
;;;2281       timeout--;
00000e  1e6d              SUBS     r5,r5,#1
;;;2282       status = SDIO->STA;
000010  480d              LDR      r0,|L6.72|
000012  6b44              LDR      r4,[r0,#0x34]
                  |L6.20|
000014  f0140f45          TST      r4,#0x45              ;2279
000018  d101              BNE      |L6.30|
00001a  2d00              CMP      r5,#0                 ;2279
00001c  d1f7              BNE      |L6.14|
                  |L6.30|
;;;2283     }
;;;2284   
;;;2285     if ((timeout == 0) || (status & SDIO_FLAG_CTIMEOUT))
00001e  b115              CBZ      r5,|L6.38|
000020  f0140f04          TST      r4,#4
000024  d005              BEQ      |L6.50|
                  |L6.38|
;;;2286     {
;;;2287       /*!< Card is not V2.0 complient or card does not support the set voltage range */
;;;2288       errorstatus = SD_CMD_RSP_TIMEOUT;
000026  2603              MOVS     r6,#3
;;;2289       SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);
000028  2004              MOVS     r0,#4
00002a  f7fffffe          BL       SDIO_ClearFlag
;;;2290       return(errorstatus);
00002e  4630              MOV      r0,r6
                  |L6.48|
;;;2291     }
;;;2292   
;;;2293     if (status & SDIO_FLAG_CMDREND)
;;;2294     {
;;;2295       /*!< Card is SD V2.0 compliant */
;;;2296       errorstatus = SD_OK;
;;;2297       SDIO_ClearFlag(SDIO_FLAG_CMDREND);
;;;2298       return(errorstatus);
;;;2299     }
;;;2300     return(errorstatus);
;;;2301   }
000030  bd70              POP      {r4-r6,pc}
                  |L6.50|
000032  f0140f40          TST      r4,#0x40              ;2293
000036  d005              BEQ      |L6.68|
000038  262a              MOVS     r6,#0x2a              ;2296
00003a  2040              MOVS     r0,#0x40              ;2297
00003c  f7fffffe          BL       SDIO_ClearFlag
000040  4630              MOV      r0,r6                 ;2298
000042  e7f5              B        |L6.48|
                  |L6.68|
000044  4630              MOV      r0,r6                 ;2300
000046  e7f3              B        |L6.48|
;;;2302   
                          ENDP

                  |L6.72|
                          DCD      0x40018000

                          AREA ||i.FindSCR||, CODE, READONLY, ALIGN=2

                  FindSCR PROC
;;;2861     */
;;;2862   static SD_Error FindSCR(uint16_t rca, uint32_t *pscr)
000000  e92d41fc          PUSH     {r2-r8,lr}
;;;2863   {
000004  4607              MOV      r7,r0
000006  460d              MOV      r5,r1
;;;2864     uint32_t index = 0;
000008  2600              MOVS     r6,#0
;;;2865     SD_Error errorstatus = SD_OK;
00000a  242a              MOVS     r4,#0x2a
;;;2866     uint32_t tempscr[2] = {0, 0};
00000c  2000              MOVS     r0,#0
00000e  9000              STR      r0,[sp,#0]
000010  9001              STR      r0,[sp,#4]
;;;2867   
;;;2868     /*!< Set Block Size To 8 Bytes */
;;;2869     /*!< Send CMD55 APP_CMD with argument as card's RCA */
;;;2870     SDIO_CmdInitStructure.SDIO_Argument = (uint32_t)8;
000012  2008              MOVS     r0,#8
000014  495b              LDR      r1,|L7.388|
000016  6008              STR      r0,[r1,#0]  ; SDIO_CmdInitStructure
;;;2871     SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SET_BLOCKLEN;
000018  2010              MOVS     r0,#0x10
00001a  6048              STR      r0,[r1,#4]  ; SDIO_CmdInitStructure
;;;2872     SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
00001c  2040              MOVS     r0,#0x40
00001e  6088              STR      r0,[r1,#8]  ; SDIO_CmdInitStructure
;;;2873     SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
000020  2000              MOVS     r0,#0
000022  60c8              STR      r0,[r1,#0xc]  ; SDIO_CmdInitStructure
;;;2874     SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
000024  f44f6080          MOV      r0,#0x400
000028  6108              STR      r0,[r1,#0x10]  ; SDIO_CmdInitStructure
;;;2875     SDIO_SendCommand(&SDIO_CmdInitStructure);
00002a  4608              MOV      r0,r1
00002c  f7fffffe          BL       SDIO_SendCommand
;;;2876   
;;;2877     errorstatus = CmdResp1Error(SD_CMD_SET_BLOCKLEN);
000030  2010              MOVS     r0,#0x10
000032  f7fffffe          BL       CmdResp1Error
000036  4604              MOV      r4,r0
;;;2878   
;;;2879     if (errorstatus != SD_OK)
000038  2c2a              CMP      r4,#0x2a
00003a  d002              BEQ      |L7.66|
;;;2880     {
;;;2881       return(errorstatus);
00003c  4620              MOV      r0,r4
                  |L7.62|
;;;2882     }
;;;2883   
;;;2884     /*!< Send CMD55 APP_CMD with argument as card's RCA */
;;;2885     SDIO_CmdInitStructure.SDIO_Argument = (uint32_t) RCA << 16;
;;;2886     SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_APP_CMD;
;;;2887     SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
;;;2888     SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
;;;2889     SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
;;;2890     SDIO_SendCommand(&SDIO_CmdInitStructure);
;;;2891   
;;;2892     errorstatus = CmdResp1Error(SD_CMD_APP_CMD);
;;;2893   
;;;2894     if (errorstatus != SD_OK)
;;;2895     {
;;;2896       return(errorstatus);
;;;2897     }
;;;2898     SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
;;;2899     SDIO_DataInitStructure.SDIO_DataLength = 8;
;;;2900     SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_8b;
;;;2901     SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToSDIO;
;;;2902     SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
;;;2903     SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;
;;;2904     SDIO_DataConfig(&SDIO_DataInitStructure);
;;;2905   
;;;2906   
;;;2907     /*!< Send ACMD51 SD_APP_SEND_SCR with argument as 0 */
;;;2908     SDIO_CmdInitStructure.SDIO_Argument = 0x0;
;;;2909     SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SD_APP_SEND_SCR;
;;;2910     SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
;;;2911     SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
;;;2912     SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
;;;2913     SDIO_SendCommand(&SDIO_CmdInitStructure);
;;;2914   
;;;2915     errorstatus = CmdResp1Error(SD_CMD_SD_APP_SEND_SCR);
;;;2916   
;;;2917     if (errorstatus != SD_OK)
;;;2918     {
;;;2919       return(errorstatus);
;;;2920     }
;;;2921   
;;;2922     while (!(SDIO->STA & (SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR)))
;;;2923     {
;;;2924       if (SDIO_GetFlagStatus(SDIO_FLAG_RXDAVL) != RESET)
;;;2925       {
;;;2926         *(tempscr + index) = SDIO_ReadData();
;;;2927         index++;
;;;2928       }
;;;2929     }
;;;2930   
;;;2931     if (SDIO_GetFlagStatus(SDIO_FLAG_DTIMEOUT) != RESET)
;;;2932     {
;;;2933       SDIO_ClearFlag(SDIO_FLAG_DTIMEOUT);
;;;2934       errorstatus = SD_DATA_TIMEOUT;
;;;2935       return(errorstatus);
;;;2936     }
;;;2937     else if (SDIO_GetFlagStatus(SDIO_FLAG_DCRCFAIL) != RESET)
;;;2938     {
;;;2939       SDIO_ClearFlag(SDIO_FLAG_DCRCFAIL);
;;;2940       errorstatus = SD_DATA_CRC_FAIL;
;;;2941       return(errorstatus);
;;;2942     }
;;;2943     else if (SDIO_GetFlagStatus(SDIO_FLAG_RXOVERR) != RESET)
;;;2944     {
;;;2945       SDIO_ClearFlag(SDIO_FLAG_RXOVERR);
;;;2946       errorstatus = SD_RX_OVERRUN;
;;;2947       return(errorstatus);
;;;2948     }
;;;2949     else if (SDIO_GetFlagStatus(SDIO_FLAG_STBITERR) != RESET)
;;;2950     {
;;;2951       SDIO_ClearFlag(SDIO_FLAG_STBITERR);
;;;2952       errorstatus = SD_START_BIT_ERR;
;;;2953       return(errorstatus);
;;;2954     }
;;;2955   
;;;2956     /*!< Clear all the static flags */
;;;2957     SDIO_ClearFlag(SDIO_STATIC_FLAGS);
;;;2958   
;;;2959     *(pscr + 1) = ((tempscr[0] & SD_0TO7BITS) << 24) | ((tempscr[0] & SD_8TO15BITS) << 8) | ((tempscr[0] & SD_16TO23BITS) >> 8) | ((tempscr[0] & SD_24TO31BITS) >> 24);
;;;2960   
;;;2961     *(pscr) = ((tempscr[1] & SD_0TO7BITS) << 24) | ((tempscr[1] & SD_8TO15BITS) << 8) | ((tempscr[1] & SD_16TO23BITS) >> 8) | ((tempscr[1] & SD_24TO31BITS) >> 24);
;;;2962   
;;;2963     return(errorstatus);
;;;2964   }
00003e  e8bd81fc          POP      {r2-r8,pc}
                  |L7.66|
000042  4851              LDR      r0,|L7.392|
000044  6800              LDR      r0,[r0,#0]            ;2885  ; RCA
000046  0400              LSLS     r0,r0,#16             ;2885
000048  494e              LDR      r1,|L7.388|
00004a  6008              STR      r0,[r1,#0]            ;2885  ; SDIO_CmdInitStructure
00004c  2037              MOVS     r0,#0x37              ;2886
00004e  6048              STR      r0,[r1,#4]            ;2886  ; SDIO_CmdInitStructure
000050  2040              MOVS     r0,#0x40              ;2887
000052  6088              STR      r0,[r1,#8]            ;2887  ; SDIO_CmdInitStructure
000054  2000              MOVS     r0,#0                 ;2888
000056  60c8              STR      r0,[r1,#0xc]          ;2888  ; SDIO_CmdInitStructure
000058  f44f6080          MOV      r0,#0x400             ;2889
00005c  6108              STR      r0,[r1,#0x10]         ;2889  ; SDIO_CmdInitStructure
00005e  4608              MOV      r0,r1                 ;2890
000060  f7fffffe          BL       SDIO_SendCommand
000064  2037              MOVS     r0,#0x37              ;2892
000066  f7fffffe          BL       CmdResp1Error
00006a  4604              MOV      r4,r0                 ;2892
00006c  2c2a              CMP      r4,#0x2a              ;2894
00006e  d001              BEQ      |L7.116|
000070  4620              MOV      r0,r4                 ;2896
000072  e7e4              B        |L7.62|
                  |L7.116|
000074  4845              LDR      r0,|L7.396|
000076  4946              LDR      r1,|L7.400|
000078  6008              STR      r0,[r1,#0]            ;2898  ; SDIO_DataInitStructure
00007a  2008              MOVS     r0,#8                 ;2899
00007c  6048              STR      r0,[r1,#4]            ;2899  ; SDIO_DataInitStructure
00007e  2030              MOVS     r0,#0x30              ;2900
000080  6088              STR      r0,[r1,#8]            ;2900  ; SDIO_DataInitStructure
000082  2002              MOVS     r0,#2                 ;2901
000084  60c8              STR      r0,[r1,#0xc]          ;2901  ; SDIO_DataInitStructure
000086  2000              MOVS     r0,#0                 ;2902
000088  6108              STR      r0,[r1,#0x10]         ;2902  ; SDIO_DataInitStructure
00008a  2001              MOVS     r0,#1                 ;2903
00008c  6148              STR      r0,[r1,#0x14]         ;2903  ; SDIO_DataInitStructure
00008e  4608              MOV      r0,r1                 ;2904
000090  f7fffffe          BL       SDIO_DataConfig
000094  2000              MOVS     r0,#0                 ;2908
000096  493b              LDR      r1,|L7.388|
000098  6008              STR      r0,[r1,#0]            ;2908  ; SDIO_CmdInitStructure
00009a  2033              MOVS     r0,#0x33              ;2909
00009c  6048              STR      r0,[r1,#4]            ;2909  ; SDIO_CmdInitStructure
00009e  2040              MOVS     r0,#0x40              ;2910
0000a0  6088              STR      r0,[r1,#8]            ;2910  ; SDIO_CmdInitStructure
0000a2  2000              MOVS     r0,#0                 ;2911
0000a4  60c8              STR      r0,[r1,#0xc]          ;2911  ; SDIO_CmdInitStructure
0000a6  f44f6080          MOV      r0,#0x400             ;2912
0000aa  6108              STR      r0,[r1,#0x10]         ;2912  ; SDIO_CmdInitStructure
0000ac  4608              MOV      r0,r1                 ;2913
0000ae  f7fffffe          BL       SDIO_SendCommand
0000b2  2033              MOVS     r0,#0x33              ;2915
0000b4  f7fffffe          BL       CmdResp1Error
0000b8  4604              MOV      r4,r0                 ;2915
0000ba  2c2a              CMP      r4,#0x2a              ;2917
0000bc  d001              BEQ      |L7.194|
0000be  4620              MOV      r0,r4                 ;2919
0000c0  e7bd              B        |L7.62|
                  |L7.194|
0000c2  e009              B        |L7.216|
                  |L7.196|
0000c4  f44f1000          MOV      r0,#0x200000          ;2924
0000c8  f7fffffe          BL       SDIO_GetFlagStatus
0000cc  b120              CBZ      r0,|L7.216|
0000ce  f7fffffe          BL       SDIO_ReadData
0000d2  f84d0026          STR      r0,[sp,r6,LSL #2]     ;2926
0000d6  1c76              ADDS     r6,r6,#1              ;2927
                  |L7.216|
0000d8  482e              LDR      r0,|L7.404|
0000da  6b40              LDR      r0,[r0,#0x34]         ;2922
0000dc  f240612a          MOV      r1,#0x62a             ;2922
0000e0  4208              TST      r0,r1                 ;2922
0000e2  d0ef              BEQ      |L7.196|
0000e4  2008              MOVS     r0,#8                 ;2931
0000e6  f7fffffe          BL       SDIO_GetFlagStatus
0000ea  b128              CBZ      r0,|L7.248|
0000ec  2008              MOVS     r0,#8                 ;2933
0000ee  f7fffffe          BL       SDIO_ClearFlag

⌨️ 快捷键说明

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