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

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

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

面向AMetal框架RTC實(shí)時(shí)時(shí)鐘應(yīng)用實(shí)戰(zhàn)

AGk5_ZLG_zhiyua ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-11-13 09:03 ? 次閱讀

周立功教授新書《面向AMetal框架與接口編程(上)》,對(duì)AMetal框架進(jìn)行了詳細(xì)介紹,通過(guò)閱讀這本書,你可以學(xué)到高度復(fù)用的軟件設(shè)計(jì)原則和面向接口編程的開發(fā)思想,聚焦自己的“核心域”,改變自己的編程思維,實(shí)現(xiàn)企業(yè)和個(gè)人的共同進(jìn)步。經(jīng)周立功教授授權(quán),即日起,致遠(yuǎn)電子公眾號(hào)將對(duì)該書內(nèi)容進(jìn)行連載,愿共勉之。

第六章為重用外設(shè)驅(qū)動(dòng)代碼,本文內(nèi)容包含6.3 RTC 實(shí)時(shí)時(shí)鐘中的后兩個(gè)小節(jié):

6.3.6 RX8025T

6.3.7 DS1302

6.3 RTC 實(shí)時(shí)時(shí)鐘

>>> 6.3.6 RX8025T

在MicroPort 系列擴(kuò)展模塊中,除主芯片為PCF85063 的RTC 模塊外,還有RX8025T模塊和DS1302 模塊,它們都是RTC 擴(kuò)展模塊,其主要區(qū)別詳見表6.14。

表6.14 RTC 芯片對(duì)比

表中,“√”表示對(duì)應(yīng)器件支持該功能,“×”表示對(duì)應(yīng)器件不支持該功能。

1. 器件簡(jiǎn)介

RX8025T 是一款內(nèi)置高穩(wěn)定度的32.768KHz 的 DTCXO(數(shù)字溫度補(bǔ)償晶體振蕩器)的I2C總線接口方式的實(shí)時(shí)時(shí)鐘芯片,它提供了時(shí)間日期的設(shè)置與獲取、鬧鐘中斷、時(shí)間更新中斷、固定周期中斷、溫度補(bǔ)償?shù)裙δ?。所有地址和?shù)據(jù)通過(guò)I2C總線來(lái)傳輸,最大總線速率可達(dá)到400kbps。

RX8025T 引腳封裝詳見圖6.6,其中的SCL 和SDA 為I2C接口引腳,VDD 和VSS 分別為電源和地;CLKOUT 為時(shí)鐘輸出引腳,可用于輸出時(shí)鐘信號(hào);T1(CE)、TEST、T2(Vpp)引腳僅供廠家測(cè)試使用,NC 為無(wú)需連接的引腳,實(shí)際使用時(shí),這些引腳直接懸空即可;INT 為中斷引腳,主要用于鬧鐘等功能;CLK_EN 為時(shí)鐘輸出使能引腳, 用于控制CLKOUT 時(shí)鐘的輸出。

圖6.6 RX8025T 引腳定義

RX8025T 的7 位I2C從機(jī)地址為0x32,模塊原理圖詳見圖6.7。若將MicroPort-RX8025T模塊通過(guò)MicroPort 接口與AM824-Core 相連,則SCL 和SDA 分別與PIO0_16 和PIO0_18連接,INT 引腳與PIO0_1 連接,F(xiàn)OE 與PIO0_10 連接。

圖6.7 RX8025T 模塊電路

2. 器件初始化

在使用RX8025T 前,必須完成RX8025T 的初始化操作,以獲取對(duì)應(yīng)的操作句柄,進(jìn)而才能使用RX8025T 的各種功能,初始化函數(shù)(am_rx8025t.h)的原型為:

該函數(shù)意在獲取RX8025T 器件的實(shí)例句柄,其中,p_dev 為指向am_rx8025t_dev_t 類型實(shí)例的指針,p_devinfo 為指向am_rx8025t_devinfo_t 類型的實(shí)例信息的指針。

(1)實(shí)例

定義am_rx8025t_dev_t 類型(am_rx8025t.h)實(shí)例如下:

其中,g_rx8025t_dev 為用戶自定義的實(shí)例,其地址作為p_dev 的實(shí)參傳遞。

(2)實(shí)例信息

