USB是个很复杂的协议,你如果完全搞懂,我估计没有几个乱衡月专心钻研是不行的,但是如果只是能实现你的这个功能,我估计不是很复杂。
首先来说说USB通信:
USB通信传输方式分为四种:控制,中断,批量,同步传输四种,这个你可以看看网上资料,然后我用STM32通信,因为数据量不是很大,我用的是中断传输方式,但是DSP数据量应该会比较大,不知道中断传输行不行,但是一般问题不大。
传输方式说完了,再说说USB设备类型,你每次插usb设备到电脑上的时候就会有提示,这是一个什么设备,USB设备类型就是说的这个意思,是鼠标还是键盘还是别的什么的,如果你选用标准的类,你就不用自己写上位机(PC)的驱动程序,但是如果不用标准的类,就是用自定义的类就要自己写上层的设备驱动程序,就是所谓的DDK,WDM,WDF什么的,你没写过这方面的还真有点棘手,但是也不一定要写驱动程序,你可以试试有个类叫HID类,这个类在USB通信的时候用的还挺多的,不过这个类也有缺点,这个地方还要说一点,USB还分低速,全速,高速三种,不太了解DSP,不知道他支持什么模式,但是USB2.0的全速应该至少可以支持的。
USB2.0全速模式HID用中断方式每秒最多可以传输64KB的数据,不知道能不能达到你的要求,但是我估计一般问题不大了,如果你这歀DSP能支持高速模式,每秒用这种方式可以传输高达22MB的数据,这个速度一般问题不大了。
你可以照着我说的思路,去网上搜搜人家写好的程序,肯定有人做过DSP的USB通信,然后你按照自己的要求改一改,主要应该是USB的设备描述符部分要自己哗陪铅修改,然后可能还要根据自己的电路改改配置什么的,上位机软件网上有源代码的多的是,然后自己摸索摸索,我估计你要是编程水平还可以的话,只是摸索USB,一两个星期完全没有问题,祝你好运!
如果你是开发上位机,就耐枣需要相关的IC来支持的,IC的作用是协议转换,将上位机的USB相关的协议格式转换为下位机的协议,下位机协议通常有SPI,IIC,UART等等。我目前正在做USB2IIC的。没答含有要求就用串口就OK了,网上很多现成的串口上位机。至于你说的驱动,那是你所用到的IC的厂商提供的。你想昌举拆搞那个驱动开发,基本上不太可能的,因为你根本不知道IC的内部情况。哎呀,这个我用过啊,大则真巧。不过没遇到衫笑这个问题。
void CISM001Dlg::InitUSB()
{
LoadDLL()
FT_STATUS status = OpenBy()
if(status)
{
MessageBox("USB Not Found!")
m_USB=""
}
else
{
m_USB="USB <->或仿含 Serial"
ResetDevice()
SetTimeouts(3000, 3000)//extend timeout while board DLP-USB2 finishes reset
Purge(FT_PURGE_RX || FT_PURGE_TX)
SetTimeouts(300, 300)
}
UpdateData(false)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)