精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

面向接口的編程——SPI總線和IIC總線

AGk5_ZLG_zhiyua ? 來源:互聯網 ? 作者:佚名 ? 2017-10-26 18:20 ? 次閱讀

>>> 4.4.1 中斷與事件驅動

無論采用哪種總線都使用時鐘信號和數據/控制線,時鐘信號由 MCU 主機進行控制。用于控制的信號線中的 SPI 為 4 根,除了具有傳輸的信號外,還具有片選信號,通過該信號的有效與否,主機指定哪個器件作為目標對象。

>>> 4.6.1 SPI 總線簡介

在這里,以 LPC824 為例來介紹主機 SPI 的原理和應用設計。

  • SSEL:片選輸入

當 SPI 作為主機時,則在串行數據啟動前驅動 SSEL 信號,使之變為有效狀態,并在串行數據發送后釋放該信號,使之變為無效狀態。默認 SSEL 為低電平有效,也可將其選為高電平有效。當 SPI 作為從機時,處于有效狀態的任意 SSEL 信號都表示該從機正在被尋址。

  • MOSI :主機輸出從機輸入

MOSI 信號可將串行數據從主機傳送到從機。當 SPI 作為主機時,則串行數據從 MOSI輸出;當 SPI 作為從機時,則串行數據從 MOSI 輸入。

  • MISO :主機輸入從機輸出

MISO 信號可將串行數據由從機傳送到主機。當 SPI 作為主機時,則串行數據從 MISO輸入;當 SPI 作為從機時,則串行數據輸出至 MISO。

  • SCK:時鐘信號

SCK 同步數據傳送時鐘信號。它由主機驅動從機接收,使用 SPI 接口時,則時鐘可編程為高電平有效或低電平有效。

>>> 4.6.2 74HC595 接口

在同一時鐘信號作用下,74HC595 實現數據的串行輸入/并行輸出轉換。除了 8 個并行輸出口之外,74HC595 還有 5 個輸入控制口,其中的Q 7 ~ Q 0 端輸出;同時將V CC ,從而保證 74HC595 處于永久選通狀態。另外還有 3 個輸入端:CP 時鐘信號端、D 數據輸入端與 STR 鎖存信號,其分別連接 MCU 的 SCK、MOSI 與 SSEL,詳見圖 4.18。

圖 4.18 74HC595 電路圖

在 CP 時鐘信號上升沿的作用下,保證將加載 D端的二進制數據依次送入 74HC595 中。當數據移位完成后,在 STR 上升沿的作用下,數據將一次性地在 Q 7 ~ Q 0 端輸出,從而保證在移位的過程中,輸出端的數據保持不變。

MiniPort-595 模塊采用 74HC595 擴展 8 路 I/O,可以直接驅動 LED 顯示模塊,其對應AM824-Core 的 MiniPort 接口 J4 功能定義詳見圖 4.19(b)。MiniPort-595 模塊輸出信號引腳J2 功能定義詳見圖 4.19(c)。

圖 4.19 595 模塊實物與控制接口定義

假設要將 1000 0000 串行傳送到 74HC595 的并行輸出端 Q 7 ~ Q 0,此數據在時鐘脈沖的作用下,從 Q 7 ~ Q 0逐位送到串行數據輸入端 D。待 8 個時鐘脈沖過后,10000000在Q 7 ~ Q 0并行輸出。AMetal針對 74HC595 提供了相應的 hc595.h 接口,詳見程序清單 4.44。

程序清單 4.44 hc595.h 接口

由此可見,在初始化 74HC595 相關的操作后調用 hc595_send_data(),則串行輸入并行輸出一個 8 位二進制數,74HC595 的輸出管腳當作 8位 I/O 口使用。此前控制 8 個 LED 流水燈不得不使用 8 個 I/O 口,現在有了 74HC595,則可以節省的更多 I/O 口留作其它用途。

顯然,只要將 AM824-Core 主機、MiniPort-595 模塊的 MiniPort A(排針)與 MiniPort-LED 模塊的 MiniPort B(排母)直接對插即可,其原理圖詳見圖 4.20,模塊的組合詳見圖 4.21(a),組合之后對應 MCU 的 MiniPort 接口 J4 端口功能定義詳見圖 4.21(b),MCU 通過 STR、CP和 D 這 3 個端口控制 74HC595 芯片驅動8 個 LED,詳見程序清單 4.45。

圖 4.20 8 路輸出 I/O 擴展

圖 4.21 模塊組合實物與控制接口定義

程序清單 4.45 74HC595 通用接口范例程序

顯然,同樣可以用 74HC595 來驅動數碼管的 8 個段,其原理圖詳見圖 4.22。

圖 4.22 2 位數碼驅動電路

