ch374的设备描述符

请问需要参考哪些资料?

如果是采用374模拟U盘的话,建议你去下载CH372DSK,这个里面是372模拟U盘的,至于技术资料,你可以去看下UFI协议


你是想通过SPI口操作CH374,读取U盘的设备描述么?网上下载CH374EVT.ZIP,参考\PUB\EXAM\HOST目下的程序


请问这样连接可以吗?我在UD+,UD-测量电压时都没有电压?是哪里错了?


 CH374的晶振要用24MHZ


用12M的插入U盘时,UD+也有3.7V左右的电压,但U盘的灯不亮有点怪,请问上面的接法是正确的吗?


除晶振必须换为24M以外,其他硬件连接都可以。 U盘灯是否亮与U盘自身特性有关,有的U盘空闲时不亮,读写时才亮。 现在需要确认单片机与CH374之间的通信是否正常,验证方法:程序中等待CH374复位完成后,读取寄存器:0x04,0x05,0x06,0x07,应与手册中的复位值一样。


void CH374_PORT_INIT( ) /* 由于使用通用I/O模拟并口读写时序,所以进行初始化 */ { /* 如果是硬件SPI接口,那么可使用mode3(CPOL=1&CPHA=1)或mode0(CPOL=0&CPHA=0),CH374在时钟上升沿采样输入,下降沿输出,数据位是高位在前 */ CH374_SPI_SCS = 1; /* 禁止SPI片选 */ CH374_SPI_SCK = 1; /* 默认为高电平,SPI模式3,也可以用SPI模式0,但模拟程序可能需稍做修改 */ /* 对于双向I/O引脚模拟SPI接口,那么必须在此设置SPI_SCS,SPI_SCK,SPI_SDI为输出方向,SPI_SDO为输入方向 */ } 对于双向I/O引脚模拟SPI接口,那么必须在此设置SPI_SCS,SPI_SCK,SPI_SDI为输出方向,SPI_SDO为输入方向 这里需要如何设置啊?


你用的是51内核的MCU不需要设置I/O方向.像AVR,ARM等需要设置.


能不能看它是否工作正常?


374和375怎么相差这么大啊?用375获得设备描述符的程序很简单,而374的看不太懂,也搞不出来,是不是一定要加下面这些函数 // CH374传输事务,输入目的端点地址/PID令牌/同步标志,返回同CH375,NAK不重试,超时/出错重试 UINT8 HostTransact374( UINT8 endp_addr, UINT8 pid, BOOL tog ); // CH374传输事务,输入目的端点地址/PID令牌/同步标志/以mS为单位的NAK重试总时间(0xFFFF无限重试),返回同CH375,NAK重试,超时出错重试 UINT8 WaitHostTransact374( UINT8 endp_addr, UINT8 pid, BOOL tog, UINT16 timeout ); UINT8 HostCtrlTransfer374( PUINT8 ReqBuf, PUINT8 DatBuf, PUINT8 RetLen ) ; // 执行控制传输,ReqBuf指向8字节请求码,DatBuf为收发缓冲区 // 如果需要接收和发送数据,那么DatBuf需指向有效缓冲区用于存放后续数据,实际成功收发的总长度保存在ReqLen指向的字节变量中


技术人员?回答下啊...如果只想获得设备描述符是不是一定要加上面那些函数啊?


由于CH375内部内置了相关的固件程序,用户只需要通过相关的命令进行操作就可以了,所以程序比较简单. CH374没有内置相关的固件程序,单片机是通过CH374内部寄存器进行操作的,所以程序比较复杂,但速度会比 CH375要快 对于上面的函数,CH374是要用到的


是必须要有的,我们的例子程序里面已经提供了获取设备描述符的程序,你看一下. UINT8 GetDeviceDescr( PUINT8 buf ) // 获取设备描述符 { UINT8 s, len; s = HostCtrlTransfer374( SetupGetDevDescr, buf, &len ); // 执行控制传输 if ( s == USB_INT_SUCCESS ) { UsbDevEndpSize = ( (PUSB_DEV_DESCR)buf ) -> bMaxPacketSize0; // 端点0最大包长度,这是简化处理,正常应该先获取前8字节后立即更新UsbDevEndpSize再继续 if ( len < ( (PUSB_SETUP_REQ)SetupGetDevDescr ) -> wLengthL ) s = USB_INT_BUF_OVER; // 描述符长度错误 } return( s ); }


memcpy(BufLogDescr, SetupGetCfgDescr, sizeof( SetupGetCfgDescr ));这个是什么函数啊?没有定义


// 获取设备描述符 const UINT8C SetupGetDevDescr[] = { 0x80, 0x06, 0x00, 0x01, 0x00, 0x00, 0x12, 0x00 }; // 获取配置描述符 const UINT8C SetupGetCfgDescr[] = { 0x80, 0x06, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00 }; // 设置USB地址 const UINT8C SetupSetUsbAddr[] = { 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }; // 设置USB配置 const UINT8C SetupSetUsbConfig[] = { 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 这些是什么意思?不太懂


只有登录才能回复,可以选择微信账号登录