CH554使用ch554_uart_2_uart.rar進(jìn)行usb串口透傳,怎么操作FT232的USB轉(zhuǎn)串口芯片,案例中只有CH34X,PL2303,CP210x。怎么添加FT232的支持?謝謝?了
如果在原例程上修改添加更好不過了。
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串口工具打印的亂碼信息:
求助,當(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ù),已隱藏
你好,請問問題解決了嗎?
按照下面的操作:
會出現(xiàn)在接受FT232的數(shù)據(jù)時,單字節(jié)最高bit位總是為0,例如我發(fā)0x81,單片機(jī)uart口收到的就是0x01, 發(fā)0xAA,收到的就是0x2A,請問有遇到過這種情況嗎?