stm32f103控制ch375串口方式問(wèn)題

請(qǐng)問(wèn)初始化CH375為主機(jī)模式時(shí),CH375一直無(wú)數(shù)據(jù)返回給單片機(jī)是什么原因?無(wú)論寫(xiě)入什么命令,都無(wú)數(shù)據(jù)返回。


void CH375_WR_CMD_PORT( unsigned char cmd ) {?

u8 aCmd;

if(USART_GetFlagStatus(USART2, USART_FLAG_TXE)!=RESET)

{

aCmd = 0x100 | cmd;

USART_SendData(USART2, aCmd);

delay_us(200);

}

}


void CH375_WR_DAT_PORT( unsigned int dat ) { ?

unsigned int aData;

if(USART_GetFlagStatus(USART2, USART_FLAG_TXE)!=RESET)

{

aData = 0xff & dat;

USART_SendData(USART2, aData);

delay_us(200);

}

}


unsigned int CH375_RD_DAT_PORT() { ?

unsigned int dat;

while(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==RESET);

dat = USART_ReceiveData(USART2);

USART_ClearFlag(USART2,USART_FLAG_RXNE);

return(dat);

}




unsigned char mWaitInterrupt() { ?

unsigned char c;

CH375_INT_WIRE=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);

while( CH375_INT_WIRE ); ?

CH375_WR_CMD_PORT( CMD_GET_STATUS ); ?

c = CH375_RD_DAT_PORT( ); ?

if ( c == USB_INT_DISCONNECT ) mDeviceOnline = 0;?

else if ( c == USB_INT_CONNECT ) mDeviceOnline = 1;?

return( c );

}




unsigned charmCH375Init( )

{

unsigned chari,c;

CH375_WR_CMD_PORT( CMD_SET_USB_MODE );?

CH375_WR_DAT_PORT( 6 );?

for ( i = 0xff; i != 0; i -- ) {

c = CH375_RD_DAT_PORT( );

if ( c == CMD_RET_SUCCESS ) break;

}

if ( i != 0 ) return( TRUE ); ?

else return( FALSE );?

}


晶振是否起振?V3引腳在電源電壓為5V時(shí)通過(guò)103電容接地,在3.3V供電時(shí),直接連接到3.3V電源上


晶振已經(jīng)起振,V3引腳是直接連接到3.3V電源上的,我用三線制,INT引腳是必須要接地或者低電平嗎,然后這CH375是可以用3.3V供電吧


下面代碼為ch375部分設(shè)置,在 c = CH375_RD_DAT_PORT( ); ?這句一直無(wú)法通過(guò),因?yàn)闊o(wú)法獲取返回值,就一直處理等待狀態(tài)。


????????CH375_WR_CMD_PORT( CMD_SET_USB_MODE );?

CH375_WR_DAT_PORT( 6 ); ?

delay_us(20);

CH375_WR_CMD_PORT( CMD_CHECK_EXIST );?

CH375_WR_DAT_PORT( 0x55 ); ?

c = CH375_RD_DAT_PORT( ); ?

if ( c != 0xaa ) { ?

for ( i = 100; i != 0; i -- ) { ?

CH375_WR_CMD_PORT( CMD_RESET_ALL );?

c = CH375_RD_DAT_PORT( );?

}

delay_ms(50);

}



郵件上:軟件上,R引腳配置成浮空?INT腳配置成特殊功能腳?? 修改一下。


現(xiàn)在用的是串口查詢,硬件上把INT引腳直接接地了,R引腳試了用其它輸入方式也一樣,配置成浮空輸入時(shí)將R和T引腳短接收發(fā)都正確


請(qǐng)問(wèn)下這是別人論文中關(guān)于寫(xiě)命令的函數(shù),用的stm32f103,寫(xiě)之前有個(gè)GetReady是什么的準(zhǔn)備,有人知道嗎?

write.pngspacer.gif


已經(jīng)找到原因了


什么原因?


CH375串口波特率默認(rèn)是4800吧,軟件配置的stm32波特率為9600,現(xiàn)在可以有數(shù)據(jù)返回了,但發(fā)送命令返回后的值都為0xff


請(qǐng)問(wèn)ch375串口方式時(shí),區(qū)分發(fā)送命令還是發(fā)送數(shù)據(jù)是根據(jù)第九位是1還是0吧


? ? ? ? ? ? ? ? ? ? ? ? ? ?

請(qǐng)問(wèn)ch375串口方式時(shí),區(qū)分發(fā)送命令還是發(fā)送數(shù)據(jù)是根據(jù)第九位是1還是0吧

? ? ? ? ? ? ? ? ? ? ? ?


是的,詳見(jiàn)CH375DS1.PDF 第9頁(yè)6.2.2 串口部分


大佬,這個(gè)照你這樣配置,初始化都不行啊,可以指導(dǎo)一下嗎


您好,STM32操作CH375進(jìn)行初始化的步驟為,初始化GPIO,初始化USART,然后就是配置接口函數(shù)。接口函數(shù)可以參考下面的設(shè)置??梢詤⒖兼溄觝ttp://www.findthetime.net/index.php/bbs/thread-65122-1.html中的STM例程的第三個(gè)

1.

void?xWriteCH375Cmd(?unsigned?char?mCmd?)???????/*?寫(xiě)CH375命令碼?*/
{
????USART_SendData(CH375_UART,?(uint16_t)mCmd|0x0100);
????while(USART_GetFlagStatus(CH375_UART,USART_FLAG_TC)==RESET);
????mDelayuS(3);
}

2.

void?xWriteCH375Data(?unsigned?char?mData?)?????/*?寫(xiě)375數(shù)據(jù)?*/
{
????USART_SendData(CH375_UART,?(uint16_t)mData);
????while(USART_GetFlagStatus(CH375_UART,USART_FLAG_TC)==RESET);
????mDelayuS(2);
}

3.

unsigned?char?xReadCH375Data(?void?)????
{????
????while(USART_GetFlagStatus(CH375_UART,USART_FLAG_RXNE)==RESET);
????return(?(uint8_t)USART_ReceiveData(CH375_UART)?);
}



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

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