[求助]CH375B初始化

#include "stc12c5a60s2.h" #include "ch375hf5.h"

typedef unsigned char u8; typedef unsigned int u16;

#define UINT8 u8 #define UINT16 u16

void Delay_ms(u16 z) // { u16 x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

void Uart1_Init(void) // { AUXR = 0x11; SCON = 0X50; BRT = 0XFD; PCON &= 0X7F; ES = 0; EA = 0; }

void Uart2_Init(void) // { S2CON = 0XD0; BRT = 0XFD; IE2&=0xFE; EA = 0; }

void Send_Byte(u8 cmd) // { SBUF=cmd; while(!TI); TI=0; }

void Send_String(u8 *pbuf) { while(*pbuf !='\0') { Send_Byte(*pbuf++); } }

void xWriteCH375Cmd( UINT8 mCmd ) // { S2CON |=0x08; S2BUF = mCmd; while (( S2CON&0x02) == 0 ); S2CON &=0xFD; }

void xWriteCH375Data( UINT8 mData )// { S2CON &=0xF7; S2BUF = mData; while (( S2CON&0x02) == 0 ); S2CON &=0xFD; }

UINT8 xReadCH375Data( void ) // { while ( (S2CON&0x01) == 0); S2CON&=0xFE; return( S2BUF ); }

void main(void) { u8 i=1; Uart1_Init(); Uart2_Init(); Delay_ms(100); Send_String("準備初始化"); i=CH375LibInit(); if(i == 0) Send_String("初始化成功"); else Send_String("初始化失敗"); for(;;) { ; } } 一直卡在初始化那里,CH375Hf5.h和CH375Hf5.lib都添加了 疑問,庫函數(shù)怎么知道我使用的是串行方式

USB工作模式在哪里設置呢?


你使用我們CH375庫的話,設置USB工作模式在i=CH375LibInit();里面實現(xiàn),庫會調用程序中的接口函數(shù)。你可以在庫初始化之前做一下測試命令check_exsit,驗證串口的準確性。


xWriteCH375Cmd(CMD_CHECK_EXIST); xWriteCH375Data(0x11); i=xReadCH375Data();

i是不是等于0xEE


數(shù)據(jù)取反是正常的,就是初始化過不去


初始化函數(shù)返回0,說明初始化成功了啊。


如果i=CH375LibInit();返回0說明單片機與CH375通訊正常,庫初始化成功。那你下面CH375DiskReady通過了嗎?


程序一直卡在這條語句上面 if ( CH375DiskReady( ) == ERR_SUCCESS )

我采用的是查詢法,那么在程序開始定義了端口號 sbit CH375_INT_WIRE = P1^5;


試了兩個U盤,長城的U盤不會卡死,但是查詢U盤CH375DiskReady( )不成功;另一個金士頓U盤,直接卡死在if ( CH375DiskReady( ) == ERR_SUCCESS ) 這條語句上面


長城的U盤CH375DiskReady()過了之后能正常進行文件的創(chuàng)建和讀寫嗎?另外有的U盤CH375DiskReady()總是返回為準備好,你可以參考我們的例程,每隔100ms查詢一次,查個5-6次的如果還是不過就直接跳過這條命令,看看后面的操作正不正常。


那你CH375DiskConnect( )有沒有通過?CH375DiskReady( ) 按照下面的步驟做,返回值是多少? for ( i = 0; i < 5; i ++ ) { /* 有的U盤總是返回未準備好,不過可以被忽略 */ mDelay100mS( ); printf( "Ready ?\n" ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準備好*/ }


CH375DiskConnect( )都可以通過的。 H375DiskReady( )返回的是0x2C


mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/MY_ADC.TXT" ); i = CH375FileOpen( ); i還是等于0x2C


你在CH375DiskReady( ) 之前加上設置模式的命令試一下: for ( i = 0; i < 5; i ++ ) { /* 有的U盤總是返回未準備好,不過可以被忽略 */ mDelay100mS( ); printf( "Ready ?\n" ); xWriteCH375Cmd( CMD_SET_USB_MODE ); xWriteCH375Data( 0x06 ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準備好*/ }


不行, CH375DiskReady( )返回的值是0x82


中斷引腳我自己配置一個IO口可以嗎(查詢法)


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频