CH375问题

我用的是LPC2114+CH375评估板。 printf( "Start\n" );

i = CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它电路初始化 */

while ( 1 ) { printf( "Wait Udisk\n" ); while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查询CH375中断并更新中断状态,等待U盘插入 */ LED_OUT_ACT( ); /* LED亮 */ mDelaymS( 200 ); /* 延时,可选操作,有的USB存储器需要几十毫秒的延时 */

/* 检查U盘是否准备好,有些U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 */ for ( i = 0; i < 15; i ++ ) { /* 有的U盘总是返回未准备好,不过可以被忽略 */ mDelaymS( 100 ); printf( "Ready ?\n" ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查询磁盘是否准备好 */ } /* 查询磁盘物理容量 */ i=CH375GetVer(); printf("%d\n",i); printf( "DiskSize\n" ); i = CH375DiskSize( ); mStopIfError( i ); xWriteCH375Cmd(CMD_DISK_SIZE); printf( "TotalSize = %d MB \n", (unsigned int)(mCmdParam.DiskSize.mDiskSizeSec<<11)); // 显示为以MB为单位的容量

前面都正确,为什么返回的TotalSize=0(磁盘容量)?

你这种计算方法是不正确的,mCmdParam.DiskSize.mDiskSizeSec是总的扇区数.正确的方法是: printf( "DiskSize\n" ); i = CH375DiskSize( ); mStopIfError( i ); printf( "TotalSize = %u MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec * (CH375vSectorSize/512) / 2048 ) ); // 显示为以MB为单位的容量 xWriteCH375Cmd(CMD_DISK_SIZE);是没有必要的.CH375DiskSize( )函数里已经发了这个命令.发完这个命令后,会返回8个字节的数据.


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