找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關(guān)于時鐘芯片SD3078單片機驅(qū)動的問題 [已解決] 及解決方法

查看數(shù): 3739 | 評論數(shù): 16 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2023-7-21 07:31

正文摘要:

最近在做手表,感覺大部分常見RTC要么太大,要么沒內(nèi)置晶振(誤差大) 前幾周找到了一款芯片,看上去還不錯: 24小時制時讀出數(shù)據(jù)時要把最高位置零(&0x7f),否則讀出數(shù)據(jù)是錯誤的··· 3、IIC的應(yīng)答要設(shè) ...

回復(fù)

ID:639106 發(fā)表于 2023-7-25 19:09
man1234567 發(fā)表于 2023-7-24 11:13
先找個任意的IIC器件,調(diào)試成功后再上這個東東。
目前,標(biāo)準(zhǔn)的IIC驅(qū)動是通用的,RTC也就是讀寫而已,沒多 ...

謝謝指導(dǎo),之前寫的程序確實有忽疏
ID:639106 發(fā)表于 2023-7-25 19:07
liixaofei5 發(fā)表于 2023-7-23 16:42
if(Sys_Time.second==1)P0=0;else P0=1;    恰好能讀到1嗎?如果0秒后延時,2秒時才把時間讀回來,是不是就 ...

謝謝指導(dǎo),問題解決了
ID:584814 發(fā)表于 2023-7-24 11:13
先找個任意的IIC器件,調(diào)試成功后再上這個東東。
目前,標(biāo)準(zhǔn)的IIC驅(qū)動是通用的,RTC也就是讀寫而已,沒多復(fù)雜,好像3231和1307的通用。
實驗證明很多器件用STC準(zhǔn)雙向I/O無需加上拉什么的也可以用。
也可以找廠家要DEMO,國產(chǎn)可參考“國芯”,說明書寫的是理想也可能是現(xiàn)實。
包括記得有些廠家宣傳可以免費給樣片,然而聯(lián)系過結(jié)果呵呵呵。
如果自己玩且對體積沒要求的話用8025的,幾毛錢的貨就非常好用。
還有就是,目前常見的8025、3231又大又蠢,甚至還有更過的內(nèi)置了電池,這個小體積的有“核心技術(shù)”了 ?
建議仔細(xì)查一遍,廠家不給例程自己還調(diào)不過就過了罷。

評分

參與人數(shù) 1黑幣 +5 收起 理由
gqzjl + 5 贊一個!

查看全部評分

ID:821429 發(fā)表于 2023-7-23 16:42
if(Sys_Time.second==1)P0=0;else P0=1;    恰好能讀到1嗎?如果0秒后延時,2秒時才把時間讀回來,是不是就沒有反應(yīng)了?這個看你的延時多長時間,按照12MHz1T估算你的延時,應(yīng)該還是很多時候能進(jìn)入的,但是也容易出現(xiàn)非預(yù)期的情況。
這條語句的第二個問題,如果延時不影響,當(dāng)且僅當(dāng)second==1時點亮/熄滅,也就是60秒鐘點亮/滅1秒,這個是你預(yù)期的效果?我覺得不確定能不能看清楚這個閃爍
關(guān)于調(diào)試的方法,你是怎么感覺進(jìn)入死循環(huán)的,是測試出來的嗎?如果不是必須定位,找到出錯點,因為不能在線調(diào)試,可以注釋現(xiàn)在點亮指示燈的位置,在你覺得可疑的程序后面點亮指示燈,如果能點亮繼續(xù)找前面的程序。

評分

參與人數(shù) 1黑幣 +5 收起 理由
gqzjl + 5

查看全部評分

ID:639106 發(fā)表于 2023-7-22 17:35
Y_G_G 發(fā)表于 2023-7-22 17:13
已經(jīng)告訴你了,你上傳的代碼中,你的端口設(shè)置是對的,就不要再去找端口的毛病了
SDA和SCL都要加上拉10K電阻 ...

好的,我試試
ID:401564 發(fā)表于 2023-7-22 17:13
gqzjl 發(fā)表于 2023-7-22 12:03
設(shè)置成開漏輸出,SDA接了上拉電阻后還是沒反應(yīng)
是我寫的驅(qū)動有問題嗎

已經(jīng)告訴你了,你上傳的代碼中,你的端口設(shè)置是對的,就不要再去找端口的毛病了
SDA和SCL都要加上拉10K電阻!!!!!!!
IIC可以驅(qū)動其它的IIC器件也不一定是對的!!!!!
為什么要叫你用24c01,這個器件是標(biāo)準(zhǔn)的IIC,不支持高速IIC的,在它上面運行正常了,在SD3078就能正常了
不要duang!duang!duang!先寫一堆幾千行的代碼,然后就進(jìn)行驗證,那么多代碼,問題出在哪里你都不一定知道

"先驗證IIC從機地址對不對,先不管數(shù)據(jù)讀寫,先寫一個驗證代碼,向從機發(fā)送地址,看一下有沒有響應(yīng),可以用一個LED或者某個端口的電平來進(jìn)行驗證"
1,什么其它的代碼都不要,只要端口設(shè)置和IIC寫入一個字節(jié)函數(shù),外加一個延時函數(shù),延時可以設(shè)定為1秒2,P0^1=0;//LED這個端口先滅燈
3,寫入從機地址   0x64
4,等待IIC從機應(yīng)答,如果不應(yīng)答就是死循環(huán)
5,P0^1 = 1;//

while(1);
6,燒錄驗證,不要仿真!!!!!!!!!

以上6步,從P.01端口的電平信號就可以知道從機是否能響應(yīng)主機的IIC信號了
低電平:說明從機沒有應(yīng)答
高電平:說明從機已經(jīng)應(yīng)答,寫字節(jié)的IIC代碼是對的

再不行,把你的所有代碼,原理圖上傳
還是不行,那就放棄吧

評分

參與人數(shù) 1黑幣 +5 收起 理由
gqzjl + 5 贊一個!

查看全部評分

ID:639106 發(fā)表于 2023-7-22 14:07
夠長,把if判斷的值改成<20也一樣要瘋了
ID:384109 發(fā)表于 2023-7-22 13:04
看代碼,P0需要至少1分鐘才會有變化,測試時間夠長嗎
ID:639106 發(fā)表于 2023-7-22 12:03
設(shè)置成開漏輸出,SDA接了上拉電阻后還是沒反應(yīng)
是我寫的驅(qū)動有問題嗎
ID:883308 發(fā)表于 2023-7-22 01:49
可以看看數(shù)據(jù)手冊多試試
ID:1085441 發(fā)表于 2023-7-21 22:08
gqzjl 發(fā)表于 2023-7-21 12:56
單片機引腳設(shè)置為準(zhǔn)雙向輸出,可以嗎

看手冊是有上拉電阻的,你可以接個上拉電阻試試。
像DS1302的IO口必須接上拉電阻,準(zhǔn)雙向IO口不行。
ID:401564 發(fā)表于 2023-7-21 22:05
gqzjl 發(fā)表于 2023-7-21 12:56
單片機引腳設(shè)置為準(zhǔn)雙向輸出,可以嗎

時鐘和數(shù)據(jù)線必須要加10K的上拉電阻!!!!!
端口設(shè)置為標(biāo)準(zhǔn)雙向模式,也就是傳統(tǒng)的8051模式
ID:639106 發(fā)表于 2023-7-21 18:58
lkc8210 發(fā)表于 2023-7-21 14:54
注意電平轉(zhuǎn)換時間

時序按照數(shù)據(jù)手冊寫的,為400k,我把它調(diào)到200k后也沒反應(yīng)
ID:161164 發(fā)表于 2023-7-21 14:54
注意電平轉(zhuǎn)換時間


ID:639106 發(fā)表于 2023-7-21 12:56
Y_G_G 發(fā)表于 2023-7-21 12:32
1,先驗證IIC代碼對不對,可能用24C01的IIC代碼和功能來進(jìn)行驗證
2,先驗證IIC從機地址對不對,先不管數(shù)據(jù)讀寫 ...

單片機引腳設(shè)置為準(zhǔn)雙向輸出,可以嗎
ID:401564 發(fā)表于 2023-7-21 12:32
1,先驗證IIC代碼對不對,可能用24C01的IIC代碼和功能來進(jìn)行驗證
2,先驗證IIC從機地址對不對,先不管數(shù)據(jù)讀寫,先寫一個驗證代碼,向從機發(fā)送地址,看一下有沒有響應(yīng),可以用一個LED或者某個端口的電平來進(jìn)行驗證
3,如果單片機沒有內(nèi)置上拉電阻,你就得在時鐘和數(shù)據(jù)端口上增加上拉電阻

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表