ESM335x系列工控主板支持5路高速串口,其中COM2口支持硬件RTS/CTS流控功能,其RTS/CTS分別與ESM335x的GPIO1/GPIO0復(fù)用,應(yīng)用程序可以獨(dú)立設(shè)置是否使能RTS/CTS功能。
RTS(Request-To-Send)流量控制功能由串口參數(shù)結(jié)構(gòu)體DCB的fRtsControl成員設(shè)置,該成員的可用值如下(針對(duì)ESM335x):
值 | 說(shuō)明 |
RTS_CONTROL_DISABLE | 禁止RTS功能,對(duì)應(yīng)管腳可作為GPIO使用 |
RTS_CONTROL_HANDSHAKE | 啟用RTS握手功能。當(dāng)串口硬件輸入緩沖區(qū)字符數(shù)大于40時(shí),RTS輸出高,小于24個(gè)字符時(shí),RTS輸出低 |
RTS_CONTROL_TOGGLE | 當(dāng)發(fā)送數(shù)據(jù)時(shí),RTS信號(hào)線被驅(qū)動(dòng)為低,緩沖區(qū)數(shù)據(jù)發(fā)送完后,RTS信號(hào)為被驅(qū)動(dòng)高 |
串口參數(shù)結(jié)構(gòu)體DCB的fOutxCtsFlow成員用于指定CTS(Clear-To-Send)信號(hào)是否被監(jiān)視并作為輸出流量控制信號(hào)。如果此成員設(shè)置為T(mén)RUE且CTS管腳為高,則串口輸出被掛起,直到CTS被拉低后重新輸出。如果此成員設(shè)置為FALSE,對(duì)應(yīng)管腳可作為GPIO使用。
RTS Handshake與OutxCtsFlow通常是同時(shí)使能或同時(shí)禁止的,下面是設(shè)置RTS/CTS的示例代碼:
BOOL CCESerial::SetHandshake( BOOL bSet )
{
DCB dcb;
GetCommState( m_hSer, &dcb );
// Purge any pending characters in the serial port.
PurgeComm(m_hSer, (PURGE_TXABORT|PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR));
if( bSet )
{
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
dcb.fOutxCtsFlow = TRUE;
}
else
{
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fOutxCtsFlow = FALSE;
}
returnSetCommState(m_hSer, &dcb);
}
除COM2口支持硬件流控外,ESM335x的所有串口(包括COM2)還支持 RTS Toggle功能,RTS Toggle主要用于RS485電路的數(shù)據(jù)收發(fā)方向控制,應(yīng)用程序可以選擇ESM335x 32位GPIO中的任意一位做為RTS信號(hào)線來(lái)實(shí)現(xiàn)RTS Toggle功能,下面是選擇GPIO作為串口RTS信號(hào)并使能RTS_CONTROL_TOGGLE的示例代碼:
BOOL CCESerial::SetRTSToggle( DWORD dwRTSPin )
{
DCB dcb;
BOOL bRet;
bRet = DeviceIoControl(m_hSer, // file handle to the driver
IOCTL_SET_UART_RTS_PIN, // I/O control code
&dwRTSPin, // in buffer
sizeof(DWORD), // in buffer size
NULL, // out buffer
0, // out buffer size
NULL, // pointer to number of bytes returned
NULL); // ignored (=NULL)
if( !bRet )
returnFALSE;
GetCommState( m_hSer, &dcb );
// Purge any pending characters in the serial port.
PurgeComm(m_hSer, (PURGE_TXABORT |PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR));
dcb.fRtsControl = RTS_CONTROL_TOGGLE;
SetCommState(m_hSer, &dcb);
returnTRUE;
}
完整的串口例程請(qǐng)與英創(chuàng)工程師聯(lián)系獲取。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6095瀏覽量
36092
發(fā)布評(píng)論請(qǐng)先 登錄
使用Labview做一個(gè)485串口電子秤程序
用Labview寫(xiě)一個(gè)電子稱的485串口程序

RS232串口連接方式及注意事項(xiàng)
中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)
FT232芯片設(shè)計(jì)的USB轉(zhuǎn)RS232串口原理圖
AM335x硬件設(shè)計(jì)指南

快速實(shí)現(xiàn)C2000串口程序升級(jí)

評(píng)論