色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

嵌入式系統低速接口SPI和UART的區別

云深之無跡 ? 來源:云深之無跡 ? 2023-08-14 11:44 ? 次閱讀

嵌入式系統低速接口-SPI

繼續說SPI,SPI來說就是沒有IIC那么固定。它就是設計了一種二進制流的交互方式,所以這也是為什么它那么靈活的原因。它可以在任何兩個嵌入式的設備之間交換消息。

但是話又說回來了,SPI和UART都是串行的,那有啥區別呢?

SPI的優點:

速度快,可達數十Mbps

接口簡單,只需要三根線(SCLK、MOSI、MISO)

多設備支持簡單,通過CS線選擇從機

更好的實時控制能力

支持全雙工通信

推挽驅動(跟漏極開路正相反)提供了比較好的信號完整性和較高的速度

比I2C或SMBus吞吐率更高

協議非常靈活支持“位”傳輸

不僅限于8-bit一個字節的傳輸

可任意選擇的信息大小、內容、以及用途

異常簡單的硬件接口:

一般來講比I2C或SMBus需要的功耗更低,因為需要更少的電路(包括上拉電阻)

沒有仲裁機制或相關的失效模式

“從設備”采用的是“主設備”的時鐘,不需要精確的晶振

“從設備”不需要一個單獨的地址 — 這點不像I2C或GPIB或SCSI

不需要收/發器

在一個IC上只用了4個管腳, 板上走線和布局連接都比并行接口簡單很多

每個設備最多只有一個單獨的總線信號(片選);其它的都是共享的

信號都是單方向的,非常容易進行電流隔離

對于時鐘的速度沒有上限,有進一步提高速度的潛力

SPI的缺點:

通信距離短,不適合長距離通信

通常需要額外的片選信號增加從機數量

全雙工通信復雜度較高

相比于I2C總線需要更多的管腳, 即便是只用到3根線的情況下

沒有尋址機制,在共享的總線連接時需要通過片選信號支持多個設備的訪問

在從設備側沒有硬件流控機制(主設備一側可以通過延遲到下一個時鐘沿以降低傳輸的速率)

從設備無法進行硬件“應答”(主設備傳送的信息無法確定傳遞到哪里,是否傳遞成功)

一般只支持一個主設備(取決于設備的硬件構成)

沒有查錯機制

沒有一個正式的標準規范,無法驗證一致性

相對于RS-232, RS-485, 或CAN-總線,只能近距離傳輸

存在很多的變種,很難能夠找到開發工具(例如主適配卡)支持這所有的變種

SPI不支持熱交換(動態地增加一個節點).

如果想使用“中斷”,只有通過SPI信號以外的其它信號線,或者采用類似USB1.1或2.0中的周期性查詢的欺騙方式

有一些變種比如多路I/O SPI和下面定義的三線串行總線都是半雙工的

UART的優點:

只需要兩根線(TX、RX),連接簡單

可支持較遠距離的通信

更簡單的全雙工通信機制

已經得到廣泛應用,資料豐富

UART的缺點:

速率較慢,通常在Mbps量級

單主機與單從機通信,擴展難度大

對時序信號敏感,容易出現誤碼

不具備同步通信能力

總體來說,SPI更適合需要高速的數據交互和實時控制的場景;而UART更適合簡單的遠距離串行通信。

SPI偏向大數據流,UART可以長距離的控制。

假如是自己的封裝的一個SPI的收發協議呢?

wKgaomTZoyyAE4wLAAEIokRUA6k556.png

用結構體封裝一個這樣的東西,別問是啥?就這樣

wKgaomTZoyyAfcwZAAHwRDpYS8E725.png

發送

wKgaomTZoyyAMh-fAAG_4RyeljM571.png

接收

wKgZomTZoyyASu13AAEAtR4-kiA174.png

所以大概要實現的功能

wKgaomTZoyyALbojAACibAJ7atQ862.png

在應用層的時候,這樣使用

以上這些函數就可以實現,兩個MCU之間的自定義協議的通訊。

wKgZomTZoyyAcCPbAAHfyYHvKWM556.png

在數據在處理上面,還有一個小細節,就是SPI和IIC的傳感器,有時候里面的data要使用二進制的補碼。

