求助 ch376 通訊 檢測(cè)upan連接總返回 0x30

stm 32 spi 模式 與ch376 通訊 檢測(cè)upan連接總返回 0x30


前面的模式 usb 模式設(shè)置成6 成功了。但是總是檢測(cè)不到u盤無(wú)論是否有u盤連接 總是返回0x30

發(fā)送 中斷命令 22H GET_STATUS ? 返回22 ?說(shuō)明 讀取了dr寄存器 。那么這類輸出是中斷的命令該怎么讀???


SPI方式嗎?把SPI時(shí)鐘調(diào)慢一點(diǎn),命令與數(shù)據(jù)之前加2us延時(shí)


數(shù)據(jù)命令之間間隔通過(guò),SPI-BZ引腳控制 ,發(fā)現(xiàn)設(shè)置了usb 模式后 其他命令也失效了, 例如?CHECK_EXIST ?也不能正常返回值了。


我們一般不使用BZ信號(hào),保證適當(dāng)?shù)难訒r(shí)就可以了。其他命令失效,是不是CS上下拉沒有控制好,嚴(yán)格按照時(shí)序圖提供的波形與時(shí)間參數(shù)調(diào)整。

RTX截圖未命名.png

?


降低了速度 間隔延時(shí),還是那樣只有復(fù)位后第一次使用的命令有用??傆X得這芯片有問(wèn)題,調(diào)了很久了沒遇到這么難搞的芯片


參考SPI_SW.C中模擬SPI底層函數(shù),直接移植過(guò)去使用,保證延時(shí)函數(shù)準(zhǔn)確就行。


CMD_DISK_CONNECT 命令有毒啊。

char Ch376_diskConnect()

{

u8 rdata=0;

//ch376_setUsbMod(0x06);

CH376_CS_EN;

ch376_tCmd(CMD_DISK_CONNECT);

delay_us(20);

rdata=ch376_rData();

CH376_CS_DIS;

temp[3]=rdata;

sprintf(temp,"%x ", rdata);

prints(temp);

if(USB_INT_SUCCESS==rdata)

{prints("disk is get \n");

return 1;

}

有問(wèn)題嗎


首先第一個(gè)問(wèn)題,CMD_DISK_CONNECT是等中斷來(lái)接收數(shù)據(jù)而不是延時(shí)后接收數(shù)據(jù)。第二個(gè)問(wèn)題,CS拉高不是在接收數(shù)據(jù)之后,而是在發(fā)完此命令后拉高。第三個(gè)問(wèn)題,想獲取中斷狀態(tài)不是直接讀數(shù)據(jù)就能讀出來(lái)的,而是通過(guò)CMD01_GET_STATUS命令來(lái)得到。

不建議把CS拉低、拉高由自己寫,參考例程修正。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频