ESM335x系列工控主板支持5路高速串口,其中COM2口支持硬件RTS/CTS流控功能,其RTS/CTS分別與ESM335x的GPIO1/GPIO0復用,應用程序可以獨立設置是否使能RTS/CTS功能。
RTS(Request-To-Send)流量控制功能由串口參數結構體DCB的fRtsControl成員設置,該成員的可用值如下(針對ESM335x):
值 | 說明 |
RTS_CONTROL_DISABLE | 禁止RTS功能,對應管腳可作為GPIO使用 |
RTS_CONTROL_HANDSHAKE | 啟用RTS握手功能。當串口硬件輸入緩沖區字符數大于40時,RTS輸出高,小于24個字符時,RTS輸出低 |
RTS_CONTROL_TOGGLE | 當發送數據時,RTS信號線被驅動為低,緩沖區數據發送完后,RTS信號為被驅動高 |
串口參數結構體DCB的fOutxCtsFlow成員用于指定CTS(Clear-To-Send)信號是否被監視并作為輸出流量控制信號。如果此成員設置為TRUE且CTS管腳為高,則串口輸出被掛起,直到CTS被拉低后重新輸出。如果此成員設置為FALSE,對應管腳可作為GPIO使用。
RTS Handshake與OutxCtsFlow通常是同時使能或同時禁止的,下面是設置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電路的數據收發方向控制,應用程序可以選擇ESM335x 32位GPIO中的任意一位做為RTS信號線來實現RTS Toggle功能,下面是選擇GPIO作為串口RTS信號并使能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;
}
完整的串口例程請與英創工程師聯系獲取。
-
嵌入式主板
+關注
關注
7文章
6087瀏覽量
35666
發布評論請先 登錄
相關推薦
RS232串口連接方式及注意事項
RS232串口通信協議詳解
中科創達榮獲2024年軟件和信息技術服務優秀企業
適用于AM335x TRF7970A的neard(Linux NFC)構建說明
![適用于AM<b class='flag-5'>335x</b> TRF7970A的neard(Linux NFC)構建<b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
集特推薦 雙網10串口飛騰FT2000商用臺式電腦主機
![集特推薦 雙網10<b class='flag-5'>串口</b>飛騰FT2000商用臺式電腦主機](https://file1.elecfans.com//web2/M00/FD/04/wKgZomaXewaAKv71AAEQ_XaHS7Q22.jpeg)
ESP32串口發送多于128個字節如何處理?
esp32-c3串口無法下載怎么解決?
485串口可以用can協議嗎
三菱串口 fx0N編程口如何使用?
![三菱<b class='flag-5'>串口</b> fx0N編程<b class='flag-5'>口</b>如何使用?](https://file1.elecfans.com/web2/M00/C8/B1/wKgZomYd9NGAY_qIAAKIxBHlmII085.png)
評論