英創EM928x系列主板包括板載8路物理串口的EM9281和EM9280,以及板載7路串口的EM9281,其中ttyS1-ttyS5為高速全雙工串口;ttyS6-ttyS8為低速串口。除了ttyS3引出方式為232電平以外,其余7路串口均以TTL電平引出,客戶可以在應用底板上將這些串口擴展為標準RS232或RS485串口使用,也可以連接自己的串口外設。
EM928x的TTL串口除了ttyS1以外,都是三線串口,提供RXD、TXD、GND這3路信號。為了提高電路的抗干擾能力,實際RS485串口應用中,客戶可能需要使用RTS#硬件方向控制。英創為此提供的方案是:用戶程序可設置主板上的某位GPIO作為RTS#信號線,設置后內核串口驅動中將增加相關的控制操作,客戶只需在使用串口之前使能RTS#功能,就可以啟動RTS#硬件方向控制功能。
目前支持這一功能的有ttyS1、ttyS3、ttyS4、ttyS5這4路串口,相應的可以配置GPIO用于模擬RTS#信號線,EM9280的GPIO中能夠作為RTS#信號線的有:GPIO0、GPIO1、GPIO6、GPIO7、GPIO10、GPIO11、GPIO20、GPIO21、GPIO22、GPIO23、GPIO24、GPIO25、GPIO26、GPIO27、GPIO28、GPIO29、GPIO30、GPIO31。而EM9821和EM9287的GPIO都可以作為RTS#信號線。
須注意的是,上述4路GPIO一旦被用作RTS#信號線,則該管腳不能同時作為GPIO使用。
要使用這一功能,在應用底板制作的時候,除了引出TXD、RXD,并將串口信號轉換為差分信號以外,還需要進行一些電路擴展,如下圖。
從圖中可以看出,方向控制信號COM2_RTSn(即RTS#信號)是低電平有效的,有效時(低電平)串口處于發送狀態,無效時(高電平)處于接收狀態。 用戶需要特別注意RTS#信號是低電平有效的控制信號,這是因為:(1)在主板上電復位時,所有管腳均處于帶上拉的輸入狀態,這時管腳的電平為高。采用低電平輸出有效,防止了在上電復位過程中,RS485總線被無效信號干擾的問題;(2)若由于某種原因RTS#信號與RS485驅動斷開,因為懸空管腳在數字電路中是作高電平狀態的,因此也避免了電路內部的故障影響RS485總線的情況發生。
EM928x內核中已經增加了RTS#控制部分,在串口測試例程中也增加了相應結構定義和函數如下:
unsigned int pin=GPIOx; //x為哪一路GPIO
res=ioctl(m_fd,EM9280_IOCTL_SET_RTS_PIN,&pin);
之后對于串口的讀寫操作和標準的RS232串口操作完全一致。
由于RTS#的控制由驅動程序自動進行,因此無論是否打開這一功能,客戶的應用程序開發是完全一樣的,可參考英創光盤的Step2_SerialTest進行開發。
另,用戶還可以通過修改u-boot配置來啟動RTS#硬件方向控制功能,如需實現這一操作,可與我公司聯系以獲得相關技術支持。
-
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35225
發布評論請先 登錄
相關推薦
評論