實(shí)例信息主要描述了具體器件的固有信息,即RX8025T 的CLK_EN、INT 引腳與微處理器引腳的連接信息。其類型am_rx8025t_devinfo_t 的定義(am_rx8025t.h)如下:

當(dāng)MicroPort-RX8025T 模塊通過(guò)MicroPort 接口與AM824-Core 相連時(shí), INT和CLK_EN和分別與PIO0_1 和PIO0_10 連接。其實(shí)例信息定義如下:

其中,g_rx8025t_devinfo 為用戶自定義的實(shí)例信息,其地址作為p_devinfo 的實(shí)參傳遞。

(3)I2C句柄i2c_handle

I2C1 為例,其實(shí)例初始化函數(shù)am_lpc82x_i2c1_inst_init ()的返回值將作為實(shí)參傳遞給i2c_handle。即:

(4)實(shí)例句柄

RX8025T 初始化函數(shù)am_rx8025t_init ()的返回值,作為實(shí)參傳遞給其它功能接口函數(shù)的第一個(gè)參數(shù)(handle)。am_rx8025t_handle_t 類型的定義(am_rx8025t.h)如下:

若返回值為NULL,說(shuō)明初始化失敗;若返回值不為NULL,說(shuō)明返回值handle 有效。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例、實(shí)例信息等的定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件的程序范例分別詳見程序清單6.39 和程序清單6.40。

程序清單6.71 實(shí)例初始化函數(shù)實(shí)現(xiàn)(am_hwconf_rx8025t.c)

程序清單6.72 實(shí)例初始化函數(shù)聲明(am_hwconf_rx8025t.h)

后續(xù)只需要使用無(wú)參數(shù)的實(shí)例初始化函數(shù),即可獲取到RX8025T 的實(shí)例句柄。即:

3. 使用RTC 功能

使用RTC 功能即使用RTC 通用接口操作RX8025T 進(jìn)行時(shí)間的設(shè)置和獲取,在使用RTC通用接口前,需要獲取一個(gè)am_rtc_handle_t 類型的RTC 句柄。RX8025T 的驅(qū)動(dòng)提供了相應(yīng)的接口用于獲取RX8025T 的RTC 句柄,以便用戶通過(guò)RTC 通用接口操作RX8025T,其函數(shù)原型為:

該函數(shù)意在獲取RTC 句柄,其中,RX8025T 實(shí)例的句柄(rx8025t_handle)作為實(shí)參傳遞給handle,p_rtc 為指向am_rtc_serv_t 類型實(shí)例的指針,無(wú)實(shí)例信息。定義am_rtc_serv_t類型(am_rtc.h)實(shí)例如下

其中,g_rx8025t_rtc 為用戶自定義的實(shí)例,其地址作為p_rtc 的實(shí)參傳遞。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件分別詳見程序清單6.73 和程序清單6.74。

程序清單6.73 新增RX8025T 的RTC 實(shí)例初始化函數(shù)(am_hwconf_rx8025t.c)

程序清單6.74 am_hwconf_rx8025t.h 文件內(nèi)容更新(1)

后續(xù)只需要使用無(wú)參數(shù)的RTC 實(shí)例初始化函數(shù),即可獲取RTC 實(shí)例句柄。即:

獲取到handle 后,由于基于RTC 通用接口編寫的應(yīng)用程序是可以跨平臺(tái)復(fù)用的,因此可以直接基于RX8025T 啟動(dòng)如程序清單6.45 所示的RTC 時(shí)間顯示應(yīng)用程序,詳見程序清單6.75。

程序清單6.75 啟動(dòng)RTC 應(yīng)用程序(基于RX8025T)

顯然,若將RTC 模塊由PCF85063 更換為RX8025T,應(yīng)用程序核心代碼無(wú)需修改。

4. 使用鬧鐘功能

使用鬧鐘功能即使用鬧鐘通用接口操作RX8025T。在使用鬧鐘通用接口前,需要獲取到一個(gè)am_alarm_clk_handle_t 類型的鬧鐘句柄。RX8025T 的驅(qū)動(dòng)提供了相應(yīng)的接口用于獲取RX8025T 的鬧鐘句柄,便于用戶通過(guò)鬧鐘通用接口操作RX8025T,其函數(shù)原型為:

