通過總結大大小小多個Andriod智能硬件開發(fā)項目,記錄了智能硬件產品開發(fā)的全流程、智能硬件開發(fā)所涉及的技術體系概述的心得,并附上在主板選型、串口通信、屏幕顯示、常用外接設備上一些品類的特點和差異,分析了我的開發(fā)流程習慣原因,以供交流。
5.關于串口通信
串口通信是Android智能硬件開發(fā)所必須具備的能力,市面上類型眾多的外設基本都是通過串口進行數(shù)據(jù)傳輸?shù)?,所以說不會串口通信根本就做不了智能硬件開發(fā)。
5.1 UART定義
通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種串行異步收發(fā)協(xié)議。
UART串口有三種工作方式:單工、半雙工、全雙工。硬件連接比較簡單,僅需要3條線,注意連接時兩個設備UART電平,如電平范圍不一致請做電平轉換后再連接,可參考此文章。
我們常見的串口通訊設置的界面如下所示,

主要有下列幾個參數(shù);
Speed(baud) 波特率
Data bits 數(shù)據(jù)位
Stop bits 停止位
Parity 奇偶校驗位
Flow Control 流控
我們的設置基本都是8位數(shù)據(jù)位,1位停止位,無校驗無流控,就如上圖所示。對于程序開發(fā)而言,主要關注的參數(shù)就是波特率。
另外,需要注意的是比特率、成波特率兩者之間是有區(qū)別的。
波特率表示每秒鐘傳送的碼元符號的個數(shù),是衡量數(shù)據(jù)傳送速率的指標,它用單位時間內載波調制狀態(tài)改變的次數(shù)來表示。
在信息傳輸通道中,攜帶數(shù)據(jù)信息的信號單元叫碼元,每秒鐘通過信道傳輸?shù)拇a元數(shù)稱為碼元傳輸速率,簡稱波特率。
1波特即指每秒傳輸1個碼元符號(通過不同的調制方式,可以在一個碼元符號上負載多個bit位信息)。
1比特每秒是指每秒傳輸1比特(bit)。單位“波特”本身就已經是代表每秒的調制數(shù),以“波特每秒”(Baud per second)為單位是一種常見的錯誤。
按照上述的基本設置,其實一個碼元總共傳輸了10個比特,1個起始位+1個停止位+8個數(shù)據(jù)位,如波特率為9600,那每秒一共傳輸了9600*10 = 96000個比特,換算成字節(jié)為12000 byte,約合11.72kb。
需要注意的是這12000byte指的是串口實際一共傳輸?shù)臄?shù)據(jù)位,但對于我們程序而言,真正能處理的數(shù)據(jù)就是除去起始位與停止位的數(shù)據(jù)位,對于傳輸8位數(shù)據(jù)位的設置而言,波特率是多少則傳輸?shù)淖止?jié)就是多少。如9600的波特率表示每秒傳輸9600個字節(jié),每毫秒9.6字節(jié)。
安卓主板中一個串口端子的定義如下圖所示

