在st网站上下载了um0290。关于usb的iap程序。
其中有个GETSTATUS函数: /******************************************************************** * Function Name : GETSTATUS * Description : * Input : Length * Output : None * Return : Pointer to data ********************************************************************/ ......... if ( ((Pointer >= 0x40000000) && (Pointer <= 0x40006000)) || ((Pointer >= 0x400C0000) && (Pointer <= 0x400C2000))) /* 8K sectors */ { DeviceStatus[1]=0xE8; /* 1 second */ DeviceStatus[2]=0x03; DeviceStatus[3]=0x00; } else if ( Pointer == 0x40008000 ) /* 32K sector */ { DeviceStatus[1]=0xD0; /* 2 seconds */ DeviceStatus[2]=0x07; DeviceStatus[3]=0x00; } else if ((Pointer >= 0x40010000) && (Pointer <= 0x40030000)) /* 64K sectors */ { DeviceStatus[1]=0xA0; /* 4 seconds */ DeviceStatus[2]=0x0F; DeviceStatus[3]=0x00; } #ifdef _STR710_EVAL else if ((Pointer >= 0x60000000) && (Pointer <= 0x6000E000)) /* 8K sectors */ { DeviceStatus[1]=0xE8; /* 1 seconds */ DeviceStatus[2]=0x03; DeviceStatus[3]=0x00; } else if ((Pointer >= 0x60010000) && (Pointer <= 0x60400000)) /* 64K sectors */ { DeviceStatus[1]=0xD0; /* 2 seconds */ DeviceStatus[2]=0x07; DeviceStatus[3]=0x00; } #endif .........
在程序的其他地方看到DeviceStatus[1]=1; /*bwPollTimeout = 1ms*/,按此计算以上时间1 second ,2 second,4 second 确实正确。
我在调试的过程中执行擦除操作时很长慢,但我在DeviceStatus[1]=0xE8; /* 1 seconds */ 处设置断点控制程序执行时,程序可以很快地做擦除操作。
pc端使用的是自做的dfu软件。确定没有问题。不知道问题出在哪里?
请各位指教
|