采用STM32F103+CH374T,寄存器寫入0x55,讀出的值也是0x55,寫入0xAA,讀出的值也是0xAA,不知道是硬件問題還是軟件問題。
參考的CH375代碼,是不是和CH374對應(yīng)的CMD_CHECK_EXIST定義地址不一樣?
2011-20120929XD
/* CH375初始化代碼 */
uint8_t?mInitCH375Host( void )? /* 初始化CH375 */
{
?uint8_t?i,s,res;?
?uint8_t sssBuf[256];
?
?delay_ms(50);??????? /* 上電后至少延時(shí)50ms操作 */
?CH374_PORT_INIT( );? /* 接口硬件初始化 */
?//Write374Byte( CMD_CHECK_EXIST, 0x65 );/* 測試單片機(jī)與CH375之間的通訊接口 */
?//res = Read374Byte(CMD_CHECK_EXIST);
?//Write374Byte( CMD_CHECK_EXIST,0x65 );? /* 測試單片機(jī)與CH375之間的通訊接口 */
//前64個(gè)寄存器值都讀一遍并顯示
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 );? /* 測試單片機(jī)與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 );? /* 測試單片機(jī)與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 ); /* 設(shè)備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 );? /* 設(shè)置模式錯(cuò)誤 */?
?}
?
}
374和375是不一樣的。CMD_CHECK_EXIST是命令碼,375內(nèi)部是含有固件的。374是基于內(nèi)部寄存器的讀寫實(shí)現(xiàn)USB主機(jī)設(shè)備的操作。故374不可以使用CMD_CHECK_EXIST。
至于374如何實(shí)現(xiàn)主設(shè)功能,可參考CH374DS1.PDF,CH374DS2.PDF手冊,以及CH374EVT提供的例程源碼