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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DS1302芯片與FPGA之間SPI通信原理

FPGA研究院 ? 來源:FPGA技術(shù)實(shí)戰(zhàn) ? 作者:FPGA技術(shù)實(shí)戰(zhàn) ? 2024-10-24 14:16 ? 次閱讀

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

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

1.1 概述

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

wKgZomcZ5piATfbZAAD7wYL5wiM932.jpg

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

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

wKgZomcZ5pmATsjaAAGP-xNenB8640.jpg

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

1.2 管腳定義說明:

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

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

GND:地信號(hào)。

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

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

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

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

1.3 振蕩電路

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

表1:外部晶體的參數(shù)要求

wKgaomcZ5piATYZKAACHX03JWHQ380.jpg

1.4 時(shí)鐘精度

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

wKgZomcZ5piABs0NAADq7RzC3Wo216.jpg

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

1.5 原理圖設(shè)計(jì)

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

wKgaomcZ5piAI59iAAGnx8P4KDs911.jpg

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

2. FPGA軟件設(shè)計(jì)

2.1 SPI接口讀寫時(shí)序

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

wKgaomcZ5piANHcGAADFk3XeVJg173.jpg

圖5:SPI接口讀操作時(shí)序

(1)使能信號(hào)CE為高電平,開啟讀操作,啟動(dòng)時(shí),SCLK必須為低電平;

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

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

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

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

wKgZomcZ5pmAYkOYAACy6RkVH94833.jpg

圖6:SPI接口寫操作時(shí)序

(1)使能信號(hào)CE為高電平,開啟寫操作;

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

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

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

2.2 寄存器說明

命令字節(jié)

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

wKgaomcZ5pmAZdWfAACAsYWPKpY484.jpg

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

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

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

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

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

時(shí)鐘和日歷寄存器

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

表2:RTC寄存器

wKgaomcZ5pmAHlmEAAI61O6ZZ24897.jpg

寄存器說明:

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

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

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

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

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

(6)時(shí)鐘停止標(biāo)志:秒寄存器的bit7被定義為時(shí)鐘停止(CH)標(biāo)志。

1:振蕩器停止,DS1302進(jìn)入低功耗待機(jī)模式,電流消耗小于100nA;

0:時(shí)鐘將啟動(dòng)。

(7)WP寫保護(hù)位:控制寄存器的第7位是寫保護(hù)位WP。前7位(第0位至第6位)強(qiáng)制為0,讀取時(shí)始終讀取0。在對(duì)時(shí)鐘或RAM進(jìn)行任何寫入操作之前,位7必須為0。當(dāng)為高時(shí),寫保護(hù)位防止對(duì)任何其他寄存器進(jìn)行寫操作。因此,在嘗試寫入設(shè)備之前,應(yīng)清除WP位。

2.3 軟件設(shè)計(jì)

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

wKgZomcZ5pmAG5KGAAEutthS76I652.jpg

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

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

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

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

(2)按鍵消抖功能;

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

各個(gè)模塊功能:

(1)ds1302_segma.v模塊為頂層模塊,用于實(shí)現(xiàn)模塊間互聯(lián);

(2)spi_driver.v實(shí)現(xiàn)DS1302 SPI接口通信功能;

(3)ds1302_ctrl_m.v實(shí)現(xiàn)DS1302寄存器讀寫控制功能,包括將設(shè)置值寫入芯片和將芯片寄存器值讀出控制。

(4)set_init_time.v實(shí)現(xiàn)通過按鍵實(shí)現(xiàn)時(shí)間初始值設(shè)置;

(5)Segma.v實(shí)現(xiàn)數(shù)碼管動(dòng)態(tài)顯示功能(數(shù)碼管位有限,只顯示時(shí)、分、秒);

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

3. 軟件實(shí)測

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

wKgaomcZ5pmAQX6IAADatwE-BIU838.jpg

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

wKgaomcZ5pmALRakAAa9omgpsBM726.jpg

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

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

來源:本文轉(zhuǎn)載自FPGA技術(shù)實(shí)戰(zhàn)公眾號(hào)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21556

    瀏覽量

    600555
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    50000

    瀏覽量

    419689
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8364

    瀏覽量

    150540
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1684

    瀏覽量

    91062
  • DS1302
    +關(guān)注

    關(guān)注

    8

    文章

    449

    瀏覽量

    50544

原文標(biāo)題:FPGA入門基礎(chǔ)之SPI接口設(shè)計(jì)