該函數(shù)意在獲取鬧鐘句柄,其中,RX8025T 實(shí)例的句柄(rx8025t_handle)作為實(shí)參傳遞給handle,p_alarm_clk 為指向am_alarm_clk_serv_t 類型實(shí)例的指針,無(wú)實(shí)例信息。定義am_alarm_clk_serv_t 類型(am_alarm_clk.h)實(shí)例如下:

其中,g_rx8025t_alarm_clk 為用戶自定義的實(shí)例,其地址作為p_alarm_clk 的實(shí)參傳遞。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件分別詳見程序清單6.76 和程序清單6.77。

程序清單6.76 新增RX8025T 的鬧鐘實(shí)例初始化函數(shù)(am_hwconf_rx8025t.c)

程序清單6.77 am_hwconf_rx8025t.h 文件內(nèi)容更新(2)

后續(xù)只需要使用無(wú)參數(shù)的鬧鐘實(shí)例初始化函數(shù),即可獲取鬧鐘實(shí)例句柄。即:

獲取到handle 后,由于基于鬧鐘通用接口編寫的應(yīng)用程序是可以跨平臺(tái)復(fù)用的,因此可以直接基于RX8025T 啟動(dòng)如程序清單6.54 所示的鬧鐘測(cè)試應(yīng)用程序,詳見程序清單6.78。

程序清單6.78 啟動(dòng)鬧鐘測(cè)試應(yīng)用程序(基于RX8025T)

顯然,若將RTC 模塊由PCF85063 更換為RX8025T,鬧鐘應(yīng)用程序核心代碼無(wú)需修改。

5. 為系統(tǒng)時(shí)間提供RTC 服務(wù)

若需要使用RX8025T 為系統(tǒng)時(shí)間提供RTC 服務(wù),只需要在初始化系統(tǒng)時(shí)間時(shí),將從RX8025T 中獲取的RTC 句柄作為系統(tǒng)時(shí)間初始化函數(shù)的rtc_handle 參數(shù)。即:

為方便使用,將初始化函數(shù)的調(diào)用添加到配置文件中,通過(guò)頭文件引出系統(tǒng)時(shí)間的實(shí)例初始化函數(shù)接口,詳見程序清單6.79 和程序清單6.80。

程序清單6.79 RX8025T 用作系統(tǒng)時(shí)間的實(shí)例初始化(am_hwconf_rx8025t.c)

程序清單6.80 am_hwconf_rx8025t.h 文件內(nèi)容更新(3)

后續(xù)只需要簡(jiǎn)單的調(diào)用該無(wú)參函數(shù),即可完成系統(tǒng)時(shí)間的初始化。即:

系統(tǒng)時(shí)間初始化后,由于基于系統(tǒng)時(shí)間通用接口編寫的應(yīng)用程序是可以跨平臺(tái)復(fù)用的,因此可以直接基于RX8025T 啟動(dòng)如程序清單6.65 所示的系統(tǒng)時(shí)間測(cè)試應(yīng)用程序,詳見程序清單6.81。

程序清單6.81 啟動(dòng)系統(tǒng)時(shí)間測(cè)試應(yīng)用程序(基于RX8025T)

顯然,若將RTC 模塊由PCF85063 更換為RX8025T,使用系統(tǒng)時(shí)間的應(yīng)用程序無(wú)需修改。

6. 特殊功能控制接口

對(duì)于RX8025T,除典型的時(shí)鐘和鬧鐘功能外,還具有一些特殊功能,比如,定時(shí)器、時(shí)鐘輸出、1 字節(jié)RAM 等。這些功能由于不是通用功能,只能使用RX8025T 相應(yīng)的接口進(jìn)行操作。以讀寫1 字節(jié)RAM 為例,其相應(yīng)的接口函數(shù)詳見表6.15。

表6.15 讀寫RAM 接口函數(shù)(am_rx8025t.h)

(1)寫入RAM

該函數(shù)用于寫入1 字節(jié)數(shù)據(jù)到RX8025T 的RAM 中,其函數(shù)原型為:

其中,handle 為RX8025T 實(shí)例句柄,data 為寫入的單字節(jié)數(shù)據(jù)。若返回AM_OK,表示數(shù)據(jù)寫入成功,反之失敗,寫入0x55 至RAM 中的范例程序詳見程序清單6.82。

