求助 ch376 通讯 检测upan连接总返回 0x30

stm 32 spi 模式 与ch376 通讯 检测upan连接总返回 0x30


前面的模式 usb 模式设置成6 成功了。但是总是检测不到u盘无论是否有u盘连接 总是返回0x30

发送 中断命令 22H GET_STATUS   返回22  说明 读取了dr寄存器 。那么这类输出是中断的命令该怎么读取?


SPI方式吗?把SPI时钟调慢一点,命令与数据之前加2us延时


数据命令之间间隔通过,SPI-BZ引脚控制 ,发现设置了usb 模式后 其他命令也失效了, 例如 CHECK_EXIST  也不能正常返回值了。


我们一般不使用BZ信号,保证适当的延时就可以了。其他命令失效,是不是CS上下拉没有控制好,严格按照时序图提供的波形与时间参数调整。

RTX截图未命名.png

 


降低了速度 间隔延时,还是那样只有复位后第一次使用的命令有用。总觉得这芯片有问题,调了很久了没遇到这么难搞的芯片


参考SPI_SW.C中模拟SPI底层函数,直接移植过去使用,保证延时函数准确就行。


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;

}

有问题吗


首先第一个问题,CMD_DISK_CONNECT是等中断来接收数据而不是延时后接收数据。第二个问题,CS拉高不是在接收数据之后,而是在发完此命令后拉高。第三个问题,想获取中断状态不是直接读数据就能读出来的,而是通过CMD01_GET_STATUS命令来得到。

不建议把CS拉低、拉高由自己写,参考例程修正。


只有登录才能回复,可以选择微信账号登录