幾乎所有安卓主板上的串口都是這種4pin的形式,這里有一個特別重要的點,就是對外設接線時,RX要對上外設的TX口,TX則對應RX口,否則是接收不到數(shù)據(jù)傳輸?shù)摹?/p>
在我所接觸的眾多外設中,安卓的常用串口有三種標準接口。
TTL
UART所指的是硬件接口,是硬件層次的描述。而TTL與RS232、485則指的是數(shù)據(jù)傳輸?shù)碾娖綐藴?,計算機的存儲單位是二進制位(bit),也就是0和1,而0和1怎么用電壓來表示呢?不同的表示方法于是對應了不同的標準,這就是TTL、RS232這些電平標準之間的區(qū)別。
所有CPU芯片的UART數(shù)據(jù)傳輸?shù)碾娖蕉际遣捎肨TL標準的,我們所看到的安卓主板上RS232或485的接口都是要再需要經過一次電平轉換才能與CPU進行通信的。可以這樣說,安卓主板CPU直接引出來的串口管腳都是TTL標準的,如需要其它的接口則要中間再增加一個電平轉換芯片以滿足要求。
5.2 三種UART接口介紹
TTL
TTL(Transistor-Transistor Logic,晶體管-晶體管邏輯),TTL電路的工作電壓是5V,它的輸出可以是高電平(3.6V)或者低電平(0.3V)。為了用這種模擬量的電壓來表示數(shù)字量的邏輯1和邏輯0,TTL電平規(guī)定:
對于輸出電路:電壓大于等于(≥)2.4V為邏輯1;電壓小于等于(≤)0.4V為邏輯0;
對于輸入電路:電壓大于等于(≥)2.0V為邏輯1;電壓小于等于(≤)0.8V為邏輯0;
RS232
它的全名是“數(shù)據(jù)終端設備(DTE)和數(shù)據(jù)通訊設備(DCE)之間串行二進制數(shù)據(jù)交換接口技術標準”,該標準規(guī)定采用一個25個腳的DB-25連接器,對連接器的每個引腳的信號內容加以規(guī)定,還對各種信號的電平加以規(guī)定。
后來IBM的PC機將RS232簡化成了DB-9連接器,從而成為事實標準。而工業(yè)控制的RS-232口一般只使用RXD、TXD、GND三條線。如下圖所示。

采用負邏輯,規(guī)定邏輯“1”的電平為-5V~-15 V,邏輯“0”的電平為+5 V~+15 V。選用該電氣標準的目的在于提高抗干擾能力,增大通信距離。RS -232的噪聲容限為2V,接收器將能識別低至+3V的信號作為邏輯“0”,將高到-3 V的信號作為邏輯“1”。
全雙工通信,傳輸距離較短,其通訊距離小于15 m,傳輸速率小于20 kb/s。
RS485
RS-485總線標準規(guī)定了總線接口的電氣特性標準即對于2個邏輯狀態(tài)的定義:正電平在+2V~+6V之間,表示一個邏輯狀態(tài);負電平在-2V~-6V之間,則表示另一個邏輯狀態(tài);
數(shù)字信號采用差分傳輸方式,即是A-B兩者的電壓差用以表示邏輯狀態(tài),能夠有效減少噪聲信號的干擾。
RS-485工業(yè)總線標準能夠有效支持多個分節(jié)點和通信距離遠,總共可接收32個設備,且對于信息的接收靈敏度較高,均采用屏蔽雙絞線傳輸。采用半雙工(兩線制)最大傳輸距離約1219米,傳輸速度最高達10Mbps。

原文標題:開發(fā)心得(2):Android智能硬件的關鍵——串口通信
-
Android系統(tǒng)
+關注
關注
0文章
57瀏覽量
14216 -
串口通信
+關注
關注
34文章
1663瀏覽量
58201 -
智能硬件
+關注
關注
205文章
2439瀏覽量
111668
原文標題:開發(fā)心得(2):Android智能硬件的關鍵——串口通信
文章出處:【微信號:IoTMaker,微信公眾號:機智云開發(fā)者】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
瑞薩RA MCU眾測寶典 | 串口之【RA-Eco-RA2L1】RTC日歷及串口設置時間
智能顯示模塊通信時有CRC數(shù)據(jù)校驗功能嗎?串口通信能不能加上數(shù)據(jù)檢驗?
硬核進階:RK3576 Android15?驅動與系統(tǒng)開發(fā)實戰(zhàn)指南
智能顯示模塊通過串口通信時,如何知道已正確接收?如何判斷通信的指令符合協(xié)議?
基于FPGA開發(fā)板TSP的串口通信設計
基于FPGA開發(fā)板DE23-Lite的串口通信設計
瑞芯微RK3576開發(fā)板Android14三屏異顯開發(fā)教程
谷歌全新Android助力提高開發(fā)效率
Air780EGH串口通信優(yōu)化:硬件電路設計核心要素剖析
PLC串口自由協(xié)議通信概述
Android智能硬件開發(fā)之串口通信介紹
評論