0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開發(fā)心得(2):Android智能硬件的關鍵——串口通信

機智云 ? 2022-07-04 16:51 ? 次閱讀

通過總結大大小小多個Andriod智能硬件開發(fā)項目,記錄了智能硬件產品開發(fā)的全流程、智能硬件開發(fā)所涉及的技術體系概述的心得,并附上在主板選型、串口通信、屏幕顯示、常用外接設備上一些品類的特點和差異,分析了我的開發(fā)流程習慣原因,以供交流。

1ba4acc8-fa28-11ec-a2f4-dac502259ad0.gif5.關于串口通信

串口通信是Android智能硬件開發(fā)所必須具備的能力,市面上類型眾多的外設基本都是通過串口進行數據傳輸的,所以說不會串口通信根本就做不了智能硬件開發(fā)。

5.1 UART定義

通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種串行異步收發(fā)協議。

UART串口有三種工作方式:單工、半雙工、全雙工。硬件連接比較簡單,僅需要3條線,注意連接時兩個設備UART電平,如電平范圍不一致請做電平轉換后再連接,可參考此文章。

我們常見的串口通訊設置的界面如下所示,

1bb71e8a-fa28-11ec-a2f4-dac502259ad0.png

主要有下列幾個參數;

Speed(baud) 波特率

Data bits 數據位

Stop bits 停止位

Parity 奇偶校驗位

Flow Control 流控

我們的設置基本都是8位數據位,1位停止位,無校驗無流控,就如上圖所示。對于程序開發(fā)而言,主要關注的參數就是波特率。

另外,需要注意的是比特率、成波特率兩者之間是有區(qū)別的。

波特率表示每秒鐘傳送的碼元符號的個數,是衡量數據傳送速率的指標,它用單位時間內載波調制狀態(tài)改變的次數來表示。

信息傳輸通道中,攜帶數據信息的信號單元叫碼元,每秒鐘通過信道傳輸的碼元數稱為碼元傳輸速率,簡稱波特率。

1波特即指每秒傳輸1個碼元符號(通過不同的調制方式,可以在一個碼元符號上負載多個bit位信息)。

1比特每秒是指每秒傳輸1比特(bit)。單位“波特”本身就已經是代表每秒的調制數,以“波特每秒”(Baud per second)為單位是一種常見的錯誤。

按照上述的基本設置,其實一個碼元總共傳輸了10個比特,1個起始位+1個停止位+8個數據位,如波特率為9600,那每秒一共傳輸了9600*10 = 96000個比特,換算成字節(jié)為12000 byte,約合11.72kb。

需要注意的是這12000byte指的是串口實際一共傳輸的數據位,但對于我們程序而言,真正能處理的數據就是除去起始位與停止位的數據位,對于傳輸8位數據位的設置而言,波特率是多少則傳輸的字節(jié)就是多少。如9600的波特率表示每秒傳輸9600個字節(jié),每毫秒9.6字節(jié)。

安卓主板中一個串口端子的定義如下圖所示

1bc5938e-fa28-11ec-a2f4-dac502259ad0.png

幾乎所有安卓主板上的串口都是這種4pin的形式,這里有一個特別重要的點,就是對外設接線時,RX要對上外設的TX口,TX則對應RX口,否則是接收不到數據傳輸的。

在我所接觸的眾多外設中,安卓的常用串口有三種標準接口。

RS232

RS485

TTL

UART所指的是硬件接口,是硬件層次的描述。而TTL與RS232、485則指的是數據傳輸的電平標準,計算機的存儲單位是二進制位(bit),也就是0和1,而0和1怎么用電壓來表示呢?不同的表示方法于是對應了不同的標準,這就是TTL、RS232這些電平標準之間的區(qū)別。

