ch375B串口做host讀U盤的問題

求助啊! 我用CH375作USB主機方式,以串口方式讀取U盤數(shù)據(jù)。 可是發(fā)出去接收到的值總是不對,下面是串口接收的程序,大家?guī)兔纯?,急?/p>

手冊上說是9為數(shù)據(jù)位,第9位為1時是命令,這樣寫可以嗎?結(jié)果不對。 u8 Uart2_PutCMDChar( u8 ch ) { // USART2->DR = ( ch & (u16)0x01FF | (u16)0x0100 ); USART2->DR = ( ch & (u16)0x01FF ) << 1 | (u16)0x0001 ; while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET) ;

return ch; }

下面是接收: u8 Uart2_GetChar ( void ) //used to read from CH375 { u8 ch ; //?óê?êy?Y??′??÷·??? while(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET) ; ch = USART_ReceiveData( USART2 ); return ch; }

救命啊,,


你先拿三個讀寫子函數(shù)來進行測試命令的調(diào)試,看下測試命令是否正常?如果正常的話那說明你的三個讀寫子函數(shù)沒問題,如果不正常的話,那么包括你的硬件連線是否有問題,波特率設(shè)置是否有問題(CH375默認波特率是9600)


測試命令不正常,測試0x55收到的數(shù)據(jù)0x0D.可是不知道是哪的問題。 我想問那標識命令或數(shù)據(jù)的1為是不是應(yīng)該這樣自己加進去的? 波特率設(shè)的是9600,數(shù)據(jù)位9位。


是的,在寫命令的時候把第9位置1,寫數(shù)據(jù)的時候把第9位置0.


void xWriteCH375Cmd( UINT8 mCmd ) { USART2->DR = ( UINT16 )mCmd | (u16)0x0100; while( ( USART2->SR & USART_FLAG_TXE) == RESET ); mDelayuS( 2 ); }

void xWriteCH375Data( UINT8 mData ) { USART2->DR = ( UINT16 )mData & (u16)0x0ff; while( ( USART2->SR & USART_FLAG_TXE) == RESET ); mDelayuS( 1 ); }

u8 xReadCH375Data( void ) { unsigned char dat;

while( USART_GetFlagStatus( USART2, USART_FLAG_RXNE ) == RESET ); dat = USART_ReceiveData( USART2 ); mDelayuS(1); return( dat ); } 試試這個接口函數(shù)


還是不對哎,,,是不是第9位的位置不對? 我的平臺是stm32,,,默認的字節(jié)是大端的,有關(guān)系嗎? 麻煩你了?。?!


誰來幫幫忙,感激不盡??!


這個接口函數(shù)是測試過的,你的串口有沒有配置為9位數(shù)據(jù)方式呢 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_9b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_Clock = USART_Clock_Disable; USART_InitStructure.USART_CPOL = USART_CPOL_Low; USART_InitStructure.USART_CPHA = USART_CPHA_2Edge; USART_InitStructure.USART_LastBit = USART_LastBit_Disable;


配置成了9位的,真的奇怪


而且我收到的數(shù)據(jù)是9位的


是我寫什么過去,就返回同樣的數(shù)據(jù),寫過去個測試命令100000110,就回來個100000110, 怎么回事呢?


ch375上電先延時50ms,測試25,26腳電平,正常25腳為低,26腳為高,可以把原理圖貼出來看看


好了,謝謝大家,


我還有個問題: 這個程序中很多地方的延時為什么要加,在什么地方必須要加?我看大家用的是微秒級的,我用的是毫秒級的,都是延時1毫秒。。。。有影響嗎?


延時是為了讓CH375對收到命令或數(shù)據(jù)進行處理,命令、數(shù)據(jù)之后都要加,毫秒太長了,命令后延時1.5us,數(shù)據(jù)后延時0.6uS


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

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