將AM824-Core、MiniPort-595模塊的MiniPort A(排針)與MiniPort-View模塊的MiniPort B(排母)3 個模塊直接對插即可,詳見圖 4.23(a),組合之后對應 MCU 的MiniPort接口J4功能定義詳見圖4.23 (b)。MCU 除了使用 STR、CP 和 D 端口控制74HC595,還需要使用 COM0 和 COM1控制數碼管的位選。

圖 4.23 模塊組合實物與控制接口定義

其實使用 74HC595 與直接使用 I/O驅動數碼管,唯一的不同是段碼的輸出方式不一樣,因此僅需修改段碼傳送函數,并將實現代碼添加到digitron1.c 中,詳見程序清單 4.46。

程序清單 4.46 新增 74HC595 驅動數碼管的相關函數

由于用戶不會直接調用 digitron_hc595_segcode_set(),因此僅將 digitron_hc595_init()和digitron_hc595_disp_scan()添加到程序清單 4.47 所示的 digitron1.h 接口中。

程序清單 4.47 digitron1.h

當使用 74HC595 驅動數碼管時,只要調用相關函數即可,詳見程序清單 4.48。

程序清單 4.48 74HC595 驅動數碼管實現秒計數器范例程序

4.7 I2C 總線

>>> 4.7.1 I2C 總線簡介

I2C 總線(Inter Integrated Circuit)是 NXP 公司開發的用于連接微控制器與外圍器件的兩線制總線,不僅硬件電路非常簡潔,而且還具有極強的復用性和可移植性。I2C 總線不僅適用于電路板內器件之間的通信,而且通過中繼器還可以實現電路板與電路板之間長距離的信號傳輸,因此使用 I2C 器件非常容易構建系統級電子產品開發平臺。其特點如下:

  • 總線僅需 2 根信號線,減少了電路板的空間和芯片管腳的數量,降低了互連成本;

  • 同一條 I2C 總線上可以掛接多個器件,器件之間按不同的編址區分,因此不需要任何附加的 I/O 或地址譯碼器;

  • 非常容易實現 I2C 總線的自檢功能,以便及時發現總線的異常情況;

  • 總線電氣兼容性好,I2C 總線規定器件之間以開漏 I/O 互連,因此只要選取適當的上拉電阻就能輕易實現 3V/5V 邏輯電平的兼容;

  • 支持多種通信方式,一主多從是最常見的通信方式。此外還支持雙主機通信、多主機通信與廣播模式;

  • 通信速率高,其標準傳輸速率為100Kbps (每秒100K位),在快速模式下為400Kbps,按照后來修訂的版本,位速率可高達 3.4Mbps。

>>> 4.7.2 LM75B 接口

AM824-Core 選擇與 LM75A 兼容的 LM75B 數字測溫傳感器,其關斷模式下消耗的電流僅為 1μA。

1. 特性

LM75B 是 NXP 半導體推出的具有 I2C 接口的數字溫度傳感器芯片,其關鍵特性如下:

  • 器件地址 1001xxx,同一總線上可以外擴 8 個器件;

  • 供電范圍:2.8~5.5V,溫度范圍:-55~125℃;

  • 11 位 ADC 提供溫度分辨率達 0.125℃;

  • 精度:±2℃(-25~100℃),±3℃(-55~125℃)。

LM75B 的管腳排列詳見圖 4.24,從機地址為 0x90,A0~A2 分別為地址選擇位 0~2,且必須在 SCL 串行時鐘輸入與 SDA 串行數據信號線上添加上拉電阻。當芯片過熱時,則關斷輸出。

圖 4.24 LM75B 管腳圖

2. 應用電路

LM75B 典型應用電路詳見圖 4.25,R5 和 R6 是 I2C總線的上拉電阻。由于板載只有一片 LM75B,因此不用考慮芯片的地址問題,即可將芯片的 A0~A2 引腳直接接地。OS 為芯片的過熱輸出,可以外接繼電器等器件實現獨立溫控器的功能。由于是通過 MCU 實現測溫的,因此該引腳可以懸空。只要短接(J13_1、J13_2)與(J11_1、J11_2),則 SDA、SCL 分別與 PIO0_18、PIO0_16 相連。

圖 4.25 LM75B 應用電路圖

如圖 4.26 所示為 AM824-Core 的加熱電路,R32 的阻值為 20~50Ω(2W)。短接 J14_2與J14_3即可將焊接在LM75B附近的加熱電阻R32與KEY相連,當 KEY 鍵按下時,則 R32 開始發熱,此時電阻上產生的熱量會通過較粗的導線傳導到 LM75B 的下面,于是LM75B 也會跟著熱起來。如果電阻越小,則通過的電流越大,產生的熱量也就越大。當按鍵按下時電路導通,這時可以通過測溫電路觀察溫度上升情況。

