CH374T读写CMD_CHECK_EXIST寄存器不正常,是什么原因。

采用STM32F103+CH374T,寄存器写入0x55,读出的值也是0x55,写入0xAA,读出的值也是0xAA,不知道是硬件问题还是软件问题。

参考的CH375代码,是不是和CH374对应的CMD_CHECK_EXIST定义地址不一样?


2011-20120929XD
/* CH375初始化代码 */
uint8_t mInitCH375Host( void )  /* 初始化CH375 */
{
 uint8_t i,s,res; 
 uint8_t sssBuf[256];
 
 delay_ms(50);        /* 上电后至少延时50ms操作 */
 CH374_PORT_INIT( );  /* 接口硬件初始化 */
 //Write374Byte( CMD_CHECK_EXIST, 0x65 );/* 测试单片机与CH375之间的通讯接口 */
 //res = Read374Byte(CMD_CHECK_EXIST);
 //Write374Byte( CMD_CHECK_EXIST,0x65 );  /* 测试单片机与CH375之间的通讯接口 */

//前64个寄存器值都读一遍并显示

for(i=0;i!=32;i++)
{
  s=Read374Byte(i);
  itoa(s,sssBuf,10);
  TextOut(i*24,1, FONT_GB16X16,sssBuf);
 }

 for(i=0;i!=32;i++)
     {
  s=Read374Byte(i+32);
  itoa(s,sssBuf,10);
  TextOut(i*24,20, FONT_GB16X16,sssBuf);
 }

 Write374Byte( CMD_CHECK_EXIST,0x55 );  /* 测试单片机与CH375之间的通讯接口 */
 res = Read374Byte(CMD_CHECK_EXIST);
 {
  TextOut(200,40, FONT_GB16X16, "CMD_CHECK_EXIST=");
  itoa(res,sssBuf,10);
  TextOut(340,40, FONT_GB16X16, sssBuf);
 }

 Write374Byte( CMD_CHECK_EXIST,0xAA );  /* 测试单片机与CH375之间的通讯接口 */
 res = Read374Byte(CMD_CHECK_EXIST);
 {
  TextOut(400,40, FONT_GB16X16, "CMD_CHECK_EXIST=");
  itoa(res,sssBuf,10);
  TextOut(540,40, FONT_GB16X16, sssBuf);
 }
 
 Write374Byte( CMD_SET_USB_MODE, 0x06 ); /* 设备USB工作模式 */
 res = Read374Byte(CMD_SET_USB_MODE);
 if ( res == CMD_RET_SUCCESS ) return( USB_INT_SUCCESS );
 else
 {
  TextOut(200,60, FONT_GB16X16, "CMD_SET_USB_MODE=");
  itoa(res,sssBuf,10);
  TextOut(340,60, FONT_GB16X16, sssBuf);
  return( ERR_USB_UNKNOWN );  /* 设置模式错误 */ 
 }
 
}


374和375是不一样的。CMD_CHECK_EXIST是命令码,375内部是含有固件的。374是基于内部寄存器的读写实现USB主机设备的操作。故374不可以使用CMD_CHECK_EXIST。

至于374如何实现主设功能,可参考CH374DS1.PDF,CH374DS2.PDF手册,以及CH374EVT提供的例程源码


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