寫在前面的話:STM32F0項目進階系列是硬件系統(tǒng)工程師星克曼以項目進階的方式寫出的入門教程,以項目開發(fā)為藍底,快速學習進入實戰(zhàn)。
STM32 I2C總線在上一講 STM32F0項目進階之I2C 中已經(jīng)講過了,已經(jīng)將標準庫抽象成hal_i2c.c和hal_i2c.h了,下面的就是適配不同的芯片了,這次我們適配一下DS1307。
電路配置
引腳圖如下:
引腳描述如下:
電路配置如下:
BCD格式
注意:時間和日期的格式均是BCD格式的。
上電工作
上電即可以工作,時鐘使能的話,就沒有其它配置;如果沒有使能就看要點二。
時鐘使能
00h 地址的寄存器第7 位為器件時鐘允許位(CH),此位為1則芯片未開始工作,即時鐘未走時,所以在上電時單片機要先讀出秒,并判斷位7(CH)是否為1,如為1要把該位清零寫入秒寄存器(地址為0),并把其他的時間單元設定為默認值。如果上電復位時讀出的秒的最高位CH為0,說明時鐘已工作(前已對CH清0,且停電后有備用電池),此時不能重寫時間單元!
時間配置
直接把時間值寫入0x00~0x06的時間寄存器。
時間讀取
直接讀取0x00~0x06的時間寄存器即可。
芯片時鐘輸出
控制寄存器的描述如下
要想芯片OUT腳輸出一定頻率的時鐘,BIT4的SQWE需要被使能,輸出頻率是靠RS[1:0]配置。