主题中讨论的其他器件:C2000WARE
我知道这不是一个 Visual C++论坛、但由于 TI 提供了串行闪存编程器、我想也许有人可以提供帮助。 这是函数
C:\ti\c2000Ware_4_01_00_00\utilities\flash_programmers\serial_flash_programmer\serial_flash_programmer\source\f021_DownloadKernel.cpp
void loadProgram(FILE *fh)
{
unsigned char sendData[8];
unsigned int fileStatus;
unsigned int rcvData = 0;
DWORD dwRead;
DWORD dwWritten;
getc(fh);
getc(fh);
getc(fh);
fileStatus = fscanf_s(fh, "%x", &sendData[0]);
float bitRate = 0;
DWORD millis = GetTickCount();
while (fileStatus == 1)
{
QUIETPRINT(_T("\n%lx"), sendData[0]);
//Send next char
WriteFile(file, &sendData[0], 1, &dwWritten, NULL);
bitRate++;
dwRead = 0;
//T1
while (dwRead == 0)
{
ReadFile(file, &rcvData, 1, &dwRead, NULL);
}
//T2
QUIETPRINT(_T("==%lx"), rcvData);
//Ensure data matches
if (sendData[0] != rcvData){
VERBOSEPRINT(_T("\nData does not match... Please press Ctrl-C to abort."));
while (1){}
}
//Read next char
fileStatus = fscanf_s(fh, "%x", &sendData[0]);
}
millis = GetTickCount() - millis;
bitRate = bitRate / millis * 1000 * 8;
QUIETPRINT(_T("\nBit rate /s of transfer was: %f"), bitRate);
rcvData = 0;
}
波特率为115200、字符被正确回传。 在自由运行中、标记之间的时间为15ms、这太长了。 但是、如果我在 T1暂停程序、然后让它读取、则读取操作需要7ms。 F28386S 立即回显字符,因此延迟似乎是 ReadFile()。
有什么想法吗?
谢谢、
John