所有CPU芯片的UART數據傳輸的電平都是采用TTL標準的,我們所看到的安卓主板上RS232或485的接口都是要再需要經過一次電平轉換才能與CPU進行通信的??梢赃@樣說,安卓主板CPU直接引出來的串口管腳都是TTL標準的,如需要其它的接口則要中間再增加一個電平轉換芯片以滿足要求。

參考文章:

https://www.jianshu.com/p/f1bfc7f6059b

https://blog.csdn.net/zhuyongxin_6688/article/details/78001767

5.2 三種UART接口介紹

TTL

TTL(Transistor-Transistor Logic,晶體管-晶體管邏輯),TTL電路的工作電壓是5V,它的輸出可以是高電平(3.6V)或者低電平(0.3V)。為了用這種模擬量的電壓來表示數字量的邏輯1和邏輯0,TTL電平規(guī)定:

對于輸出電路:電壓大于等于(≥)2.4V為邏輯1;電壓小于等于(≤)0.4V為邏輯0;

對于輸入電路:電壓大于等于(≥)2.0V為邏輯1;電壓小于等于(≤)0.8V為邏輯0;

參考//blog.csdn.net/wofreeo/article/details/82389002

RS232

它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標準”,該標準規(guī)定采用一個25個腳的DB-25連接器,對連接器的每個引腳的信號內容加以規(guī)定,還對各種信號的電平加以規(guī)定。

后來IBM的PC機將RS232簡化成了DB-9連接器,從而成為事實標準。而工業(yè)控制的RS-232口一般只使用RXD、TXD、GND三條線。如下圖所示。

1bdae644-fa28-11ec-a2f4-dac502259ad0.jpg

采用負邏輯,規(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);

數字信號采用差分傳輸方式,即是A-B兩者的電壓差用以表示邏輯狀態(tài),能夠有效減少噪聲信號的干擾。

RS-485工業(yè)總線標準能夠有效支持多個分節(jié)點和通信距離遠,總共可接收32個設備,且對于信息的接收靈敏度較高,均采用屏蔽雙絞線傳輸。采用半雙工(兩線制)最大傳輸距離約1219米,傳輸速度最高達10Mbps。

1bef7488-fa28-11ec-a2f4-dac502259ad0.jpg

原文地址:https://blog.csdn.net/pigdreams/article/details/104351352

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    5926

    瀏覽量

    135703
  • 硬件
    +關注

    關注

    11

    文章

    3164

    瀏覽量

    66007
