硬件:STM32F103 + CH375B 并口方式 ,INT查询方式 unsigned char mCH375Init(void ) { unsigned char i; #ifdef TEST_CH375_PORT unsigned char c; xWriteCH375Cmd( CMD_CHECK_EXIST ); /* 测试工作状态 */ xWriteCH375Data( 0x55 ); /* 测试数据 */ c = xReadCH375Data( ); /* 返回数据应该是测试数据取反 */ if ( c != 0xaa ) { /* CH375出错 */ for ( i = 100; i != 0; i -- ) { /* 强制数据同步 */ xWriteCH375Cmd( CMD_RESET_ALL ); /* CH375执行硬件复位 */ c = xReadCH375Data( ); /* 延时 */ } delay1ms(100); /* 延时至少30mS */ } #endif xWriteCH375Cmd( CMD_SET_USB_MODE ); /* 设置USB工作模式 */ xWriteCH375Data( 6 ); /* 模式代码,自动检测USB设备连接 */ for ( i = 0xff; i != 0; i -- ) /* 等待操作成功,通常需要等待10uS-20uS */ if ( xReadCH375Data( ) == CMD_RET_SUCCESS ) break; /* 操作成功 0x51 */ if ( i != 0 ) return( 0 ); /* 操作成功 */ else return( 0xff ); /* CH375出错,例如芯片型号错或者处于串口方式或者不支持 */ } CH375初始化函数返回值正确,确实返回了0XAA,试了发送0x00,返回0xff,都正确 /* 初始化磁盘 */ unsigned char mInitDisk(void ) { unsigned char mIntStatus; xWriteCH375Cmd( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ mIntStatus = xReadCH375Data( ); if ( mIntStatus == USB_INT_DISCONNECT ) return( mIntStatus ); /* USB设备断开 0x15 */ //xWriteCH375Cmd( CMD_DISK_RESET ); /* 复位USB存储器 */ //mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */ xWriteCH375Cmd( CMD_DISK_INIT ); /* 初始化USB存储器 */ mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( mIntStatus != USB_INT_SUCCESS ) return( mIntStatus ); /* 出现错误 0x14 */ xWriteCH375Cmd( CMD_DISK_SIZE ); /* 获取USB存储器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( mIntStatus != USB_INT_SUCCESS ) { /* 出错重试 0x14 */ delay1ms(100); xWriteCH375Cmd( CMD_DISK_SIZE ); /* 获取USB存储器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */ } if ( mIntStatus != USB_INT_SUCCESS ) return( mIntStatus ); /* 出现错误 */ /* 可以由CMD_RD_USB_DATA命令将容量数据读出 */ return( 0 ); /* U盘已经成功初始化 */ } 初始化U盘时出错,发送CMD_DISK_INIT,返回值一直是0x28,试了很多次都是这样 硬件方面由于初始化CH375A已经成功,说明STM32和CH375A的连接正确,CH375A和U盘也仅仅连4跟线,线序也没问题,都测过了,而且在仿真时,当插上或拔下U盘时也回产生中断,都正确,我试着换了另外两个U盘,还是这样返回0X28 请大家帮分析一下原因,谢了!
查看: 2146
回复: 3
CH375A CMD_DISK_INIT 出错!
热门产品 :
CH592: RISC-V内核BLE5.4无线MCU
CH375A几V供电?V3引脚的电容多大?
谢谢楼上 5V供电,0.01uf,是按照手册中提供的要求选的电容值 CH375A和CH375B有什么区别
检查一下USB口,返回28说明USB通讯有问题。CH375A为5V供电,CH375B支持3.3V和5V。CH375B可以替换CH375A,后者已停产
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录