圖 4.26 加熱電路

3. 溫度測量

針對 LM75B,AMetal 提供了相應的軟件包,其函數原型為:

顯然,使用這兩個通用接口,很容易讀取當前的溫度值。由于只有兩位數碼管,因此只顯示整數部分;當溫度為負數時,也不顯示負,僅顯示溫度值,詳見程序清單 4.49。

程序清單 4.49 LM75 溫度讀取和顯示范例程序

將程序編譯后下載到開發板上運行,如果數碼管顯示 28,表示當前溫度為 28℃。如果按下加熱按鍵,則低阻值加熱電阻 R32 開始發熱,那么顯示的溫度值會不斷升高。

在顯示溫度值時,之所以將溫度值右移了 8 位,這是因為 lm75_read()讀取的數值是實際溫度的 256 倍,所以實際溫度應該是讀取的值除以 256.0。同時,由于不需要顯示小數部分,所以直接右移 8 位,就表示除以了 256,只剩下了整數部分。

>>> 4.7.3 溫控器

下面將結合此前編寫的程序,使用 LED、蜂鳴器、數碼管、矩陣鍵盤和溫度采集,實現一個簡易的溫控器。

1. 功能簡介

使用標準I2C接口LM75B溫度傳感器采集溫度在數碼管上顯示,由于只有兩位數碼管,因此只顯示整數部分;當溫度為負數時,也不顯示負,僅顯示溫度值。

可設置溫度上限值和溫度下限值,當溫度高于上限值或低于下限值時,則蜂鳴器鳴叫。

2. 狀態指示

在調節過程中,使用兩個 LED 用于狀態指示,用短路跳線器連接 J9 和 J10 即可。

  • LED0 亮:表明當前值為上限值,數碼管顯示上限值;

  • LED1 亮:表明當前值為下限值,數碼管顯示下限值;

  • 兩燈閃爍:表明正常運行狀態,數碼管顯示環境溫度值。

3. 操作說明

設置上下限值時,共計使用 4 個按鍵。即:

  • SET 鍵:用于進入設置狀態。點擊后首先進入溫度上限值設定,再次點擊可進入溫度下限值設定,再次點擊回到正常運行狀態;

  • 左移/右移鍵:用于切換當前調節的位(個位/十位)。當進入設置狀態后,當前調節的位會不斷的閃爍;點擊該鍵可以切換當前調節的位,由個位切換到十位,或由十位切換到個位;

  • 加 1 鍵:當進入設置狀態后,當前調節的位會不斷的閃爍,按該鍵可以使該位上的數值增加 1;

  • 減 1 鍵:當進入設置狀態后,當前調節的位會不斷的閃爍,按該鍵可以使該位上的數值增減 1。

(1)設置上限值

首次按下 SET 鍵進入上限值設置,此時 LED0 點亮,數碼管顯示上限值溫度,個位不停閃爍。按“加 1 鍵”或“減 1 鍵”可以對當前閃爍位上得值進行調整,按下“左移/右移鍵”可以切換當前調節的位。

(2)設置下限值

在設置上限值的基礎上,再次點擊 SET 鍵即可進入下限值的設定,此時 LED1 點亮,數碼管顯示下限值溫度,個位不停閃爍。按“加 1 鍵”或“減 1 鍵”可以對當前閃爍位上的值進行調整,按“左移/右移鍵”可以切換當前調節的位。

4. 功能實現

如程序清單 4.50 所示為溫控器的范例程序,程序中比較繁瑣的是按鍵的處理程序。為了使程序結構更加清晰,分別對 3 種按鍵:切換狀態(KEY0)、切換當前調節位(KEY2)、調節當前位的值(KEY1 和 KEY3)寫了 3 個函數,各個函數直接在 key_process()按鍵處理程序中調用。其它部分均在 while(1)主循環中完成,主要完成 3 件事情:溫度值的采集,每隔 500ms 進行一次;鍵盤掃描,每隔 10ms 進行一次;數碼管掃描,每隔 5ms 進行一次。

程序清單 4.50 綜合實驗范例程序


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

    關注

    4

    文章

    103

    瀏覽量

    27574
  • IIC總線
    +關注

    關注

    1

    文章

    66

    瀏覽量

    20289
  • 接口編程
    +關注

    關注

    0

    文章

    9

    瀏覽量

    8732