程序清單6.82 寫入RAM 范例程序

(2)讀取RAM

該函數(shù)用于讀取存于RX8025T 的單字節(jié)RAM 中的數(shù)據(jù),其函數(shù)原型為:

其中,handle 為RX8025T 實(shí)例句柄,p_data 為輸出參數(shù),用于返回讀取的單字節(jié)數(shù)據(jù)。

返回AM_OK,表示讀取成功,反之失敗,范例程序詳見程序清單6.83。

程序清單6.83 讀取RAM 范例程序

可以使用讀寫RAM 接口簡(jiǎn)單驗(yàn)證RX8025T 是否正常,詳見程序清單6.84。

程序清單6.84 讀寫RAM 數(shù)據(jù)范例程序

若讀寫數(shù)據(jù)出錯(cuò),則點(diǎn)亮LED0。由此可見,雖然該程序的邏輯與程序清單6.70 所示的應(yīng)用程序基本一致,但由于使用的接口是特殊功能控制接口,與具體芯片相關(guān),因此并不能直接像RTC 應(yīng)用程序和鬧鐘應(yīng)用程序那樣直接跨平臺(tái)復(fù)用。

>>> 6.3.7 DS1302

1. 器件簡(jiǎn)介

DS1302 是一款涓流充電計(jì)時(shí)芯片,它包含一個(gè)實(shí)時(shí)時(shí)鐘和31 字節(jié)的靜態(tài) RAM,能夠提供年、月、日、時(shí)、分、秒等信息,具有閏年校正功能。

DS1302 被設(shè)計(jì)工作在非常低的電能下,在低于1μW 時(shí)還能保持?jǐn)?shù)據(jù)和時(shí)鐘信息。除了基本計(jì)時(shí)功能以外,DS1302 還具有其它一些特點(diǎn),比如,雙管腳主電源和備用電源,可編程涓流充電器VCC1。

DS1302 通過(guò)簡(jiǎn)單的串行接口與微處理器通訊,使用同步串行通訊簡(jiǎn)化了 DS1302 與微處理器的接口,通訊只需要三根線:CE、I/O(數(shù)據(jù)線)、SCLK(串行時(shí)鐘)。DS1302 的引腳封裝圖詳見圖6.8。

圖6.8 DS1302 引腳定義

其中,X1 和X2 為外接晶振的引腳,需要連接標(biāo)準(zhǔn)的32.768kHz 的石英晶體。SCLK、CE、I/O 為與微處理器的串行通信引腳。GND 為電源地,VCC1 和VCC2為電源引腳,這也是DS1302 具有特色的地方,即:雙管腳主電源和備用電源,在雙管腳中,VCC2 是主電源,VCC1 是備用電源,一般接充電電池。DS1302 是由VCC1 或VCC2 兩者中的較大者供電。當(dāng)VCC2 大于VCC1+0.2V,VCC2 給芯片供電。當(dāng)VCC2 小于VCC1 時(shí),芯片由VCC1 供電。當(dāng)芯片由VCC2 供電時(shí),VCC1 不供電,同時(shí),還可以通過(guò)可編程涓流充電器,使VCC2 向VCC1 流入很小的電流,以便為連接到VCC1 的電池充電。當(dāng)然,VCC1可以不接可充電電池,此時(shí),只需要通過(guò)控制可編程涓流充電器,使VCC2 不向VCC1 流入電流即可。

DS1032 模塊的原理圖詳見圖6.9,若將MicroPort-DS1302 模塊通過(guò)MicroPort 接口AM824-Core 相連,則SCLK、I/O 和CE 分別與PIO0_15、PIO0_13 和PIO0_14 連接。

圖6.9 DS1302 模塊電路

2. 器件初始化

在使用DS1302 前,必須完成DS1302 的初始化操作,以獲取對(duì)應(yīng)的操作句柄,進(jìn)而才能使用DS1302 的各種功能,初始化函數(shù)的原型(am_ds1302.h)為:

該函數(shù)意在獲取DS1302 器件的實(shí)例句柄,其中,p_dev 為指向am_ds1302_gpio_dev_t類型實(shí)例的指針,p_devinfo 為指向am_ds1302_gpio_devinfo_t 類型的實(shí)例信息的指針。

