UP Board 串口使用心得


前言

原創文章,轉載引用務必注明鏈接。

本文使用Markdown寫成,為獲得更好的閱讀體驗和正常的圖片、鏈接,請訪問我的博客:

http://www.cnblogs.com/sjqlwy/p/up_serial.html

UP Board 關於如何使用串口資源的官方介紹僅有Serial consolePinout維基頁面,后者提供了樹莓派40Pin串口通信的示例。整體而言所述較少,官方論壇有零星提及(),所以本文在我個人使用基礎上寫成,分享給大家,希望能有所幫助。

本文以ubilinux 3系統為例。

UP 板的串口資源

UP默認有兩個串口UART0和UART1可供使用,此外USB 3.0 OTG接口可虛擬出一個串口使用。串口常用的有串口通訊(連接其他模塊、開發板)和串口終端(Serial Console,可以登錄系統)

10-pin 接口 CN7 (UART0)

使用官方的CN7轉接器可以獲得額外的串口和兩個USB2.0接口,只有該串口可以設置BIOS(開機按ESC)。設備為/dev/ttyS0

【CN7轉接器】購買鏈接,售價9.99刀(不含稅不包郵)。另外私以為官方店賣的東西售價略高(老外錢好賺么。。。),另外國內研揚科技也開了官方天貓店,希望盡快能上架相關配件,最好有點優惠或者符合我國消費水平的定價。

將轉接器連接到UP板之后,可以在ubilinux里通過minicom、picocom等工具來訪問,或在Windows主機下使用putty、Xshell訪問。

設置參數如下

  • 波特率(Baud Rate): 115200
  • 數據位(Data Bits): 8
  • 停止位(Stop Bits): 1
  • 檢校位(Parity): None|無
  • 硬件流控(Hardware flow control): None|無

關於硬件流控(CTS/RTS)的更多信息可以看這里

接線如下(官方以FTDI Table為例)

根據官方轉接器文檔和FTDI Cable線的定義可知:黑色為GND,紅色為RX,白色為TX。需要公對公杜邦線連接。

該串口可以設置BIOS和調試系統(Serial Console)。另外安裝ubilinux時也支持Install (serial console)安裝模式(有屏幕有鍵盤,為啥還要這個。。。)安裝完ubilinux后,UART0可以用來登錄系統,UART1用來進行串口通信。

由於我沒有CN7轉接器,無法進一步測試。但是覺得這樣的設計不甚合理。沒有顯示器的情況下根本無法操作UP,這個可能和其設計理念有關。

40-pin GPIO header (UART1)

該串口無法訪問設置BIOS(可能因為UART0是Intel Atom Z8350引出的,,UART1是Max V引出的?)。設備名/dev/ttyS1,為了兼容樹莓派,別名/dev/ttyAMA0接線方式參考樹莓派引腳順序即可,前文有過闡述,因為該串口默認不是作為Serial Console的,所以當時並沒有顯示登錄調試信息。我們下面會對該端口進行演示。

USB3.0 OTG 虛擬串口

該串口無法訪問設置BIOS(使用USB Gadget 驅動虛擬出來的,系統啟動后才會加載該驅動)。

需要在BIOS里面將USB3.0 OTG接口從host模式設置為Device模式:

Chipset > South Bridge > Default DRD ConfigDeviceMode 
Chipset > South Bridge > USB OTG SupportPCI mode

另外要在ubilinux里面加載USB Gadget驅動:

  • sudo modprobe g_serial
  • sudo systemctl start getty@ttyGS0

此時使用Usb 3.0 Type-A轉micro Type-B線連接到電腦上即可訪問該串口(是不是和Intel Edison很像~)

關於USB Gadget的更多信息請訪問我之前寫的文章《使用Wyliodrin在 Intel Edison 上輕松遠程開發》。文末有提到相關信息。通過USB Gadget驅動可以實現虛擬網卡、虛擬串口、存儲設備的功能,有待我們進一步開發。

UART1功能演示

串口通信

根據官方40Pin的介紹,我們一起來看看UART1的串口通信功能。PS:串口通信和串口終端功能是互斥的,無法同時使用。

使用的設備包括:

  1. 串口調試模塊(USB2TTL為例)。手頭有三款:CMSIS-DAP CDC虛擬串口、FTDI Table、CH340G
  2. 杜邦線

正常安裝完相關驅動,使用杜邦線與UP板的6/8/10引腳分別連接,我們需要選用一款Windows下的圖形界面串口調試工具。這里找到三個(有更好的選擇可以推薦給我,不勝感激。當然你也可以去github上找找或者自己編寫):

從UP板輸出信息到UART1

將UART1配置為Raw Data傳輸,無流控,波特率115200:

stty -F /dev/ttyS1 115200 raw -echo -echoe -echok -crtscts

向主機發送一個字符串:

echo "Hello World from UP Board" > /dev/ttyS1

這時我們就可以在Windows主機這里接收到UP板發送的信息了。

從主機發送信息到UP板UART1

UP板監聽UART1:

cat /dev/ttyS1

從Windows主機發送信息和UP板收到信息:

遇到錯誤?

  1. 排除接線是否正確

  2. 排除USB2TTL模塊是否故障

    使用金屬短接TX、RX,然后發送數據看看是否能接收。

UP板通過UART1與其他開發板、串口模塊通信

圖文待補充。表示昨天剛上完24小時,明早要開始上個36小時。。。太累了。

串口終端(Serial Console)

UP Board默認使用UART0才能進行串口登錄,而一般大家手中都不會有官方的那種CN7轉接器需要額外購買(官方計劃通~),那么我們能否通過設置讓UART0可以進行串口登錄呢?

相信使用過樹莓派的都了解過如何使用串口登錄,比如樹莓派實驗室的這篇文章,其主要是通過修改/boot/cmdline.txt文件來實現的。那么對於UP Board,應該怎么辦?這里我們又找到了萬能的ArchWiki Working with the serial console 。UP Board使用GRUB2引導+systemd控制系統啟動,設置UART1串口登錄方法如下:

修改/etc/default/grub文件(nano或vim等,將ttyS0改為ttyS1):

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS1,115200n8"

並增加以下信息:

## Serial console
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

重新生成grub.cfg文件:

grub-mkconfig -o /boot/grub/grub.cfg

重啟之后即可以通過UART1登錄系統啦。

后記

UP板的GPIO接口使用3.3v電平,一般的Arduino使用5v電平,需要注意。另外可以看到3個可用的串口中,只有UART0具有完整的調試功能,而該接口需要額外購買並不常見的轉接器,官方沒有像Beaglebone Black那種引出專門的接口原因不得而知,或者為了賣轉接器,或者為了控制體積——畢竟Intel也說,在這么小的體積上做出一個采用Atom的小電腦很厲害。

寫了很多關於UP基礎的東西,而且盡量黑箱測試,以多發現UP板的問題,也因此走了不少彎路。由於UP社區建立不久,相關文檔比較匱乏,在我看來,愛板網的這次試用應把大多數精力集中在UP特色與特殊之處,而高級的通用的應用可以放在后面寫,畢竟有些東西在多個平台都適用,甚至直接一鍵腳本就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM