STM32與DS1302的介面電路

2021-06-03 22:30:42 字數 2238 閱讀 1820

(1)硬體 clk---pa4,  dat--- pa5, rst--- pa6

(2)硬體初始化 clk與rst均為輸出,而dat是開漏型的輸出。因為在這種方式下,io口的讀仍然存在,因此是真正的雙向io模式。

/*dsck -pa4 dat pa5 rst dat*/

#define ds1302clk gpio_pin_4   //與時鐘線相連的晶元的管腳

#define ds1302dat gpio_pin_5   //與資料線相連的晶元的管腳

#define ds1302rst gpio_pin_6   //與復位端相連的晶元的管腳

/* pa 4,6,為輸出*/

gpio_initstructure.gpio_pin =  ds1302clk | ds1302rst ;

gpio_initstructure.gpio_mode = gpio_mode_out_pp;

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_init(gpioa, &gpio_initstructure);

//pa5配置為開漏模式,此模式下可以實現真下的雙向io

gpio_initstructure.gpio_pin =  ds1302dat;

gpio_initstructure.gpio_mode = gpio_mode_out_od;

gpio_init(gpioa, &gpio_initstructure);

(3)配置完畢,然後實現的**就很簡單了,從現成的**移植過來。

#define wrendiscmd  0x8e  //寫允許/禁止指令**

#define wrendat     0x00 //寫允許資料

#define wrdisdat    0x80 //寫禁止資料

#define oscendiscmd 0x80 //振盪器允許/禁止指令**

#define oscendat    0x00 //振盪器允許資料

#define oscdisdat   0x80 //振盪器禁止資料

#define wrmulti     0xbe //寫入多個位元組的指令**

#define wrsingle    0x84 //寫入單個位元組的指令**

#define rdmulti  0xbf //讀出多個位元組的指令**

以上這些#define均放在乙個ds1302.h檔案中。

void senddat_1302(u8 dat)

}/*寫入1個或者多個位元組,第1個引數是相關命令

#define wrmulti     0xbe //寫入多個位元組的指令**

#define wrsingle    0x84 //寫入單個位元組的指令**

第2個引數是待寫入的值

第3個引數是待寫入陣列的指標

*/ void writebyte_1302(u8 cmddat,u8 num,u8 *psend)

*(prec+i)=tmp;

}udelay(1);

gpio_resetbits(gpioa,ds1302rst);//復位引腳為低電平

/*當寫保護暫存器的最高位為0時,允許資料寫入暫存器。

寫保護暫存器可以通過命令位元組8e、8f來規定禁止寫入/讀出。寫保護位不能在多位元組傳送模式下寫入。

當寫保護暫存器的最高位為1時,禁止資料寫入暫存器。

時鐘停止位操作:當把秒暫存器的第7位時鐘停止位設定為0時起動時鐘開始

當把秒暫存器的第7位時鐘停止位設定為1時,時鐘振盪器停止。

根據傳入的引數決定相關命令,

第乙個引數:命令字,第2個引數:寫入的資料

寫允許命令;8eh,00h

寫禁止命令;8eh,80h

振盪器允許命令;80h,00h

振盪器禁止命令;80h,80h

*/void wrcmd(u8 cmddat,u8 cmdword)

main函式中呼叫如下:

u8 ds1302sendbuf[8]=;  //傳送資料緩衝區

u8 ds1302recbuf[8];    //接收資料緩衝區

wrcmd(wrendiscmd,wrendat);  //寫允許

wrcmd(oscendiscmd,oscendat); //振盪器允許

writebyte(wrmulti,8,ds1302sendbuf);//將時間值送到ds1302中

recbyte(rdmulti,8,ds1302recbuf); // 讀出來看看

STM32與DS1302的介面電路

作者在某stm32的應用中外置了一塊ds1302,借鑑原來寫過的pic 很快移植成功。在這裡與大家分享一下。1 硬體 clk pa4,dat pa5,rst pa6 2 硬體初始化 clk與rst均為輸出,而dat是開漏型的輸出。因為在這種方式下,io口的讀仍然存在,因此是真正的雙向io模式。dsc...

ds1302的應用問題

define rtc ok1 操作成功 define rtc fail0 操作失敗 define second invalid40 秒值無效 define minute invalid41 分鐘值無效 define hour invalid42 小時值無效 define week invalid43...

DS1302的整理與使用 筆記篇

巨集定義 define uchar unsigned char define write second 0x80 寫秒 define read second 0x81 讀秒 define write minute 0x82 寫分 define read minute 0x83 讀分 define w...