CH554如果操作FT232USB轉(zhuǎn)串口芯片,類似操作CH340一樣?

CH554使用ch554_uart_2_uart.rar進(jìn)行usb串口透傳,怎么操作FT232的USB轉(zhuǎn)串口芯片,案例中只有CH34X,PL2303,CP210x。怎么添加FT232的支持?謝謝?了

如果在原例程上修改添加更好不過了。

您好

開發(fā)特定USB設(shè)備的主機(jī)時,可以使用一些上位機(jī)軟件抓取USB設(shè)備和上位機(jī)的通信,然后使用MCU模擬這個PC的通信過程。

在枚舉獲取描述符部分,F(xiàn)T232和其他設(shè)備一樣,在設(shè)置波特率等方面可能不同。這邊提供一段FT232波特率等配置的代碼,按照這樣的順序發(fā)送SETUP包,就是配置FT232的過程,希望能有所幫助。

unsigned?char?Baud_buf1_5[8]={0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned?char?Baud_buf6[8]={0x02,0x01,0x00,0x00,0x81,0x00,0x00,0x00};
unsigned?char?Baud_buf7[8]={0x40,0x09,0x10,0x00,0x00,0x00,0x00,0x00};
unsigned?char?Baud_buf8[8]={0xc0,0x05,0x00,0x00,0x00,0x00,0x02,0x00};??//無
unsigned?char?Baud_buf9[8]={0x40,0x04,0x07,0x00,0x00,0x00,0x00,0x00};??//無
unsigned?char?Baud_buf10[8]={0x40,0x01,0x01,0x01,0x00,0x00,0x00,0x00};
unsigned?char?Baud_buf11[8]={0x40,0x01,0x02,0x02,0x00,0x00,0x00,0x00};
unsigned?char?Baud_buf12[8]={0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00};?//無
//unsigned?char?Baud_buf13[8]={0x40,0x03,0xc4,0x09,0x00,0x00,0x00,0x00};
unsigned?char?Baud_buf14[8]={0x40,0x03,0xc4,0x09,0x00,0x00,0x00,0x00};?//特特率
unsigned?char?Baud_buf15[8]={0x40,0x01,0x02,0x02,0x00,0x00,0x00,0x00};?//無
unsigned?char?Baud_buf16[8]={0x40,0x01,0x01,0x01,0x00,0x00,0x00,0x00};?//無
unsigned?char?Baud_buf17[8]={0x40,0x04,0x07,0x02,0x00,0x00,0x00,0x00};?//設(shè)置數(shù)據(jù)位、停止位、校驗位等
unsigned?char?Baud_buf18[8]={0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00};?//流控設(shè)置
unsigned?char?Baud_buf19[8]={0x40,0x06,0x00,0x00,0x00,0x00,0x00,0x00};
//配置FT232R波特率
void?FT232R_Baud_Config(?UINT32?baud?)
{
	unsigned?char?s=0,ix;
	unsigned?short?int?len;	

	FT232R_Baud_Set(Baud_buf1_5);
	FT232R_Baud_Set(Baud_buf1_5);
	FT232R_Baud_Set(Baud_buf6);
	FT232R_Baud_Set(Baud_buf7);
	FT232R_Baud_Set(Baud_buf8);
	FT232R_Baud_Set(Baud_buf10);
	FT232R_Baud_Set(Baud_buf11);
	FT232R_Baud_Set(Baud_buf12);

	baud?=?10*3000000/baud;????//分頻
	baud?=?(baud+5)/10;????????//做四舍五入
	Baud_buf14[2]=baud&0xff;
	Baud_buf14[3]=(baud>>8)&0xff;
	Baud_buf14[4]=(baud>>16)&0xff;
	
	FT232R_Baud_Set(Baud_buf14);//這一次的波特率
	FT232R_Baud_Set(Baud_buf17);
	FT232R_Baud_Set(Baud_buf18);
	FT232R_Baud_Set(Baud_buf19);
	
}



你好,根據(jù)你提供的數(shù)組,我添加到CH554_uart2uart的工程,當(dāng)前實現(xiàn)了FT232插入時檢測設(shè)備,并且能接收一段我開發(fā)板發(fā)送的字符,但是當(dāng)開發(fā)板已經(jīng)發(fā)送結(jié)束了,CH554還是一直接收到FT232發(fā)送的東西,并且串口打印是亂碼的。

下面是工程中我添加的FT232設(shè)置波特率部分函數(shù)

UINT8?FT232_Baud_Config(UINT32?baud)
{
	UINT8?s;
	UINT16?tmp;
	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x00;	
	TxBuffer[2]?=?0x00;???
	TxBuffer[3]?=?0x00;??
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);
	
	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x00;	
	TxBuffer[2]?=?0x00;???
	TxBuffer[3]?=?0x00;??
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);
	
	TxBuffer[0]?=?0x02;
	TxBuffer[1]?=?0x01;	
	TxBuffer[2]?=?0x00;???
	TxBuffer[3]?=?0x00;??
	TxBuffer[4]?=?0x81;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);

	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x09;	
	TxBuffer[2]?=?0x10;???
	TxBuffer[3]?=?0x00;??
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);

	TxBuffer[0]?=?0xc0;
	TxBuffer[1]?=?0x05;	
	TxBuffer[2]?=?0x00;???
	TxBuffer[3]?=?0x00;??
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x02;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);

	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x01;	
	TxBuffer[2]?=?0x01;???
	TxBuffer[3]?=?0x01;??
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);

	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x01;	
	TxBuffer[2]?=?0x02;???
	TxBuffer[3]?=?0x02;??
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);

	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x02;	
	TxBuffer[2]?=?0x00;???
	TxBuffer[3]?=?0x00;??
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;
	s?=?HostCtrlTransfer(?NULL,?NULL?);

	tmp=(10*3000000/baud);
	tmp?=?(tmp+5)/10;
	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x03;	
	TxBuffer[2]?=?(UINT8)(tmp&0Xff);??
	TxBuffer[3]?=?(UINT8)((tmp>>8)&0xff);
	TxBuffer[4]?=?(UINT8)((tmp>>16)&0xff);?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;	
	s?=?HostCtrlTransfer(?NULL,?NULL?);?
	
	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x04;	
	TxBuffer[2]?=?0x07;???
	TxBuffer[3]?=?0x02;???
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;	
	s?=?HostCtrlTransfer(?NULL,?NULL?);?	

	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x02;	
	TxBuffer[2]?=?0x00;???
	TxBuffer[3]?=?0x00;???
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;	
	s?=?HostCtrlTransfer(?NULL,?NULL?);?

	TxBuffer[0]?=?0x40;
	TxBuffer[1]?=?0x06;	
	TxBuffer[2]?=?0x00;???
	TxBuffer[3]?=?0x00;???
	TxBuffer[4]?=?0x00;?
	TxBuffer[5]?=?0x00;
	TxBuffer[6]?=?0x00;
	TxBuffer[7]?=?0x00;	
	s?=?HostCtrlTransfer(?NULL,?NULL?);?
	
	return?s;
}

下面是用SSCOM串口工具打印的亂碼信息:

亂碼.png

求助,當(dāng)前該如何修改程序?問題是出在哪里呢?


您好

使用一些上位機(jī)抓包軟件可以看到,F(xiàn)T232在上傳數(shù)據(jù)時,會默認(rèn)一直上傳兩個字節(jié),0x01 0x60(`),這兩個字節(jié)的數(shù)據(jù)您可以省略掉,只保留后面的數(shù)據(jù)即可。


您好,我嘗試著過濾數(shù)據(jù)包中的0x01和0x60,但是這樣做會導(dǎo)致我數(shù)據(jù)包丟包,是否有可能對FT232進(jìn)行設(shè)置,不要一直發(fā)送0x01和0x60這兩個字符?


樓主解決了嗎 工程是否可以發(fā)給我參考一下



樓主工程是否可以分享一下,郵箱個人信息保護(hù),已隱藏


你好,請問問題解決了嗎?

按照下面的操作:

image.png

會出現(xiàn)在接受FT232的數(shù)據(jù)時,單字節(jié)最高bit位總是為0,例如我發(fā)0x81,單片機(jī)uart口收到的就是0x01, 發(fā)0xAA,收到的就是0x2A,請問有遇到過這種情況嗎?


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

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