• slider image 442
  • slider image 497
  • slider image 498
  • slider image 499
  • slider image 500
  • slider image 502
:::


Browsing this Thread:   1 Anonymous Users






Re: AN1003 SD ctrl problem
#3
高級會員
高級會員


查看用戶資訊
SECTOR_SIZE 7 bits 的 資料可以在 SD-MEMORY Card Specifications / Part 1. Physical Layer Specification Version 1.01 , page 64 看到相關資訊。

unsigned VDD_W_CUR_MIN      :3;
        
unsigned VDD_W_CURR_MAX     :3;
        
unsigned C_SIZE_MULT_H      :2;    //1    9
                
        
unsigned C_SIZE_MULT_L      :1;
        
unsigned SECTOR_SIZE        :5;       <===  5 bits
        unsigned ERASE_GRP_SIZE_H   
:2;    //1    10

發表於: 2006/11/20 15:19
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: AN1003 SD ctrl problem
#2
高級會員
高級會員


查看用戶資訊
好像是 msb lsb 擺錯的關系.. struct 裡面的 C_SIZE 改成下面似乎就正確了...,但是C_SIZE_MULT 部份的話..spec 裡面提到SECTOR_SIZE 為7 bits ,不過struct 裡面把 SECTOR_SIZE 設為 5 bits ...

unsigned C_SIZE_U           :2;    //1    6
        
unsigned RESERVED_2         :2;
        
unsigned DSR_IMP            :1;
        
unsigned READ_BLK_MISALIGN  :1;
        
unsigned WRITE_BLK_MISALIGN :1;
        
unsigned READ_BL_PARTIAL    :1;

        
unsigned C_SIZE_H           :8;    //1    7

         
unsigned VDD_R_CURR_MAX     :3;    //1    8        
        
unsigned VDD_R_CURR_MIN     :3;
        
unsigned C_SIZE_L           :2;

發表於: 2006/11/20 14:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


AN1003 SD ctrl problem
#1
高級會員
高級會員


查看用戶資訊
最近在玩SD card , 算是有點小進展, C18是用 V3_06, MPLAB 是 7.31 ,在讀取CSD 計算 SD card memory capacity資訊時卻一直算錯,下面的struct 是直接從AN1003 typedef.h 拿出來用的無修改, 但是C_SIZE_U, C_SIZE_H, C_SIZE_L 跟 C_SIZE_MULT_H , C_SIZE_MULT_L , 取出來的值似乎不正確, 我用256MB 的MMC 卡
直在接 MPLAB 的 WATCH 觀查 struct value得到:
C_SIZE_U=0X02
C_SIZE_H=0XCC
C_SIZE_L=0X02
組合起來為 0X0B32
((C_SIZE_U&0X03)<<10)|((C_SIZE_H)<<2)|(C_SIZE_L&0X03)
C_SIZE_MULT_H=0X03
C_SIZE_MULT_L=0X01
組合起來為0X07
((C_SIZE_MULT_H&0X03)<<1)|(C_SIZE_MULT_L&0X01)
由於C_SIZE/C_SIZE_MULT的值一直不正確後來直接看SD spec 用同一個struct 但是直接把對應的 byte 抓出來得到的值為
CSD CSDStatus;
CSDStatus=ReadCSD();
................................................
C_SIZE_U=CSDStatus._byte[6]&0X03; =>0X03
C_SIZE_H=CSDStatus._byte[7]; => 0XCC
C_SIZE_L=CSDStatus._byte[8]&0X03; =>0X03
組合起來為 0X0F32
C_SIZE_MULT_H=CSDStatus._byte[9]&0X03; =>0X02
C_SIZE_MULT_L=CSDStatus._byte[10]&0X01; =>0X01
組合起來為 0X05

這時後跟 READ_BL_LENTH 來計算就對了...
問題來了.. 那為何 struct 裡面宣告的 C_SIZE/C_SIZE_MULT 明明對應到正確的地方,但是讀回來卻是錯的....

實驗了一整個上午終於找到這樣的關聯性,所以想請教版主一下,究竟是我的問題還是?... 感謝....


typedef union
{
    
struct
    
{
        
DWORD _u320;
        
DWORD _u321;
        
DWORD _u322;
        
DWORD _u323;
    };
    
struct
    
{
        
byte _byte[16];
    };
    
struct
    
{
        
unsigned CSD_STRUCTURE      :2;
        
unsigned SPEC_VERS          :4;
        
unsigned RESERVED_3         :2;    //1    0
        
        
unsigned TAAC               :8;    //1    1
        
        
unsigned NSAC               :8;    //1    2
        
        
unsigned TRAN_SPEED         :8;    //1    3
        
        
unsigned CCC_H              :8;    //1    4
        
        
unsigned READ_BL_LEN        :4;
        
unsigned CCC_L              :4;    //1    5
        
        
        
unsigned READ_BL_PARTIAL    :1;
        
unsigned WRITE_BLK_MISALIGN :1;
        
unsigned READ_BLK_MISALIGN  :1;
        
unsigned DSR_IMP            :1;
        
unsigned RESERVED_2         :2;
        
unsigned C_SIZE_U           :2;    //1    6
        
        
unsigned C_SIZE_H           :8;    //1    7
        
        
unsigned C_SIZE_L           :2;    
        
unsigned VDD_R_CURR_MIN     :3;
        
unsigned VDD_R_CURR_MAX     :3;    //1    8
        
        
unsigned VDD_W_CUR_MIN      :3;
        
unsigned VDD_W_CURR_MAX     :3;
        
unsigned C_SIZE_MULT_H      :2;    //1    9
                
        
unsigned C_SIZE_MULT_L      :1;
        
unsigned SECTOR_SIZE        :5;
        
unsigned ERASE_GRP_SIZE_H   :2;    //1    10
        
        
unsigned ERASE_GRP_SIZE_L   :3;
        
unsigned WP_GRP_SIZE        :5;

        
unsigned WP_GRP_ENABLE      :1//bit 016 - 031
        
unsigned DEFAULT_ECC        :2;
        
unsigned R2W_FACTOR         :3;
        
unsigned WRITE_BL_LEN_H     :2;
        
        
unsigned WRITE_BL_LEN_L     :2;
        
unsigned WRITE_BL_PARTIAL   :1;
        
unsigned RESERVED_1         :5;
        
        
unsigned FILE_FORMAT_GRP    :1//bit 008 - 015
        
unsigned COPY               :1;
        
unsigned PERM_WRITE_PROTECT :1;
        
unsigned TMP_WRITE_PROTECT  :1;
        
unsigned FILE_FORMAT        :2;
        
unsigned ECC                :2;
        
        
unsigned CRC                :7//bit 000 - 007
        
unsigned NOT_USED           :1;
    };
CSD;

發表於: 2006/11/20 14:09
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------