熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

"); //-->

博客專欄

EEPW首頁 > 博客 > 詳解 STM32 之 SD 卡(3)

詳解 STM32 之 SD 卡(3)

發(fā)布人:魚鷹談單片機(jī) 時(shí)間:2022-12-21 來源:工程師 發(fā)布文章

八、SD卡疑惑

1、SD卡擦除后,其中的內(nèi)容是0,還是1 ? 

  The data at the card after an erase operation is either '0' or '1', depends on the card vendor.The SCR register bit DATA_STAT_AFTER_ERASE (bit 55) defines whether it is '0' or '1'.(摘自《SD Specifications_Part_1_Physical_Layer_Specification_Ver3.00_Final_090416.pdf》)

  也就是說這是芯片廠商生產(chǎn)工藝決定的,可以通過SCR寄存器的 DATA_STAT_AFTER_ERASE位得知。

 2、在SDIO_DCTRL中設(shè)置傳輸Block的要求

  Block大小決定了主機(jī)在發(fā)送數(shù)據(jù)時(shí),發(fā)送到什么程度時(shí)開始發(fā)送CRC校驗(yàn)碼;而在接收數(shù)據(jù)時(shí),在接收到什么程度時(shí)開始把SD卡的數(shù)據(jù)作為CRC校驗(yàn)碼并進(jìn)行校驗(yàn)。Block還可能影響著其他的時(shí)序。在STM32的SDIO寄存器組中,SDIO_DCTRL中的位段DBLOCKSIZE決定主機(jī)Block大小。

  在摘自《Simplified_SD_Host_Controller_Spec.pdf》的引文中,提到這樣的配置要求:主機(jī)的Block一定要與SD卡設(shè)置的Block一樣大小,這顯然是必要的。我們經(jīng)常設(shè)置SD卡的Block大小是512Bytes,所以設(shè)置DBLOCKSIZE為9(2^9 = 512)。

 3、STM32固件庫(kù)“stm32_eval_sdio_sd.c version v4.5.0”偶遇BUG

  參考網(wǎng)頁:http://www.cprogramdevelop.com/3742318/

 4、SD卡寫B(tài)lock是怎樣進(jìn)行的?

  寫SD卡的單位是Block(512Bytes),再寫之前要先整塊擦除,然后才能寫。

  在多塊寫操作中,可以在發(fā)送多塊寫命令CMD25之前,有選擇性的先發(fā)送命令A(yù)CMD23設(shè)置預(yù)擦除。怎樣理解呢?

  既然是有選擇性的,也可以不發(fā)送ACMD23命令。在多塊寫的過程中,由于SD卡事先不知道你要寫入幾個(gè)塊(CMD25命令只告訴SD卡要寫入的起始地址),所以寫入的過程是:根據(jù)需要判斷要寫一個(gè)塊時(shí),先擦除然后再寫,再判斷是否要寫入下一個(gè)塊,如果是就再擦除再寫。

  倘若發(fā)送ACMD23命令就不一樣了,ADM23命令會(huì)在寫命令CMD25生效之前,告訴SD卡準(zhǔn)備寫入的塊數(shù)N。這樣當(dāng)CMD25命令生效的時(shí)候,SD卡會(huì)一次性先將這N個(gè)塊都擦除,然后再一個(gè)塊一個(gè)塊寫。由于擦除操作比較集中,所以整個(gè)多塊寫操作更節(jié)省時(shí)間。

九、SD卡參數(shù)測(cè)試

  使用野火開發(fā)板配套例程做測(cè)試,筆者測(cè)試用的SD卡是金士頓的2G內(nèi)存塊,打印SD卡的參數(shù)信息如下:

圖片

Card Type is :1
ManufacturerID is :2

Card device size is :3795
Card Block Size is :1024
Card device size multiplier is :7
Card Capacity is :1990197248

the maximum read date block length is :1024
partial blocks for write allowed is :0
the maximum write date block length is :1024
erase single block enable is :1
erase sector size is :127
write protect group size is :0
RCA is :4660 

圖片

Card Type:1         SDSC卡版本2.0

Card device size:  C_SIZE(CSD),為3795

Card Block Size:  max read data block length(READ_BL_LEN(CSD)) ,為1024 Bytes

Card device size multiplier is:  C_SIZE_MULT(CSD),為7

Card Capacity:  1990197248 Bytes

計(jì)算方法(摘自《Simplified_Physical_Layer_Spec.pdf》):

memory capacity = BLOCKNR * BLOCK_LEN
 
  BLOCKNR = (C_SIZE+1) * MULT  (C_SIZE <= 4096
  MULT = 2^(C_SIZE_MULT+2)        (C_SIZE_MULT < 8)
  BLOCK_LEN = 2^READ_BL_LEN,    (READ_BL_LEN < 12)

注意:SDSC最大為2GB。

the maximum read date block length:READ_BL_LEN(CSD) ,為1024 Bytes

partial blocks for write allowed:WRITE_BL_PARTIAL(CSD),為不支持

the maximum write date block length:WRITE_BL_LEN(CSD) ,為1024 Bytes

erase single block enable:ERASE_BLK_EN(CSD),為1,支持單塊擦除

erase sector size:SECTOR_SIZE(CSD),實(shí)際扇區(qū)擦除的block數(shù)為(SECTOR_SIZE+1),為128 Blocks

write protect group size:WP_GRP_SIZE(CSD),實(shí)際保護(hù)的扇區(qū)數(shù)為(WP_GRP_SIZE+1),為1 Sector

RCA: SD卡相對(duì)地址為4660

 

參考資料:《Simplified_SDIO_Card_Spec.pdf》

     《Simplified_Physical_Layer_Spec.pdf》

       《Simplified_SD_Host_Controller_Spec.pdf》

     《STM32芯片手冊(cè)》


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: 單片機(jī)

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