wKgZomTZoy2AV9byAAIfMKVho-w573.png

就像這樣

使用二進制補碼表示數據的好處主要有:

兼容有符號數據表示

二進制補碼可以直接表示傳感器采集的有符號數據(負數),無需額外處理。比如溫度值可以直接用二進制補碼形式表示正負溫度。

提高數據處理效率

如果使用純二進制表示無符號數據,CPU進行有符號數的運算和比較需要額外處理。使用補碼可以直接進行算術運算,提高效率。

節省通信帶寬

如果使用ASCII等編碼,數據存儲和傳輸會膨脹很多。二進制補碼表示可以高效利用每一位。

簡化數據解析

補碼形式的數據可以直接作為int16、int32等有符號類型解析,無需復雜解碼。

減少出錯概率

ASCII編碼需要進行 num-to-ascii 和 ascii-to-num 的轉換,容易引入錯誤。二進制補碼可以避免這類問題。

統一不同設備的數據表示

采用標準補碼表示,使不同廠家的設備的數據可以統一被處理。

但需要注意,二進制補碼需要處理符號位擴展問題,左移時需要適當維護符號位。并且 debug 和顯示需做轉換。使用二進制補碼可以提高傳感器數據處理的效率與質量。

那說了這么多,自己模擬一個協議可能是最好的,這里就用51單片機來搞這個。

wKgaomTZoy2Aau1cAAEjFECwJgg622.png

使用的引腳

wKgZomTZoy2ANNEhAAGFfpqFbRo949.png

遍歷需要發送的數據字節數組,一位一位寫入MOSI口。同時通過設置SCK為1和0來模擬SPI時鐘的上升沿和下降沿。

wKgaomTZoy2AAOx9AAFGYz_TNx8527.png

在一個8位循環內,讀取MOSI的每一位數據,在SCK上升沿時采樣,并寫入data變量。SCK下降沿準備采樣下一位。

wKgZomTZoy2AV5dsAADUslD_Hr8770.png

傳感器具有能在SCK輸入信號為有效高電平或低電平時工作的能力。當 CE 信號變成高電平時,檢測到 SCK 的 無效狀態,而時鐘輸入 (CP)的極性決定數據是在系統時鐘的上升沿或下降沿移入或移出,

wKgZomTZoy2AcSsKAACXqh2WrAc168.png

看眼引腳

wKgaomTZoy2AT4ztAAGZm0hEEcg415.png

這個圖給出了用于傳送數據到寄存器和從寄存器移出數據的相應時鐘邊沿。 每個時鐘脈沖傳送一位數據 ,數據位以 8 位為一組傳送。

A是地址,D是數據。先發送地址字節,隨后為數據。

wKgaomTZoy2AGzleAAJNfsbtUyA764.png

數據可以采用單字節或多字節包的方式進行傳送,在 3 字節包中,數據序列包括溫度數據的 MSb、溫度數據的 LSb 和緊接著的控制寄存器數據。通過向寄存器寫入所需數據包的最高地址來啟動多字節讀功能。

串行輸出: SCLK : SCK, CLK.

主輸出 –> 從輸入: MOSI : SIMO, SDI(對于“從”設備), DI, DIN, SI, MTST.

主輸入 ←- 從輸出: –> MISO : SOMI, SDO (對于“從”設備), DO, DOUT, SO, MRSR.

從選擇: SS : nCS, CS, CSB, CSN, EN, nSS, STE, SYNC.

多數從設備的輸出是三態的,當該從設備沒有被選中的時候它們的MISO信號就為高阻(邏輯上斷開連接)。不具有三態輸出的器件是不能同其它器件共享SPI總線部分的,只能是一個從設備跟主設備相連。

單片機GPIO引腳的三態(Tri-state)是指該引腳可以處于三種狀態:

1.推挽輸出: 引腳被配置為輸出,可以被置高電平(1)或者低電平(0)。

2.開漏輸出: 引腳被配置為開漏輸出,可以被置低電平(0),或處于高阻抗狀態(Z)。

3.高阻輸入: 引腳被配置為輸入,此時處于高阻抗狀態(Z),可以檢測外部信號的高低電平。

文章的最后解惑一下。

wKgZomTZoy2AQWb_AAIcNciz0xA041.png