文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ds1302時(shí)鐘芯片

    請(qǐng)問高手,我用的ds1302做的萬年歷,為什么ds1302時(shí)鐘芯片的年寄存器的最高位上寫不到"1"阿??? 就是說只能在0~79之間顯示,是什么原因阿?
    發(fā)表于 08-11 19:13

    DS1302與單片機(jī)之間能進(jìn)行通信

    DS1302 是DALLAS 公司推出的涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31 字節(jié)靜態(tài)RAM ,通過簡單的串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、日、周、月、年的信息
    發(fā)表于 08-13 08:58

    DS1302與單片機(jī)之間是如何進(jìn)行通信

    藍(lán)橋杯單片機(jī)硬件基礎(chǔ)DS1302與單片機(jī)之間能簡單地采用同步串行方式進(jìn)行通信,僅用到三個(gè)接口線:RST復(fù)位線、I/O數(shù)據(jù)線和SCLK串行時(shí)鐘線。DS1302時(shí)鐘寄存器和控制命令
    發(fā)表于 01-17 06:36

    DS1302通信線定義和 SPI 怎么這么像呢

    。前邊我們介紹過了 SPI 通信,同學(xué)們發(fā)現(xiàn)沒發(fā)現(xiàn),這個(gè) DS1302通信線定義和 SPI 怎么這么像呢?事實(shí)上,
    發(fā)表于 01-17 08:13

    SPI接口和DS1302實(shí)時(shí)時(shí)鐘(12864顯示)

    SPI接口和DS1302實(shí)時(shí)時(shí)鐘(12864顯示),有興趣的同學(xué)可以下載學(xué)習(xí)
    發(fā)表于 04-27 16:18 ?38次下載

    基于DS1302芯片的時(shí)鐘設(shè)計(jì)

    基于DS1302芯片的時(shí)鐘設(shè)計(jì)
    發(fā)表于 03-01 12:21 ?12次下載

    DS1302芯片中文資料

    DS1302芯片中文資料
    發(fā)表于 09-21 08:15 ?59次下載
    <b class='flag-5'>DS1302</b><b class='flag-5'>芯片</b>中文資料

    ds1302芯片介紹,ds1302工作原理解析

    時(shí)鐘小編相信大家見怪不怪了,那么時(shí)鐘芯片大家知道是什么嗎?今天我們就來談?wù)勛畛S脮r(shí)鐘芯片ds1302,主要通過ds1302芯片的介紹和
    發(fā)表于 10-18 16:19 ?4.5w次閱讀

    DS1302芯片的使用,時(shí)鐘芯片DS1302功能匯總

    DS1302大家都知道他是時(shí)鐘芯片,知道了原理肯定想知道功能和操作方法,這篇文章就是主要來說DS1302芯片的功能以及時(shí)鐘芯片
    發(fā)表于 10-19 10:43 ?9391次閱讀

    DS1302時(shí)鐘芯片調(diào)試經(jīng)驗(yàn),奉上調(diào)試時(shí)鐘芯片DS1302的程序

     時(shí)鐘芯片DS1302目前得到廣泛的應(yīng)用,但是DS1302的調(diào)試還是很有難度的。這篇文章就來說說DS1302時(shí)鐘芯片的調(diào)試驚艷,奉上時(shí)鐘
    發(fā)表于 10-19 11:12 ?1.1w次閱讀

    ds1302是什么接口,DS1302時(shí)鐘芯片接口分析詳解

    DS1302是達(dá)拉斯公司出品的一款實(shí)時(shí)時(shí)鐘芯片。主要是針對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。這篇文章主要就是說DS1302的到底是屬于什么接口的,同時(shí)分析詳解DS1
    發(fā)表于 10-19 14:34 ?1.4w次閱讀

    關(guān)于SPI串行口與DS1302特點(diǎn)介紹

    SPI串行口與DS1302
    的頭像 發(fā)表于 07-10 03:49 ?4700次閱讀
    關(guān)于<b class='flag-5'>SPI</b>串行口與<b class='flag-5'>DS1302</b>特點(diǎn)介紹

    SPI協(xié)議和DS1302的使用

    文章目錄一、DS1302電路圖二、SPI協(xié)議介紹三、SPI時(shí)序1.寫字節(jié)2.讀字節(jié)四、DS1302編程1、寫字節(jié)2、讀字節(jié)3.編程一、DS1302
    發(fā)表于 12-22 19:22 ?10次下載
    <b class='flag-5'>SPI</b>協(xié)議和<b class='flag-5'>DS1302</b>的使用

    DS1302 通信時(shí)序介紹

    。前邊我們介紹過了 SPI 通信,同學(xué)們發(fā)現(xiàn)沒發(fā)現(xiàn),這個(gè) DS1302通信線定義和 SPI 怎么這么像呢?事實(shí)上,
    發(fā)表于 01-18 09:41 ?7次下載
    <b class='flag-5'>DS1302</b> <b class='flag-5'>通信</b>時(shí)序介紹

    ds1302中文手冊(cè) ds1302時(shí)鐘芯片引腳功能

    電子發(fā)燒友網(wǎng)站提供《ds1302中文手冊(cè) ds1302時(shí)鐘芯片引腳功能.zip》資料免費(fèi)下載
    發(fā)表于 09-15 15:44 ?28次下載
    <b class='flag-5'>ds1302</b>中文手冊(cè) <b class='flag-5'>ds1302</b>時(shí)鐘<b class='flag-5'>芯片</b>引腳功能