English | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
DS1302 トリクル充電計時チップには、リアルタイム クロック/カレンダーと 31 バイトのスタティック RAM が含まれています。 シンプルなシリアル インターフェイスを介してマイクロプロセッサと通信します。 リアルタイム クロック/カレンダーは、秒、分、時間、曜日、日付、月、年の情報を提供します。 31 日未満の月については、閏年の修正も含めて月末日が自動的に調整されます。 時計は、AM/PM インジケーター付きの 24 時間形式または 12 時間形式で動作します。DS1302 とマイクロプロセッサーのインターフェースは、同期シリアル通信を使用することで簡素化されます。 クロック/RAM との通信に必要なワイヤは CE、I/O (データ ライン)、および SCLK (シリアル クロック) の 3 本だけです。 データはクロック/RAM との間で一度に 1 バイト、または最大 31 バイトのバーストで転送できます。 DS1302 は、非常に低い電力で動作し、1μW 未満でデータとクロック情報を保持するように設計されています。
LibDriver DS1302 は、LibDriver によって起動された ds1302 のフル機能ドライバーです。時間の読み取り、RAM の読み取りまたは書き込み、その他の機能を提供します。 LibDriver は MISRA に準拠しています。
/ srcディレクトリには、LibDriver DS1302のソースファイルが含まれています。
/ interfaceディレクトリには、LibDriver DS1302用のプラットフォームに依存しないGPIOバステンプレートが含まれています。
/ testディレクトリには、チップの必要な機能を簡単にテストできるLibDriver DS1302ドライバーテストプログラムが含まれています。
/ exampleディレクトリには、LibDriver DS1302プログラミング例が含まれています。
/ docディレクトリには、LibDriver DS1302オフラインドキュメントが含まれています。
/ datasheetディレクトリには、DS1302データシートが含まれています。
/ projectディレクトリには、一般的に使用されるLinuxおよびマイクロコントローラー開発ボードのプロジェクトサンプルが含まれています。 すべてのプロジェクトは、デバッグ方法としてシェルスクリプトを使用しています。詳細については、各プロジェクトのREADME.mdを参照してください。
/ misraはLibDriver misraコードスキャン結果を含む。
/ interfaceディレクトリにあるプラットフォームに依存しないGPIOバステンプレートを参照して、指定したプラットフォームのGPIOバスドライバを完成させます。
/src ディレクトリ、プラットフォームのインターフェイス ドライバー、および独自のドライバーをプロジェクトに追加します。デフォルトのサンプル ドライバーを使用する場合は、/example ディレクトリをプロジェクトに追加します。
/example ディレクトリ内のサンプルを参照して、独自のドライバーを完成させることができます。 デフォルトのプログラミング例を使用したい場合の使用方法は次のとおりです。
#include "driver_ds1302_basic.h"
uint8_t res;
uint8_t addr = 0x00;
uint8_t data = 0x00;
uint32_t t = 0;
char time_buffer[32];
/* basic init */
res = ds1302_basic_init();
if (res != 0)
{
return 1;
}
/* set time zone */
res = ds1302_basic_set_timestamp_time_zone(8);
if (res != 0)
{
(void)ds1302_basic_deinit();
return 1;
}
...
/* set timestamp */
res = ds1302_basic_set_timestamp(t);
if (res != 0)
{
(void)ds1302_basic_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print("set timestamp %d.\n", t);
...
/* set timestamp */
memset(time_buffer, 0, sizeof(char) * 32);
res = ds1302_basic_get_ascii_time(time_buffer, 32);
if (res != 0)
{
(void)ds1302_basic_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print(time_buffer);
...
/* write ram */
res = ds1302_basic_write_ram(addr, &data, 1);
if (res != 0)
{
(void)ds1302_basic_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print("write ram addr 0x%02X data 0x%02X.\n", addr, data);
...
/* read ram */
res = ds1302_basic_read_ram(addr, &data, 1);
if (res != 0)
{
(void)ds1302_basic_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print("read ram addr 0x%02X data 0x%02X.\n", addr, data);
...
(void)ds1302_basic_deinit();
return 0;
#include "driver_ds1302_advance.h"
uint8_t res;
uint8_t i;
uint8_t addr = 0x00;
uint8_t data = 0x00;
uint32_t t = 0;
uint8_t burst_buffer[31];
char time_buffer[32];
/* advance init */
res = ds1302_advance_init();
if (res != 0)
{
return 1;
}
/* set time zone */
res = ds1302_advance_set_timestamp_time_zone(8);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
/* set timestamp */
res = ds1302_advance_set_timestamp(t);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print("set timestamp %d.\n", t);
...
/* set timestamp */
memset(time_buffer, 0, sizeof(char) * 32);
res = ds1302_advance_get_ascii_time(time_buffer, 32);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print(time_buffer);
...
/* write ram */
res = ds1302_advance_write_ram(addr, &data, 1);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print("write ram addr 0x%02X data 0x%02X.\n", addr, data);
...
/* read ram */
res = ds1302_advance_read_ram(addr, &data, 1);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
/* output */
ds1302_interface_debug_print("read ram addr 0x%02X data 0x%02X.\n", addr, data);
...
/* set charge */
res = ds1302_advance_set_charge(DS1302_CHARGE_DISABLE);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
...
res = ds1302_advance_burst_write(DS1302_BURST_TYPE_RAM, burst_buffer, 31);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
ds1302_interface_debug_print("ram burst write: ");
for (i = 0; i < 31; i++)
{
ds1302_interface_debug_print("0x%02X ", burst_buffer[i]);
}
...
res = ds1302_advance_burst_read(DS1302_BURST_TYPE_RAM, burst_buffer, 31);
if (res != 0)
{
(void)ds1302_advance_deinit();
return 1;
}
ds1302_interface_debug_print("ram burst read: ");
for (i = 0; i < 31; i++)
{
ds1302_interface_debug_print("0x%02X ", burst_buffer[i]);
}
...
(void)ds1302_advance_deinit();
return 0;
オンラインドキュメント: https://www.libdriver.com/docs/ds1302/index.html。
オフラインドキュメント: /doc/html/index.html。
CONTRIBUTING.mdを参照してください。
著作権(c)2015-今 LibDriver 全著作権所有
MITライセンス(MIT)
このソフトウェアおよび関連するドキュメントファイル(「ソフトウェア」)のコピーを取得した人は、無制限の使用、複製、変更、組み込み、公開、配布、サブライセンスを含む、ソフトウェアを処分する権利を制限なく付与されます。ソフトウェアのライセンスおよび/またはコピーの販売、および上記のようにソフトウェアが配布された人の権利のサブライセンスは、次の条件に従うものとします。
上記の著作権表示およびこの許可通知は、このソフトウェアのすべてのコピーまたは実体に含まれるものとします。
このソフトウェアは「現状有姿」で提供され、商品性、特定目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示または黙示を問わず、いかなる種類の保証もありません。 いかなる場合も、作者または著作権所有者は、契約、不法行為、またはその他の方法で、本ソフトウェアおよび本ソフトウェアの使用またはその他の廃棄に起因または関連して、請求、損害、またはその他の責任を負わないものとします。
お問い合わせくださいlishifenging@outlook.com。