(1)實(shí)例

定義am_ds1302_gpio_dev_t 類型(am_ds1302.h)實(shí)例如下:

其中,g_ds1302_gpio_dev 為用戶自定義的實(shí)例,其地址作為p_dev 的實(shí)參傳遞。

(2)實(shí)例信息

實(shí)例信息主要描述了具體器件的固有信息,即DS1302 的SCLK、I/O、CE 引腳與微處理器引腳的連接信息。其類型am_ds1302_gpio_devinfo_t 的定義(am_ds1302.h)如下:

當(dāng)MicroPort-DS1302 模塊通過(guò)MicroPort 接口與AM824-Core 相連時(shí), SCLK、I/O 和CE 分別與PIO0_15、PIO0_13 和PIO0_14 連接。其實(shí)例信息定義如下:

其中,g_ds1302_gpio_devinfo 為用戶自定義的實(shí)例信息,其地址作為p_devinfo 的實(shí)參傳遞。

(3)實(shí)例句柄

DS1302 的初始化函數(shù)am_ds1302_gpio_init()的返回值,作為實(shí)參傳遞給其它功能接口函數(shù)的第一個(gè)參數(shù)(handle)。am_ds1302_handle_t 類型的定義(am_ds1302.h)如下:

若返回值為NULL,說(shuō)明初始化失??;若返回值不為NULL,說(shuō)明返回值handle 有效。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例、實(shí)例信息等的定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件的程序范例分別詳見程序清單6.85 和程序清單6.86。

程序清單6.85 實(shí)例初始化函數(shù)實(shí)現(xiàn)(am_hwconf_ds1302.c)

程序清單6.86 實(shí)例初始化函數(shù)聲明(am_hwconf_ds1302.h)

后續(xù)只需要使用無(wú)參數(shù)的實(shí)例初始化函數(shù),即可獲取到DS1302 的實(shí)例句柄。即:

3. 使用RTC 功能

使用RTC 功能即可使用RTC 通用接口操作DS1302 設(shè)置和獲取時(shí)間,在使用RTC 通用接口前,需要獲取一個(gè)am_rtc_handle_t 類型的RTC 句柄。DS1302 的驅(qū)動(dòng)提供了相應(yīng)的接口用于獲取DS1302 的RTC 句柄,便于用戶通過(guò)RTC 通用接口操作DS1302,其函數(shù)原型為:

該函數(shù)意在獲取RTC 句柄,其中,DS1302 實(shí)例的句柄(ds1302_handle)作為實(shí)參傳遞給handle,p_rtc 為指向am_rtc_serv_t 類型實(shí)例的指針,無(wú)實(shí)例信息。定義am_rtc_serv_t 類型(am_rtc.h)實(shí)例如下:

其中,g_ds1302_rtc 為用戶自定義的實(shí)例,其地址作為p_rtc 的實(shí)參傳遞。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件分別詳見程序清單6.87 和程序清單6.88。

程序清單6.87 新增DS1302 的RTC 實(shí)例初始化函數(shù)(am_hwconf_ds1302.c)

程序清單6.88 am_hwconf_ds1302.h 文件內(nèi)容更新(1)

后續(xù)只需要使用無(wú)參數(shù)的RTC 實(shí)例初始化函數(shù),即可獲取RTC 實(shí)例句柄。即:

獲取handle 后,由于基于RTC 通用接口編寫的應(yīng)用程序是可以跨平臺(tái)復(fù)用的,因此可以直接基于DS1302 啟動(dòng)如程序清單6.45 所示的RTC 時(shí)間顯示應(yīng)用程序。

程序清單6.89 啟動(dòng)RTC 應(yīng)用程序(基于DS1302)

由此可見,若將RTC 模塊由PCF85063 更換為DS1302,則應(yīng)用程序核心代碼無(wú)需修改。

4. 為系統(tǒng)時(shí)間提供RTC 服務(wù)

由于DS1302 不支持鬧鐘功能,因此不能使用通用鬧鐘接口操作DS1302。若需要使用DS1302 為系統(tǒng)時(shí)間提供RTC 服務(wù),只需要在初始化系統(tǒng)時(shí)間時(shí),將從 DS1302 中獲取的RTC 句柄作為系統(tǒng)時(shí)間初始化函數(shù)的rtc_handle 參數(shù)。即:

