AN1003 SD ctrl problem
|
||||
---|---|---|---|---|
高級會員
|
最近在玩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
發表於: 2006/11/20 14:09
|
|||
|
請問一下18f8520 SPI SCK CLOCK
|
||||
---|---|---|---|---|
高級會員
|
目前我用 18f8520 crystal 用10mhz
config bit 設成hs+pll ,所以為40mhz 請問一下 fosc 是用 10mhz 還是 40mhz 呢? 我spi 設成 fosc/64 量出來為153.6khz 計算起來應該是 10 mhz 這樣對嗎? 會發問的原因是我記得我昨天量是 625khz的(40mhz/64) ,今天卻是153.6khz,不知道是不是昨天精神晃忽看錯了, config bits 我是寫在code 裡面,應該是不會跑掉才是,上來 請教確認一下.謝謝
發表於: 2006/11/17 12:11
|
|||
|
Re: 請問PIC18F6520的接收電壓
|
||||
---|---|---|---|---|
高級會員
|
我用蠻多 iic 的device 都是 3.3v 的,
基本上沒什麼問題,倒是我用的pic 大部份都只能吃5v,做master的話有些slave device 會強調Vih 不能高於Vdd這時後控制iic時就要分壓。 如果做iic slave 的話 st buffer要0.8 VDD 才視為high .. PIC 5V VDD 的話大約要4V , 才能視為high,不過之前實驗的結果3.3V 似乎就能視為high了,不過現在都會用244之類的ic提升到5V確保穩定度。
發表於: 2006/11/15 17:37
|
|||
|
Re: C18 SPI 介面使用設定的問題
|
||||
---|---|---|---|---|
高級會員
|
找到問題了,因為我用MPLAB SIM 去模擬,所以不會真正發送資料,使得BF一直為0。
最近剛好發現 MPLAB SIM simulation 有軟体 LA 可以用就很高興的拿來用,i/o的做動還蠻正常的,用到SPI一直看不到資料發送誤以為設定一直是不正確的,一開始直接用ICD2跑就不會有這種問題了(○_o汗)....
發表於: 2006/11/15 15:31
|
|||
|
C18 SPI 介面使用設定的問題
|
||||
---|---|---|---|---|
高級會員
|
參考了一些source code ,好像也沒特別的設定,不過我用Mplab sim 發現sck sdo 都沒反應,WriteSpi會一直停在等SSPSTATbits.BF flag ,請問是那邊有設定問題呢?
void main(void){
發表於: 2006/11/13 13:43
|
|||
|
Re: 請教C18的寫法
|
||||
---|---|---|---|---|
高級會員
|
找到解決的方法了,謝謝指點。
typedef union{
發表於: 2006/11/13 12:02
|
|||
|
Re: 請教C18的寫法
|
||||
---|---|---|---|---|
高級會員
|
typedef unsigned char BYTE;
發表於: 2006/11/13 11:53
|
|||
|
請教C18的寫法
|
||||
---|---|---|---|---|
高級會員
|
這是截取CC5X 部份的程式碼,宣告pin腳的部份還ok, 不知道c18能不能寫到那麼簡明?
#pragma bit CS @ PORTC.2 // output for chip select CS
發表於: 2006/11/13 10:19
|
|||
|
請教spi 的clock modes
|
||||
---|---|---|---|---|
高級會員
|
看datasheet 上面有寫 master mode時 clock modes 有四種,現在找到的 sd card 的spec 都沒看到時序圖之類的資訊,是不是這四種都是允許的呢?
不知道那裡有 sd card spi mode 的read/wrtie 時序圖? 謝謝。
發表於: 2006/11/6 12:13
|
|||
|