阅读:1521回复:8
说说我的错误――d12
setmode正确
clkout可改变 读chip id 得到0010 写缓冲区11,11,11,11,11 读缓冲区 结果得到11,00,00,00,00 int_n始终为低电平 main() { D12_SetMode(0x10,0x05); *((unsigned int xdata *)0x0100)=D12_ReadChipID(); D12_WriteEndpoint(0x02,5,MainEpBuf2); j=D12_ReadEndpoint(0x02,9,MainEpBuf); D12_WriteEndpoint(0x02,5,MainEpBuf2); j=D12_ReadEndpoint(0x02,9,MainEpBuf3); } 主程序就是为了测试读写寄存器 d12已经折腾我很长时间了 没有什么头绪 就做了个232的通信 说实话 除了速度慢点 没什么不好的 现在整个系统就差usb这块了 |
|
沙发#
发布于:2003-08-11 08:45
这位大哥,你写的跟读的虽然是一个端口的,但是有两个缓冲区,对应读和写,分别指向不同的地址!整个usb内部缓冲字节数是:320=16+16+16+16+[64+64]*2。那你说这样做有什么用?只要你发送数据检测正确就行了。
|
|
板凳#
发布于:2003-08-10 20:21
你写入A BUFFER,读出B BUFFER。
如果USB数据传输,接受BUFFER为空,读操作无意义 |
|
地板#
发布于:2003-08-09 16:14
对于端口缓冲写完指针是指向最后一个!你再去读就会切换到另一个缓冲区。而且这个指针不会复位,也就是你这样做完全没有意义。 好像不是的巴?在下位机还是可以得阿,我就是写数据进去,然后又读出来了的,而且读出来的数就是我写进去的数啊,没有错的。 |
|
地下室#
发布于:2003-08-08 10:12
那么这个那?
读chip id 得到0010 |
|
5楼#
发布于:2003-08-08 09:42
这是正确的读取端点
UBYTE i, length; D12_OutPortB(D12_COMMAND, endp); if(! (D12_InPortB(D12_DATA) & 0x01) ) return 0; D12_OutPortB(D12_COMMAND, 0xF0); D12_InPortB(D12_DATA); length = D12_InPortB(D12_DATA); if(length > len) length = len; for(i=0; i<length; i++) *(buf+i) = D12_InPortB(D12_DATA); D12_OutPortB(D12_COMMAND, 0xF2); 所谓的读取数的多少若是在最大封包内则完全由你控制 只要总线上有数据并且总线没有初始化,必然会有此现象 |
|
|
6楼#
发布于:2003-08-08 08:53
对于端口缓冲写完指针是指向最后一个!你再去读就会切换到另一个缓冲区。而且这个指针不会复位,也就是你这样做完全没有意义。
|
|
7楼#
发布于:2003-08-07 17:25
向端点写入数据后, 数据应该是由硬件传输至外部了吧. 再读回来是否有意义.
|
|
8楼#
发布于:2003-08-07 17:15
对了
我有个奇怪的问题 我明明写进去的是5个数 测试的时候我把read改成读9个数 竟然也会读出来 11,00,00,00,00,00,00,00,00 会吗? |
|