收藏 人收藏

    評論

    相關推薦

    機智云助力小程序開發(fā):連接智能硬件智能生活

    隨著智能硬件的普及和小程序的興起,人們的生活越來越依賴于智能化的解決方案。作為物聯網領域的領先者,機智云為小程序開發(fā)者提供了豐富的支持和功能,幫助他們輕松實現
    的頭像 發(fā)表于 06-15 08:10 ?299次閱讀
    機智云助力小程序<b class='flag-5'>開發(fā)</b>:連接<b class='flag-5'>智能</b><b class='flag-5'>硬件</b>與<b class='flag-5'>智能</b>生活

    實習大學生如何在Purple Pi OH鴻蒙開發(fā)板下調試Android串口

    開源鴻蒙硬件方案領跑者觸覺智能本文適用于PurplePiOH在Android固件后串口開發(fā)與使用。觸覺
    的頭像 發(fā)表于 05-14 08:32 ?508次閱讀
    實習大學生如何在Purple Pi OH鴻蒙<b class='flag-5'>開發(fā)</b>板下調試<b class='flag-5'>Android</b><b class='flag-5'>串口</b>

    串口通信如何控制步進電機轉動?

    在自動化控制系統中,步進電機的控制是一項重要的技術任務。通過串口通信控制步進電機轉動,可以實現遠程控制和自動化操作,提高生產效率和降低人工成本。本文將詳細介紹串口通信控制步進電機轉動的
    的頭像 發(fā)表于 04-19 16:23 ?1608次閱讀

    ?51單片機串口通信詳細介紹-小白必看

    51單片機串口通信是單片機與外部設備通信的重要方式,它基于串行通信的原理,以字節(jié)為單位進行數據傳輸。在51單片機中,串口
    的頭像 發(fā)表于 04-17 09:33 ?1679次閱讀
    ?51單片機<b class='flag-5'>串口</b><b class='flag-5'>通信</b>詳細介紹-小白必看

    QT串口通信的簡單使用

    QT串口通信是上位機和下位機通信常用的通信方式, 也是學習QT必須學會的基礎知識, 這篇就簡單介紹一下QT串口
    的頭像 發(fā)表于 01-15 09:27 ?1657次閱讀
    QT<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的簡單使用

    【迪文COF結構智能屏試用體驗】基于串口通信的電子相冊(動態(tài)平滑、完整代碼)

    分享。 這篇分享,涉及或需要了解下面的知識: 迪文COF智能屏基礎了解 運行時內存中數據存儲的原理 迪文DBUS GUI開發(fā)軟件 串口指令的基本使用 串口傳送圖片數據的原理 電子相冊的
    發(fā)表于 12-06 15:58

    Android APP如何進行訪問硬件驅動

    本文我們要講的是在用 i.MX8 平臺開發(fā)時,Android APP 如何進行訪問硬件驅動。
    的頭像 發(fā)表于 12-04 13:50 ?1337次閱讀
    <b class='flag-5'>Android</b> APP如何進行訪問<b class='flag-5'>硬件</b>驅動

    【ELF 1開發(fā)板試用】+串口通信測試

    ELF 1開發(fā)板提供了4個串口,分別是UART1、UART2、UART3及UART7。 其中UART1 用于調試串口,無需測試。對 UART2
    發(fā)表于 11-28 20:33

    串口通信原理分析

    的一種。 串口通信原理 串行通信是一種通訊協議,也可以簡稱為串口,可以理解為數據是串成一串的,所以也就只能一位一位的發(fā)送,這樣傳輸的速度雖然受到了限制,但是對
    的頭像 發(fā)表于 11-27 10:51 ?739次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>原理分析

    智能車ROS與STM32串口通信代碼

    這里以一個智能車代碼工程為例,抽取串口通信部分代碼 在頭文件中,進行串口頭文件的包含 # include 在類的定義中,什么一個 serial 類的實例 serial::Serial
    的頭像 發(fā)表于 11-26 17:47 ?1081次閱讀

    Android Runtime源碼解析》+深入體會第六章ART的執(zhí)行(4)

    接上三篇。 《Android Runtime源碼解析》+原創(chuàng)學習心得首發(fā)(1)《Android Runtime源碼解析》+原創(chuàng)學習心得首發(fā)(2
    發(fā)表于 11-17 01:33

    【涂鴉T2-U開發(fā)板試用體驗】第一帖-開箱體驗

    先感謝涂鴉智能提供的試用機會,有幸體驗T2-U開發(fā)板。 涂鴉 T2-U 開發(fā)板 是一款專為開發(fā)
    發(fā)表于 11-16 20:19

    STM32里的串口通信

    端。STM32的串口資源有USART1、USART2、USART3. 串口的幾個重要的參數: 波特率,串口通信的速率 空閑,一般為高電平 起
    的頭像 發(fā)表于 11-10 15:58 ?2796次閱讀
    STM32里的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    licheepi 4a串口通信(usb串口)

    licheepi 4a串口通信(usb串口)
    的頭像 發(fā)表于 11-08 09:09 ?538次閱讀
    licheepi 4a<b class='flag-5'>串口</b><b class='flag-5'>通信</b>(usb<b class='flag-5'>串口</b>)

    Android應用開發(fā)實驗

    電子發(fā)燒友網站提供《Android應用開發(fā)實驗.doc》資料免費下載
    發(fā)表于 10-30 09:32 ?0次下載
    <b class='flag-5'>Android</b>應用<b class='flag-5'>開發(fā)</b>實驗