CH372在98/ME下和2000/XP下是不是都可以达到200KB/s的速度? 是用异步IO方式实现的?一次发多少B的数据包? 多谢
我们是指USB实测传输速度(低于理论速度),CH372在WINDOWS下为330K字节每秒,CH372A为380K字节每秒, 如果使用24MHz的MCS51,不处理数据能达到256K,处理数据达到256K那么单片机时钟应该提高到36MHz以上, 测试程序在评估板资料中BULK/WIN/BULKTEST,测试方法,每次传输4K字节,连续测试2M字节的平均速度。
速度方面我觉得还可以, 我用AVR+375, 实际试用时远大于300K. 不过就是指令与数据之间没有等2us,不过也没出错. 若要是,写指令与数据不用1-3us那么久,我估计500K都可以有了.
“我们是指USB实测传输速度(低于理论速度),CH372在WINDOWS下为330K字节每秒,CH372A为380K字节每秒, 如果使用24MHz的MCS51,不处理数据能达到256K,处理数据达到256K那么单片机时钟应该提高到36MHz以上, 测试程序在评估板资料中BULK/WIN/BULKTEST,测试方法,每次传输4K字节,连续测试2M字节的平均速度。”
什么叫每次传输4k字节呢?ch372每次只能64字节,对于底下来说也只是每次最多64字节,何来4k呢?
4k就是PC缓存一次最大接受数据为4096字节,
如果单片机在1ms内要完成采样32字节并上传,可以实现吗?
如何做可以使得“4k就是PC缓存一次最大接受数据为4096字节”? 请看我下面的两段程序,第一段是我现在的程序,速度只有30K BYTE每秒,第二段是修改后的程序,不知是否可以实现“4k就是PC缓存一次最大接受数据为4096字节”。 ××××××××××××××××××××××××××××××××××××× Private Sub Command9_Click()
Dim DData As INT_PARA Dim mIndex As Integer Dim mLength As Long Dim kkkk As Long Dim cont As Long Dim i As Integer
DData.mByte1 = 3 DData.mByte2 = Text1.Text DData.mByte3 = Text2.Text DData.mByte4 = Text3.Text DData.mByte5 = Text4.Text mLength = 5 mIndex = 0
If (CH375WriteData(mIndex, DData, mLength)) Then ' 通过CH375发送命令数据,成功 If (CH375ReadData(mIndex, DData, mLength)) Then ' 通过CH375接收应答数据,成功 kkkk = CLng(DData.mByte2) + (CLng(DData.mByte3) * 256) + (CLng(DData.mByte4) * 256 * 256) + (CLng(DData.mByte5) * 256 * 256 * 256) Label1.Caption = kkkk Dim boo As Boolean Dim filenbr As Integer mLength = 64 boo = CH375ReadData(mIndex, DData, mLength) tmp.Text = Str(DData.mByte1 + DData.mByte2 * 256) tmp.Text = tmp.Text & "-" & Str(DData.mByte3 + DData.mByte4 * 256) tmp.Text = tmp.Text & ".bin" cont = 0 filenbr = FreeFile Open tmp.Text For Binary As #filenbr Put #filenbr, cont + 1, DData cont = cont + mLength Do While cont < kkkk mLength = 64 '<-------------- boo = CH375ReadData(mIndex, DData, mLength) Put #filenbr, cont + 1, DData cont = cont + mLength Loop Close #filenbr Else MsgBox "CH375ReadData 失败" End If Else MsgBox "CH375WriteData 失败" End If
Beep End Sub
××××××××××××××××××××××××××××××××××××× Private Sub Command9_Click()
Dim DData As INT_PARA Dim mIndex As Integer Dim mLength As Long Dim kkkk As Long Dim cont As Long Dim i As Integer
DData.mByte1 = 3 DData.mByte2 = Text1.Text DData.mByte3 = Text2.Text DData.mByte4 = Text3.Text DData.mByte5 = Text4.Text mLength = 5 mIndex = 0
If (CH375WriteData(mIndex, DData, mLength)) Then ' 通过CH375发送命令数据,成功 If (CH375ReadData(mIndex, DData, mLength)) Then ' 通过CH375接收应答数据,成功 kkkk = CLng(DData.mByte2) + (CLng(DData.mByte3) * 256) + (CLng(DData.mByte4) * 256 * 256) + (CLng(DData.mByte5) * 256 * 256 * 256) Label1.Caption = kkkk Dim boo As Boolean Dim filenbr As Integer mLength = 64 boo = CH375ReadData(mIndex, DData, mLength) tmp.Text = Str(DData.mByte1 + DData.mByte2 * 256) tmp.Text = tmp.Text & "-" & Str(DData.mByte3 + DData.mByte4 * 256) tmp.Text = tmp.Text & ".bin" cont = 0 filenbr = FreeFile Open tmp.Text For Binary As #filenbr Put #filenbr, cont + 1, DData cont = cont + mLength Do While cont < kkkk '23744 21120 mLength = 4096 '<-------------- boo = CH375ReadData(mIndex, DData, mLength) Put #filenbr, cont + 1, DData cont = cont + mLength Loop Close #filenbr Else MsgBox "CH375ReadData 失败" End If Else MsgBox "CH375WriteData 失败" End If
Beep End Sub
果然是这个原因。 将mLength = 4096后,一运行就报错并退回到WINDOWS,后来发现是DData太小,只有64 BYTE,于是将DData扩大后就不报错了,试验通讯速度大约达到300K每秒左右。 不过我用的是44B0+CH375S,速度怎么不能达到更高呢?按musich的说法似乎达到500K每秒也是可能的哦。