CH376T開發(fā)遇到問題,SPI方式,只有復位重啟或者燒錄后自動重啟才能成功在SD卡中創(chuàng)建文件,斷電再通電就沒有成功創(chuàng)建文件,向文件中寫數(shù)據(jù)也沒成功,創(chuàng)建的文件內(nèi)有一個空格字符,請幫忙檢查下原理圖是否有錯誤。如果不是硬件問題,求教軟件可能是在什么步驟出錯才會有這種現(xiàn)象
一:硬件方面,晶振建議加15p的匹配電容
二:376是進行到哪一步出問題,返回值是多少
三:INT腳沒有接,你程序的中斷是怎么處理的?SDO兼做中斷輸出嗎?
晶振測得XO和XI電壓分別是1.42V和1.36V,應該是啟振了
沒有讀取376返回值,直接延時等待處理的
問題可能出在沒有獲取中斷上?程序只簡單初始化了SPI,下面是測試程序
void SD_card_test(void)
{
SPI3_CS_H;
delay_us(30);
SPI3_CS_L;
Send_SD_Data(USB_INT_CONNECT);
delay_us(2);
Send_SD_Data(SD_MODE);
delay_us(2);
SPI3_CS_H;
delay_us(30);
Send_SD_Command(CMD0H_DISK_CONNECT);
Send_SD_Command(CMD0H_DISK_MOUNT);
HAL_Delay(200);
SPI3_CS_L;
Send_SD_Data(CMD10_SET_FILE_NAME);
delay_us(2);
HAL_SPI_Transmit(&hspi3,"\\ABC.TXT\0",9,100);
SPI3_CS_H;
HAL_Delay(10);
Send_SD_Command(CMD0H_FILE_CREATE);
HAL_Delay(200);
Send_SD_Command(CMD01_GET_STATUS)
SPI3_CS_L;
Send_SD_Data(CMD2H_BYTE_WRITE);
delay_us(2);
Send_SD_Data(28);
delay_us(5);
Send_SD_Data(CMD01_WR_REQ_DATA);
delay_us(5);
HAL_SPI_Transmit(&hspi3,"123456789012345678901234567\0",28,100);//28
SPI3_CS_H;
HAL_Delay(10);
SPI3_CS_L;
Send_SD_Data(CMD1H_FILE_CLOSE);
delay_us(2);
Send_SD_Data(1);
SPI3_CS_H;
}
void Send_SD_Data(uint8_t Data)
{
HAL_SPI_Transmit(&hspi3,&Data,1,100);
}
void Send_SD_Command(uint8_t CMD)
{
SPI3_CS_L;
HAL_SPI_Transmit(&hspi3,&CMD,1,100);
delay_us(2);
SPI3_CS_H;
delay_us(5);
}
你沒有做任何中斷處理嗎?
你聯(lián)系這個郵箱xcc@wch.cn給你發(fā)一份參考代碼吧
好的,已發(fā)郵件
請問用SDO做兼容中斷輸出,DISK_MOUNT(31H)之后,獲取到SDO中斷,GET_STATUS(22H)讀取到中斷狀態(tài)也是22H是什么原因?
這是 SPI 命令沒發(fā)成功,發(fā)送的值又被讀回來,命令碼和數(shù)據(jù)之間需要時間間隔,命令與數(shù)據(jù)間一般 2us,數(shù)據(jù)與數(shù)據(jù)間一般 1us,有中斷的命令,等待中斷通知后再讀取值。
感謝,延長delay之后可以讀到正確的中斷狀態(tài)了
目前遇到新的問題:讀取mount中斷成功之后創(chuàng)建的文件名是亂碼,不處理中斷直接創(chuàng)建反而是正確文件名。
請問可能是什么原因造成的亂碼?create中斷返回值也是創(chuàng)建成功14H
中斷未處理,是指創(chuàng)建文件后還是disk_mount?disk_mount該命令用于初始化磁盤并測試磁盤是否就緒。新連接的 USB 存儲設備或者 SD 卡必須通過該命令進行初始化后,然后才能進行文件操作
創(chuàng)建文件有我們官方封好的函數(shù),你使用的是例程還是自己寫的
在官方函數(shù)的基礎上修改的,亂碼原因已經(jīng)找到,有一步片選操作錯誤