加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1. DS1302硬件設(shè)計原理
    • 2. FPGA軟件設(shè)計
    • 3. 軟件實測
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

FPGA入門基礎(chǔ)之SPI接口設(shè)計

06/11 13:00
4126
閱讀需 10 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

引言:本文通過以DS1302芯片為基礎(chǔ),介紹該芯片與FPGA之間SPI通信原理,詳細(xì)描述硬件設(shè)計原理及FPGA SPI接口驅(qū)動設(shè)計。

1. DS1302硬件設(shè)計原理

1.1 概述

DS1302是由美國DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實時時鐘芯片。它提供秒、分鐘、小時、天、日期、月份和年份信息,對于少于31天的月份,月末日期會自動調(diào)整,包括閏年的更正。時鐘以24小時或12小時的形式運行,帶有AM/PM指示器。它通過一個簡單的串行SPI接口與微處理器通信,如下圖所示。

圖1:DS1302管腳定義及典型應(yīng)用電路

圖2顯示了DS1302芯片內(nèi)部的主要組件:電源控制、輸入移位寄存器、命令和控制邏輯、振蕩器、實時時鐘和RAM。

圖2:DS1302芯片內(nèi)部框圖

1.2 管腳定義說明:

VCC2雙電源配置中的主電源引腳。VCC1連接到備用電源(通常為紐扣電池),以在沒有主電源的情況下保持時間和日期。DS1302從VCC1或VCC2中較大的一個操作。當(dāng)VCC2大于VCC1+0.2V時,VCC2為DS1302供電。當(dāng)VCC2小于VCC1時,VCC1為DS1302供電。

X1/X2:連接標(biāo)準(zhǔn)32.768kHz石英晶體,石英晶體負(fù)載電容典型值為6pF。DS1302也可以由外部32.768kHz振蕩器驅(qū)動,在該配置中,X1引腳連接到外部振蕩器信號,并且X2引腳懸空。

GND:地信號。

CE:使能信號,輸入CE信號必須在讀取或?qū)懭肫陂g被斷言為高電平。該引腳有一個內(nèi)部40kΩ(典型值)下拉電阻器,用于接地。

I/O:輸入/推拉輸出。I/O引腳是3線接口的雙向數(shù)據(jù)引腳。該引腳有一個內(nèi)部40kΩ(典型值)下拉電阻器,用于接地。

SCLK:SCLK用于同步串行接口上的數(shù)據(jù)通信。該引腳有一個內(nèi)部40kΩ(典型值)下拉電阻器,用于接地。

VCC1:單電源和電池操作系統(tǒng)中的低功率操作以及低功率電池備份。

1.3 振蕩電路

DS1302使用外部32.768kHz晶體,由于芯片內(nèi)部集成了負(fù)載電容,振蕩器電路不需要任何外部電阻器或電容器來操作。表1規(guī)定了外部晶體的參數(shù)要求。
表1:外部晶體的參數(shù)要求

1.4 時鐘精度

時鐘的精度取決于晶體的精度以及振蕩器電路的電容性負(fù)載與晶體的電容性負(fù)荷之間的匹配精度。溫度偏移引起的晶體頻率漂移將增加額外的誤差。耦合到振蕩器電路中的外部電路噪聲可能導(dǎo)致時鐘快速運行。圖3顯示了用于隔離晶體和振蕩器與噪聲的典型PC板布局。

圖3:隔離噪聲的典型PCB板布局

1.5 原理圖設(shè)計

DS1302與FPGA通過三線SPI接口進(jìn)行通信,信號連接較為簡單,信號對IO接口速率無要求。

圖4:DS1302原理圖設(shè)計

2. FPGA軟件設(shè)計

2.1 SPI接口讀寫時序

SPI接口讀時序操作如圖5所示。讀操作分為兩個階段,第一階段進(jìn)行寫命令操作,即往I/O數(shù)據(jù)線上寫入需要讀出的寄存器地址,第二階段是從I/O數(shù)據(jù)線上讀取當(dāng)前寄存器數(shù)據(jù)。

圖5:SPI接口讀操作時序

(1)使能信號CE為高電平,開啟讀操作,啟動時,SCLK必須為低電平;

(2)在SCLK時鐘的上升沿寫入命令字節(jié)到I/O數(shù)據(jù)線;

(3)在SCLK時鐘的下降沿從I/O數(shù)據(jù)線讀取數(shù)據(jù),要注意第一個讀取的bit D0是在寫命令最后一個bit時鐘的下降沿采樣的;

(4)使能信號CE為低電平,結(jié)束讀操作。SPI接口寫時序操作如圖6所示。寫操作分為兩個階段,第一階段進(jìn)行寫命令操作,即往I/O數(shù)據(jù)線上寫入需要寫入的寄存器地址,第二階段是往I/O數(shù)據(jù)線上寫入當(dāng)前寄存器數(shù)據(jù)。

圖6:SPI接口寫操作時序

(1)使能信號CE為高電平,開啟寫操作;
(2)在SCLK時鐘的上升沿寫入命令字節(jié)到I/O數(shù)據(jù)線;
(3)在SCLK時鐘的上升沿寫入數(shù)據(jù)字節(jié)到I/O數(shù)據(jù)線;

(4)使能信號CE為低電平,結(jié)束寫操作。

2.2 寄存器說明

命令字節(jié)

DS1302地址/命令字節(jié)如下表所示。

