海思HI35xx平臺串口配置

前言

串行接口簡稱串口(通常指COM接口),是採用串行通信方式的擴展接口,其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信,從而大大降低了成本,但傳送速度一般,數據傳輸率爲115kbps~230kbps。異步串行UART(Universal Asynchronous Receiver/Transmitter),即通用異步接收/發送。UART是一款並行輸入轉換爲串行輸出的芯片(如MAX232、MAX485等),它們通常集成在主板上。UART芯片的另一功能是將TTL邏輯電平進行轉換,屬於硬件邏輯實現,不需要軟件的干涉。UART常用的接口標準有RS-232、RS-485,其中RS-232的傳送距離最大爲約15米,最高速率爲20kb/s;而RS-485的最大傳輸距離約爲1219米,最大傳輸速率爲10Mb/s。這兩種接口標準的傳輸速率與傳輸速度差異這麼大,主要是因對邏輯電平的規定以及信號傳輸抗干擾能力不一樣導致的,在實際應用中根據傳輸距離及速度的不同需求選用即可。
 

 

海思UART

在海思芯片架構中,UART主要是將來自外圍設備的數據進行串並轉換後傳入內部總線,以及將數據進行並串轉換後輸出到外圍設備,從而實現兩芯片之間的通信。Hi35XX提供了3個UART單元:

UART0:4線UART,可用於調試、報警和雲臺控制。

UART1:2線UART,可用於調試、報警。

UART3:2線UART,可用於調試、報警。

UART配置:

1、支持數據位和停止位的位寬可編程。數據位可通過編程設定爲5/6/7/8比特,停止位可通過過編程設定爲1bit或2bit。

2、支持奇、偶校驗方式或無校驗。

3、支持速率可編程,支持9600bit/s、14400bit/s、19200bit/s、38400bit/s、57600bit/s、76800bit/s、115200bit/s、230400bit/s、460800bit/s多種波特率可選。

 

海思UART啓用

海思默認只開啓UART0單元作爲調試功能使用,在實際應用中我們常常需要使用UART1、UART2來與外圍設備對接,以實現串口通信。此時我們就需要配置啓用UART1、UART2單元,這個過程分爲3步:

確保硬件IO口設計及時鐘頻率正常
檢查UART單元所使用的IO口複用關係
配置內核,將UART映射爲設備文件
硬件電路部分按要求佈線連接,一般沒什麼問題,這裏主要講解IO口的複用關係配置及內核配置。

上表是海思芯片IO口複用關係表,由此可知大多數IO口的默認功能都不是作爲UART單元來使用,故需要配置它們的複用關係,可以採用在系統啓動腳本里添加如下命令來配置IO口的複用關係:

himm 0x120F00F8 0x1

himm 0x120F00FC 0x1

……

接下來是配置內核,以實現UART單元映射爲linux下的設備文件,這裏主要涉及就是海思的設備樹更改,相對簡單。進入SDK目錄\osdrv\opensource\kernel\linux-3.18.y\arch\arm\boot\dts,找到以下設備樹文件。
 

 

修改以下內容: 

至此海思UART單元配置完成,重新編譯內核,並將內核燒錄運行。如果沒有什麼異常,在設備上的/dev/目錄下會有以下3個設備文件出現,接下來軟件對此設備文件進行編程操作即可。

/dev/ttyAMA0

/dev/ttyAMA1

/dev/ttyAMA2