為方便使用特將初始化函數(shù)的調(diào)用添加到配置文件中,通過(guò)頭文件引出系統(tǒng)時(shí)間的實(shí)例初始化函數(shù)接口,詳見程序清單6.90 和程序清單6.91。

程序清單6.90 DS1302 用作系統(tǒng)時(shí)間的實(shí)例初始化(am_hwconf_ds1302.c)

程序清單6.91 am_hwconf_ds1302.h 文件內(nèi)容更新(2)

后續(xù)只需要簡(jiǎn)單的調(diào)用該無(wú)參函數(shù),即可完成系統(tǒng)時(shí)間的初始化。即:

系統(tǒng)時(shí)間初始化后,由于基于系統(tǒng)時(shí)間通用接口編寫的應(yīng)用程序是可重用的,因此可以直接基于DS1302 啟動(dòng)如程序清單6.65 所示的系統(tǒng)時(shí)間測(cè)試應(yīng)用程序,詳見程序清單6.92。

程序清單6.92 啟動(dòng)系統(tǒng)時(shí)間測(cè)試應(yīng)用程序(基于DS1302)

顯然,若將RTC 模塊由PCF85063 更換為DS1302,使用系統(tǒng)時(shí)間的應(yīng)用程序無(wú)需修改。

5. 特殊功能控制接口

除典型的實(shí)時(shí)時(shí)鐘功能外,DS1302 還具有一些特殊功能,比如,涓流充電功能、31 字節(jié)RAM 等。這些功能由于不是通用功能,只能使用DS1302 相應(yīng)的接口操作。以讀寫RAM和涓流充電功能為例,其相應(yīng)的接口函數(shù)詳見表6.16。

表6.16 DS1302 特殊功能控制接口(am_ds1302.h)

(1)寫入RAM

該函數(shù)用于寫入數(shù)據(jù)到DS1302 的RAM 中(最多可寫入31 字節(jié)數(shù)據(jù)),其函數(shù)原型為:

其中,handle 為DS1302 實(shí)例句柄,p_data 指向待寫入數(shù)據(jù)的首地址,data_len 指定寫入數(shù)據(jù)的字節(jié)數(shù),最大為31 字節(jié),pos 指定了寫入RAM 的起始地址,DS1302 的RAM 空間大小為31 字節(jié),對(duì)應(yīng)的地址為0 ~ 30,pos 的有效范圍即為0 ~ 30。若返回AM_OK,表示數(shù)據(jù)寫入成功,反之失敗,寫入31 字節(jié)數(shù)據(jù)至RAM 中的范例程序詳見程序清單6.93。

程序清單6.93 寫入RAM 范例程序

(2)讀取RAM

該函數(shù)用于讀取存于DS1302 的 RAM 中的數(shù)據(jù),其函數(shù)原型為:

其中,handle 為DS1302 實(shí)例句柄,p_data 為輸出參數(shù),用于返回讀取的數(shù)據(jù),data_len表示讀取數(shù)據(jù)的字節(jié)數(shù),pos 表示讀取數(shù)據(jù)的起始地址(0 ~ 30)。若返回AM_OK,表示讀取成功,反之失敗,范例程序詳見程序清單6.94。

程序清單6.94 讀取RAM 范例程序

可以使用讀寫RAM 接口簡(jiǎn)單驗(yàn)證DS1302 是否正常,詳見程序清單6.95。

程序清單6.95 讀寫RAM 數(shù)據(jù)范例程序

(3)使能涓流充電

DS1302 具有雙電源供電,當(dāng)芯片由VCC2 供電時(shí),可以通過(guò)可編程涓流充電器,使VCC2向VCC1 流入很小的電流,以便為連接到VCC1 的電池充電。使能涓流充電的函數(shù)原型為:

其中,handle 為DS1302 實(shí)例句柄,set_val 為可編程涓流充電器的控制參數(shù),可以控制充電的電流。充電電路的示意圖詳見圖6.10。

圖6.10 DS1302 充電電路示意圖

