stm 32 spi 模式 與ch376 通訊 檢測(cè)upan連接總返回 0x30
前面的模式 usb 模式設(shè)置成6 成功了。但是總是檢測(cè)不到u盤無(wú)論是否有u盤連接 總是返回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)整。
?
降低了速度 間隔延時(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拉低、拉高由自己寫,參考例程修正。