原文標題:周立功:面向接口的編程——SPI 總線和IIC 總線

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    IIC總線SPI總線的比較

    現今,在低端數字通信應用領域,我們隨處可見IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是這兩種
    發表于 09-26 09:30 ?2396次閱讀
    <b class='flag-5'>IIC</b><b class='flag-5'>總線</b>和<b class='flag-5'>SPI</b><b class='flag-5'>總線</b>的比較

    IIC總線通訊接口器件的CPLD實現

    IIC總線通訊接口器件的CPLD實現摘要:介紹了采用ALTERA公司的可編程器件EPF10K10LC84-3實現IIC
    發表于 10-30 14:57

    IIC總線SPI總線通信詳解

    IIC總線SPI總線通信介紹
    發表于 12-23 07:02

    IIC總線具有哪些特點

    4路模擬輸入、一路DAC輸出和一個IIC總線接口。其主要的功能特性如下:單電源供電,典型值為5V。通過3個硬件地址引腳編址。8位逐次逼近式A/D轉換。片上跟蹤與保持電路,采樣速率取決與IIC
    發表于 12-09 07:40

    基于PC/104 總線與CPLD 的SPI 接口設計

    本文根據SPI 同步串行接口的通信協議,介紹了在CPLD 中利用VHDL 語言實現PC/104 總線擴展SPI 接口的設計原理和
    發表于 05-30 09:28 ?41次下載

    數字接口系列文章之SPI總線

    數字接口系列文章之SPI總線  串行外設接口 (SPI) 總線是一種運行于全雙工模式下的同步串
    發表于 01-08 10:46 ?891次閱讀
    數字<b class='flag-5'>接口</b>系列文章之<b class='flag-5'>SPI</b><b class='flag-5'>總線</b>

    SPI接口總線介紹

    SPI接口總線介紹 SPI 可以作為主、從器件工作,并可在同一總線上支持多個主、從器件。SPI
    發表于 11-24 08:41 ?4842次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>總線</b>介紹

    IIC總線接口學習

    在多主設備IIC 總線模式下,多個S3C2440A 微處理器可以從從屬設備接收或發送串行數據。主設備S3C2440A 可以初始化和終止一個基于IIC 總線的數據傳輸。在S3C2440A
    發表于 04-27 15:31 ?61次下載
    <b class='flag-5'>IIC</b><b class='flag-5'>總線</b><b class='flag-5'>接口</b>學習

    深度解析IICSPI總線協議的區別與應用場景

    IIC vs SPI: 哪位是贏家?我們來對比一下IICSPI的一些關鍵點: 第一,總線拓撲結構/信號路由/硬件資源耗費
    的頭像 發表于 12-22 16:48 ?1.9w次閱讀
    深度解析<b class='flag-5'>IIC</b>和<b class='flag-5'>SPI</b><b class='flag-5'>總線</b>協議的區別與應用場景

    IIC總線接口的資料詳細說明

    S3C2440A RISC 微處理器可以支持多主設備 IIC 總線串行接口。專用串行數據線(SDA)和串行時鐘線(SCL)承載總線主設備和連接IIC
    發表于 05-18 08:00 ?6次下載
    <b class='flag-5'>IIC</b><b class='flag-5'>總線</b><b class='flag-5'>接口</b>的資料詳細說明

    基于SPI串行總線接口的Verilog實現

    簡 介: 集成電路設計越來越向系統級的方向發展,并且越來越強調模塊化的設計。SPI(Serial Peripheral Bus)總線是Motorola公司提出的一個同步串行外設接口,容許CPU
    的頭像 發表于 05-29 10:16 ?5053次閱讀
    基于<b class='flag-5'>SPI</b>串行<b class='flag-5'>總線</b><b class='flag-5'>接口</b>的Verilog實現

    SPI總線介紹

    SPI總線主要特點· 全雙工;· 可以當作主機或從機工作;· 提供頻率可編程時鐘;· 發送結束中斷標志;· 寫沖突保護;.總線競爭保護等。2.SPI
    發表于 12-05 19:21 ?10次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>總線</b>介紹

    數字接口(續)— SPI 總線

    數字接口(續)— SPI 總線
    發表于 11-07 08:07 ?0次下載
    數字<b class='flag-5'>接口</b>(續)— <b class='flag-5'>SPI</b> <b class='flag-5'>總線</b>

    淺談SPI總線通信接口及其協議

    上篇內容我們介紹了IIC總線通信接口及其協議,這一篇文章我們介紹另一種項目開發中非常常見的通信接口——SPI
    的頭像 發表于 03-22 16:11 ?1736次閱讀
    淺談<b class='flag-5'>SPI</b><b class='flag-5'>總線</b>通信<b class='flag-5'>接口</b>及其協議

    AXI IIC總線接口介紹

    LogiCORE?IPAXI IIC總線接口連接到AMBA?AXI規范,提供低速、兩線串行總線接口,可連接大量流行的設備。
    的頭像 發表于 09-28 15:56 ?5198次閱讀