當(dāng)總開關(guān)打開后,充電電流的大小是由選擇的二極管個(gè)數(shù)(1 個(gè)或2 個(gè))和電阻阻值(2KΩ、4KΩ 或8KΩ)決定的。二極管的個(gè)數(shù)決定了電壓的壓降,電流的計(jì)算公式為:

set_val 可用的值已經(jīng)使用宏進(jìn)行了定義,詳見表6.17實(shí)際使用時(shí),應(yīng)該根據(jù)需要的電流大小選擇其中一個(gè)宏作為set_val 的值。

表6.17 充電電路設(shè)置標(biāo)志

比如,若選擇1 個(gè)二極管、2K電阻,則應(yīng)該將set_val 的值設(shè)置為:

AM_DS1302_TRICKLE_1D_2K

由于在MicroPort-DS1302 中,VCC2 的值為3.3V,因此此時(shí)的實(shí)際電流計(jì)算公式為:

當(dāng)VCC1 為0 時(shí)(電池電量完全耗盡)時(shí),則電流達(dá)到最大值,其值為:

這就要求電池支持的最大充電電流為1.3mA。實(shí)際中,隨著對(duì)電池的充電,電池電量增加,VCC1 會(huì)逐漸增加,充電電流也隨之逐漸減小。范例程序詳見程序清單6.96。

程序清單6.96 使能涓流充電范例程序

(3)禁能涓流充電

當(dāng)不需要充電時(shí),如使用的非充電電池,可以使用該接口禁能涓流充電,其函數(shù)原型為:

其中,handle 為DS1302 實(shí)例句柄,范例程序詳見程序清單6.97。

程序清單6.97 禁能涓流充電范例程序


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

    關(guān)注

    5054

    文章

    18920

    瀏覽量

    301045
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    519

    瀏覽量

    66151
  • pcf85063
    +關(guān)注

    關(guān)注

    1

    文章

    3

    瀏覽量

    3405

原文標(biāo)題:周立功:重用外設(shè)驅(qū)動(dòng)代碼—— RTC 實(shí)時(shí)時(shí)鐘(2)