這里以最常見的SPI3模式說下時序圖怎么看。

當數據未發送時以及發送完畢后,SCK都是高電平,因此CPOL=1??醋钋懊?。

在SCK第一個沿(下降沿)的時候,MOSI和MISO會發生變化。同時SCK第二個沿(上升沿)的時候,數據是穩定的,此刻采樣數據是合適的,也就是上升沿即一個時鐘周期的后沿鎖存讀取數據,即CPHA=1。

當CPHA=0、CPOL=0時SPI總線工作在方式0,如下圖。簡化起見把MOSI和MISO合在一起了。

wKgaomTZoy2AJvBVAAIGeGj1IOU158.png

SPI0通信時序圖

SPI1和SPI2

當CPHA=0、CPOL=1時SPI總線工作在SPI1

當CPHA=1、CPOL=0時SPI總線工作在SPI2。

wKgaomTZoy2AL75PAAPC8EQ-sdQ517.png

SPI1和SPI2通信時序圖

要點,看發送前的時鐘,然后看兩個邊沿對應的數據線,判斷什么時候是保持邊沿的。適合采樣的。

審核編輯:湯梓紅

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

    關注

    41

    文章

    3587

    瀏覽量

    129436
  • 接口
    +關注

    關注

    33

    文章

    8575

    瀏覽量

    151016
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1706

    瀏覽量

    91507
  • uart
    +關注

    關注

    22

    文章

    1235

    瀏覽量

    101354