(1)bit7(MSB):必須是邏輯1。0:禁用對DS1302的寫入;

(2)bit6:0:選擇時鐘/日歷數(shù)據(jù),1:選擇RAM數(shù)據(jù);

(3)bit5~bit1:指定要寫或讀出的指定寄存器地址;

(4)bit0:0:寫操作,1:讀操作。

注意:命令字節(jié)總是從LSB(位0)開始傳輸。

時鐘和日歷寄存器

時間和日歷信息是通過讀取DS1302的寄存器字節(jié)來獲得的。表2說明了RTC寄存器。

表2:RTC寄存器

寄存器說明:

(1)時鐘和日歷初始化:可以通過寫入適當(dāng)?shù)募拇嫫髯止?jié)來設(shè)置或初始化時間和日歷。

(2)時間和日歷寄存器數(shù)據(jù)格式:二進(jìn)制編碼十進(jìn)制(BCD)格式。

(3)星期幾的寄存器在午夜遞增。與星期幾對應(yīng)的值是用戶定義的,但必須是連續(xù)的(即,如果1等于星期日,則2等于星期一,依此類推)。不合理的時間和日期條目會導(dǎo)致未定義的操作。

(4)每當(dāng)寫入秒寄存器時,就會重置倒計時鏈。寫入傳輸發(fā)生在CE的下降沿。為避免滾動問題,一旦重置倒計時鏈,必須在1秒內(nèi)寫入剩余的時間和日期寄存器。

(5)DS1302可以在12小時或24小時模式下運行。小時寄存器的第7位定義為12小時或24小時模式選擇位。當(dāng)為高時,選擇12小時模式。在12小時模式中,第5位為AM/PM位,邏輯高為PM。在24小時模式中第5位是第二個10小時位(20–23小時)。每當(dāng)12/24位發(fā)生變化時,必須重新初始化小時數(shù)據(jù)。

(6)時鐘停止標(biāo)志:秒寄存器的bit7被定義為時鐘停止(CH)標(biāo)志。1:振蕩器停止,DS1302進(jìn)入低功耗待機模式,電流消耗小于100nA;0:時鐘將啟動。 (7)WP寫保護(hù)位:控制寄存器的第7位是寫保護(hù)位WP。前7位(第0位至第6位)強制為0,讀取時始終讀取0。在對時鐘或RAM進(jìn)行任何寫入操作之前,位7必須為0。當(dāng)為高時,寫保護(hù)位防止對任何其他寄存器進(jìn)行寫操作。因此,在嘗試寫入設(shè)備之前,應(yīng)清除WP位。

2.3 軟件設(shè)計

軟件設(shè)計模塊劃分如下圖7所示。

圖7:軟件設(shè)計模塊劃分框圖

軟件主要實現(xiàn)功能:

(1)DS1302芯片SPI接口驅(qū)動功能;

(2)DS1302芯片寄存器讀寫控制功能,可以實現(xiàn)時鐘初始化設(shè)置;

(2)按鍵消抖功能;

(3)數(shù)碼管動態(tài)顯示功能。

各個模塊功能:

(1)ds1302_segma.v模塊為頂層模塊,用于實現(xiàn)模塊間互聯(lián);(2)spi_driver.v實現(xiàn)DS1302 SPI接口通信功能;
(3)ds1302_ctrl_m.v實現(xiàn)DS1302寄存器讀寫控制功能,包括將設(shè)置值寫入芯片和將芯片寄存器值讀出控制。
(4)set_init_time.v實現(xiàn)通過按鍵實現(xiàn)時間初始值設(shè)置;(5)Segma.v實現(xiàn)數(shù)碼管動態(tài)顯示功能(數(shù)碼管位有限,只顯示時、分、秒);

(6)KeyJitters.v實現(xiàn)按鍵消抖功能。

3. 軟件實測

軟件下載至電路板,通過SignaTap II在線邏輯分析儀抓取數(shù)據(jù)如下圖所示。

圖8:軟件設(shè)計模塊劃分框圖

圖9:數(shù)碼管顯示實時時鐘初始值

圖8顯示計時初始值正確寫入ds1302芯片寄存器,圖9數(shù)碼管顯示了正確的時、分、秒初始值。

測試結(jié)果詳見視頻號:FPGA技術(shù)實戰(zhàn)。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
LFE3-70EA-8FN484C 1 Lattice Semiconductor Corporation Field Programmable Gate Array, 500MHz, 67000-Cell, PBGA484, 23 X 23 MM, LEAD FREE, FPBGA-484

ECAD模型

下載ECAD模型
$73.57 查看
XC6SLX9-2CSG225C 1 AMD Xilinx Field Programmable Gate Array, 715 CLBs, 667MHz, 9152-Cell, CMOS, PBGA225, 13 X 13 MM, 0.80 MM PITCH, LEAD FREE, BGA-225

ECAD模型

下載ECAD模型
$19.67 查看
A3P1000-FGG144I 1 Microsemi FPGA & SoC Field Programmable Gate Array, 1000000 Gates, CMOS, PBGA144, 1 MM PITCH, GREEN, FBGA-144
$133.31 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

專注FPGA技術(shù)開發(fā),涉及Intel FPGA、Xilinx FPGA技術(shù)開發(fā),開發(fā)環(huán)境使用,代碼風(fēng)格、時序收斂、器件架構(gòu)以及軟硬件項目實戰(zhàn)開發(fā),個人公眾號:FPGA技術(shù)實戰(zhàn)。