文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32 RTC實(shí)時(shí)時(shí)鐘(一)

    STM32處理器內(nèi)部集成了實(shí)時(shí)時(shí)鐘控制器(RTC),因此在實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能時(shí),無(wú)須外擴(kuò)時(shí)鐘芯片即可構(gòu)建實(shí)時(shí)時(shí)鐘系統(tǒng)。
    的頭像 發(fā)表于 07-22 15:41 ?4447次閱讀
    STM32 <b class='flag-5'>RTC</b><b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>(一)

    什么是實(shí)時(shí)時(shí)鐘RTC)?如何更改RTC的時(shí)間?

    什么是實(shí)時(shí)時(shí)鐘RTC)?實(shí)時(shí)時(shí)鐘RTC)的基本功能是什么?實(shí)時(shí)時(shí)鐘RTC)晶體誤差的主要來(lái)
    發(fā)表于 07-19 08:44

    RTC實(shí)時(shí)時(shí)鐘簡(jiǎn)介

    RTC實(shí)時(shí)時(shí)鐘1. RTC實(shí)時(shí)時(shí)鐘簡(jiǎn)介2. 硬件設(shè)計(jì)3. 軟件設(shè)計(jì)3.1 STM32CubeMX設(shè)置3.2 MDK-ARM編程4. 下載驗(yàn)證
    發(fā)表于 08-18 06:55

    RTC是什么?RTC實(shí)時(shí)時(shí)鐘實(shí)驗(yàn)

    文章目錄前言一、RTC是什么?二、RTC實(shí)時(shí)時(shí)鐘實(shí)驗(yàn)1.引入庫(kù)2.讀入數(shù)據(jù)總結(jié)前言前面我們說(shuō)了OLED實(shí)驗(yàn),是一個(gè)比較好的顯示測(cè)試代碼的方法?,F(xiàn)在我們學(xué)習(xí)關(guān)于RTC
    發(fā)表于 01-13 07:19

    RTC實(shí)時(shí)時(shí)鐘怎么使用?

    RTC實(shí)時(shí)時(shí)鐘怎么使用?cubemx中如何配置RTC?如何在keil中編寫程序?
    發(fā)表于 01-18 07:33

    面向AMetal框架和接口的編程

    面向AMetal框架和接口的編程
    發(fā)表于 11-23 15:22 ?8次下載

    實(shí)時(shí)時(shí)鐘的硬件結(jié)構(gòu)_實(shí)時(shí)時(shí)鐘故障怎么解決

     實(shí)時(shí)時(shí)鐘的縮寫是RTC(Real_Time Clock)。RTC 是集成電路,通常稱為時(shí)鐘芯片。
    的頭像 發(fā)表于 11-16 17:10 ?7034次閱讀
    <b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>的硬件結(jié)構(gòu)_<b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>故障怎么解決

    淺談RTC實(shí)時(shí)時(shí)鐘特征與原理

    一、RTC實(shí)時(shí)時(shí)鐘特征與原理 查看STM32中文手冊(cè) 16 實(shí)時(shí)時(shí)鐘RTC)(308頁(yè)) RTC (Real Time Clock):
    的頭像 發(fā)表于 06-30 15:54 ?1.1w次閱讀

    STM32CubeMX | 40 - 實(shí)時(shí)時(shí)鐘RTC的使用(日歷和鬧鐘)

    STM32CubeMX | 40 - 實(shí)時(shí)時(shí)鐘RTC的使用(日歷和鬧鐘)
    發(fā)表于 11-23 18:06 ?19次下載
    STM32CubeMX | 40 - <b class='flag-5'>實(shí)時(shí)時(shí)鐘</b><b class='flag-5'>RTC</b>的使用(日歷和鬧鐘)

    STM32CubeMX系列|RTC實(shí)時(shí)時(shí)鐘

    RTC實(shí)時(shí)時(shí)鐘1. RTC實(shí)時(shí)時(shí)鐘簡(jiǎn)介2. 硬件設(shè)計(jì)3. 軟件設(shè)計(jì)3.1 STM32CubeMX設(shè)置3.2 MDK-ARM編程4. 下載驗(yàn)證
    發(fā)表于 12-24 19:15 ?16次下載
    STM32CubeMX系列|<b class='flag-5'>RTC</b><b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>

    DA1468x SoC 的實(shí)時(shí)時(shí)鐘(RTC) 概念

    DA1468x SoC 的實(shí)時(shí)時(shí)鐘 (RTC) 概念
    發(fā)表于 03-15 20:16 ?0次下載
    DA1468x SoC 的<b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>(<b class='flag-5'>RTC</b>) 概念

    實(shí)時(shí)時(shí)鐘RTC:32.768kHz晶振

    實(shí)時(shí)時(shí)鐘(RTC: Real-Time Clock)是集成電路,通常稱為時(shí)鐘芯片。目前實(shí)時(shí)時(shí)鐘芯片大多采用精度較高的晶體振蕩器作為時(shí)鐘源。
    的頭像 發(fā)表于 05-08 10:45 ?2582次閱讀
    <b class='flag-5'>實(shí)時(shí)時(shí)鐘</b><b class='flag-5'>RTC</b>:32.768kHz晶振

    DA1468x SoC 的實(shí)時(shí)時(shí)鐘(RTC) 概念

    DA1468x SoC 的實(shí)時(shí)時(shí)鐘 (RTC) 概念
    發(fā)表于 07-06 19:27 ?0次下載
    DA1468x SoC 的<b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>(<b class='flag-5'>RTC</b>) 概念

    STM32 RTC實(shí)時(shí)時(shí)鐘(二)

    上次實(shí)驗(yàn)完成了對(duì)實(shí)時(shí)時(shí)鐘的基本功能——計(jì)時(shí)的實(shí)驗(yàn),這次在計(jì)時(shí)的基礎(chǔ)上對(duì)RTC的可編程鬧鐘的功能進(jìn)行測(cè)試。
    的頭像 發(fā)表于 07-22 15:43 ?1795次閱讀
    STM32 <b class='flag-5'>RTC</b><b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>(二)

    CW32實(shí)時(shí)時(shí)鐘RTC)介紹

    CW32實(shí)時(shí)時(shí)鐘RTC)介紹
    的頭像 發(fā)表于 10-24 15:36 ?1025次閱讀
    CW32<b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>(<b class='flag-5'>RTC</b>)介紹