原文標題:?嵌入式系統低速接口-SPI(完結)

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    調試嵌入式系統設計中的低速串行總線

    調試嵌入式系統設計中的低速串行總線今天,嵌入式系統幾乎遍布在人類社會的每個角落。嵌入式
    發表于 11-26 09:33

    調試嵌入式系統設計中的低速串行總線(二)

    調試嵌入式系統設計中的低速串行總線(二)SPI背景知識串行外設接口總線(SPI)最初是摩托羅拉在
    發表于 11-26 21:39 ?1200次閱讀
    調試<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>設計中的<b class='flag-5'>低速</b>串行總線(二)

    DSP嵌入式系統人機接口設計

    DSP嵌入式系統人機接口設計  1 引言   人機接口嵌入式控制系統的重要組成部分,用于
    發表于 12-24 16:34 ?973次閱讀
    DSP<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>人機<b class='flag-5'>接口</b>設計

    基于嵌入式系統的Internet接口開發

    基于嵌入式系統的Internet接口開發
    發表于 02-07 17:25 ?11次下載

    低速數據采集系統設計,DSP嵌入式系統開發典型案例

    低速數據采集系統設計,DSP嵌入式系統開發典型案例
    發表于 10-19 10:28 ?17次下載
    中<b class='flag-5'>低速</b>數據采集<b class='flag-5'>系統</b>設計,DSP<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>開發典型案例

    嵌入式硬件通信接口協議中的串行通信接口-SPI

    本節繼續講嵌入式硬件通信接口協議中的另外一個串行通信接口-SPI。相比于UART串口協議,SPI
    發表于 02-05 11:35 ?1639次閱讀
    <b class='flag-5'>嵌入式</b>硬件通信<b class='flag-5'>接口</b>協議中的串行通信<b class='flag-5'>接口</b>-<b class='flag-5'>SPI</b>

    嵌入式系統教程之嵌入式系統的IO模塊詳細資料說明

    本文檔的主要內容詳細介紹的是嵌入式系統教程之嵌入式系統的IO模塊詳細資料說明包括了:1 復位電路,2 時鐘,3 I/O模塊,4 譯碼器,5 定時器/計數器
    發表于 06-14 17:14 ?8次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>教程之<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>的IO模塊詳細資料說明

    嵌入式常見的通信接口/協議

    0 引言??嵌入式開發中,常見的通信接口/協議有SPI,I2C,UART三種,本文先分三個部分對SPI,I2C,
    發表于 10-19 18:33 ?16次下載
    <b class='flag-5'>嵌入式</b>常見的通信<b class='flag-5'>接口</b>/協議

    嵌入式軟件接口怎么測試,嵌入式系統接口測試策略.doc

    嵌入式系統接口測試策略嵌入式系統接口測試策略摘要:在日益廣泛應用的
    發表于 10-20 19:06 ?16次下載
    <b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>接口</b>怎么測試,<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b><b class='flag-5'>接口</b>測試策略.doc

    嵌入式Linux UART

    文章目錄前言串口連接串口測試C代碼微信公眾號前言這是前篇:嵌入式Linux i.MX開發板嵌入式Linux NFS嵌入式Linux 交叉編譯工具鏈嵌入式Linux LED GPIO
    發表于 11-01 16:26 ?8次下載
    <b class='flag-5'>嵌入式</b>Linux <b class='flag-5'>UART</b>

    嵌入式linux系統嵌入式android系統區別和聯系

    目錄區別與聯系嵌入式系統在物聯網行業中的應用物聯網嵌入式系統的特征區別與聯系這個問題很多人問,尤
    發表于 11-01 17:05 ?5次下載
    <b class='flag-5'>嵌入式</b>linux<b class='flag-5'>系統</b>和<b class='flag-5'>嵌入式</b>android<b class='flag-5'>系統</b>的<b class='flag-5'>區別</b>和聯系

    嵌入式硬件通信接口協議-SPI(二)分層架構設計模擬接口

    嵌入式硬件通信接口協議-SPI(二)分層架構設計模擬接口
    發表于 12-09 12:36 ?19次下載
    <b class='flag-5'>嵌入式</b>硬件通信<b class='flag-5'>接口</b>協議-<b class='flag-5'>SPI</b>(二)分層架構設計模擬<b class='flag-5'>接口</b>

    嵌入式硬件通信接口協議-SPI(一)協議基礎

    /hDUK43s8naybJLvoE2UsoA?本節繼續講嵌入式硬件通信接口協議中的另外一個串行通信接口-SPI。相比于UART串口協議,
    發表于 01-12 17:48 ?10次下載
    <b class='flag-5'>嵌入式</b>硬件通信<b class='flag-5'>接口</b>協議-<b class='flag-5'>SPI</b>(一)協議基礎

    嵌入式系統串口UART接口為啥沒有數據輸出

    大家常說嵌入式里面的串口,一般是指UART(Universal Asynchronous Receiver Transmitter:通用異步收發器)。雷卯電子工程師了解到嵌入系統
    的頭像 發表于 08-15 10:24 ?963次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>串口<b class='flag-5'>UART</b><b class='flag-5'>接口</b>為啥沒有數據輸出

    嵌入式系統串口UART接口為啥沒有數據輸出

    點擊關注,電磁兼容不迷路。1.簡單解釋SOC的串口UART接口做啥用雷卯大家常說嵌入式里面的串口,一般是指UART(UniversalAsynchronousReceiverTrans
    的頭像 發表于 08-16 11:47 ?1158次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>串口<b class='flag-5'>UART</b><b class='flag-5'>接口</b>為啥沒有數據輸出
    主站蜘蛛池模板: 男人电影天堂手机| 国内精品久久久久久久试看| 亚洲 欧美 国产 伦 综合| 久久成人免费观看草草影院| 99久久国产综合精品国| 受被三个攻各种道具PLAY| 精品国产三级a| qvod影院| 亚洲va精品中文字幕| 国产360激情盗摄全集| 强奸美女老师| 国产乱人伦AV麻豆网| 一个人在线观看免费高清视频在线观看| 久久这里只有热精品18| 中文字幕a有搜索网站| 欧美巨大巨粗黑人性AAAAAA| 国产97视频在线观看| 亚洲欧美一区二区三区导航| 伦理在线影院伦理电影| 成人国产精品日本在线| 亚洲高清无在码在线无弹窗| 久就热视频精品免费99| 虫族bl文全肉高h| 黄A无码片内射无码视频| jzz大全18| 亚洲免费三区| 日本视频久久| 久久精品中文闷骚内射| 高清不卡伦理电影在线观看| 在线 国产 欧美 亚洲 天堂| 熟妇内谢69XXXXXA片| 玛雅成人网| 国产女人毛片| 99精品视频在线观看| 亚洲精品不卡视频| 青青操久久| 久久精品一区二区影院| 国产精品你懂得| 99视频全部看免费观| 亚洲欧美日韩精品久久奇米色影视| 日本69xx 老师|