OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6176|回复: 12

DS1302 偶数秒读取不对,奇数是对的。

[复制链接]

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
937
金钱
937
注册时间
2017-3-23
在线时间
256 小时
发表于 2017-3-23 11:24:29 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 未知1908 于 2017-3-23 11:31 编辑

调试1302遇到问题,DS1302 偶数秒读取不对,奇数是对的。而且偶尔会乱跳。硬件解法是
晶振接了20P的电容,没有接上拉电阻(DATA脚接了上拉电阻现象还是一样的)
程序用的是这个坛友的
http://www.openedv.com/forum.php ... 80&highlight=DS1302
第一次写入并读取的时间                  读取到错误的偶数秒并且日也错了                   读到奇数的秒,是显示对的,
%HM)HSD8%}E0Y@G{P7Y01%N.png `FKU3}UXV)NG(}C345%SKMR.png (UCFJGK`{UVNC8VM2Z(Q4HX.png
我怀疑是读取的时序不对导致了偶数不对,        DS1302_IO_IN();
        for (i = 0; i < 8; i ++)
        {
                temp = temp >> 1;
                if(DS1302_DATA_IN)
                        temp |= 0x80;
                else
                        temp &= 0x7F;
                DS1302_SCK = 1;   //2úéúê±&#214;ó
                delay_us(10);
                DS1302_SCK = 0;
        }
        DS1302_RST = 0;      //í£&#214;1DS1302×ü&#207;&#223;
        return temp;
}
遇到的问题就是这样,有这方面经验的朋友请指导一下

最佳答案

查看完整内容[请看2#楼]

现在已经搞定,是因为坛友的程序好像并没有严格按照DS1302的时序来写,DS1302的时序是上升沿写数据,下降沿读数据。我现在经修改目前程序正常。现在把程序附上。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
937
金钱
937
注册时间
2017-3-23
在线时间
256 小时
 楼主| 发表于 2017-3-23 11:24:30 | 显示全部楼层
现在已经搞定,是因为坛友的程序好像并没有严格按照DS1302的时序来写,DS1302的时序是上升沿写数据,下降沿读数据。我现在经修改目前程序正常。现在把程序附上。 DS1302实验(F103).rar (1.74 MB, 下载次数: 167)
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-3-23 17:25:36 | 显示全部楼层
不用这货了,用PCF8563或者STM32自带的RTC
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2016-9-22
在线时间
41 小时
发表于 2017-4-11 15:41:31 | 显示全部楼层
本帖最后由 MZWPP130501 于 2017-4-11 15:45 编辑

读出来的都是FF
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2017-4-11 16:08:08 | 显示全部楼层
请问为啥串口打印出来的时间不变?一直都是一个时间,不应该时一秒一秒的增长吗?
回复

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
937
金钱
937
注册时间
2017-3-23
在线时间
256 小时
 楼主| 发表于 2017-4-12 08:35:16 | 显示全部楼层
LuoBen 发表于 2017-4-11 16:08
请问为啥串口打印出来的时间不变?一直都是一个时间,不应该时一秒一秒的增长吗?

应该要先写入时间再读取吧,我目前实验是可以的,但是偶尔会时间会重置,需要重新写入才行。有时间我再搞搞
回复

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
937
金钱
937
注册时间
2017-3-23
在线时间
256 小时
 楼主| 发表于 2017-4-12 08:35:49 | 显示全部楼层

都是FF的话就先检查一下硬件吧
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2017-4-14 14:16:46 | 显示全部楼层
未知1908 发表于 2017-4-12 08:35
应该要先写入时间再读取吧,我目前实验是可以的,但是偶尔会时间会重置,需要重新写入才行。有时间我再搞 ...

恩,这个问题已搞定,不过又出现一个新问题,见下一楼
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2017-4-14 14:17:24 | 显示全部楼层
时间戳的记录会出现错误
微信图片_20170414141507.png
回复

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
937
金钱
937
注册时间
2017-3-23
在线时间
256 小时
 楼主| 发表于 2017-4-14 14:55:03 | 显示全部楼层
本帖最后由 未知1908 于 2017-4-14 14:56 编辑
LuoBen 发表于 2017-4-14 14:17
时间戳的记录会出现错误

之前的问题你是怎么解决的??现在的这个问题我感觉是要加上拉电阻,因为时间没有重置,只是偶尔有错读,建议加上上拉电阻10K到3.3V再看看
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2017-4-14 16:09:21 | 显示全部楼层
未知1908 发表于 2017-4-14 14:55
之前的问题你是怎么解决的??现在的这个问题我感觉是要加上拉电阻,因为时间没有重置,只是偶尔有错读, ...

第一次把“DS1302_Write_Time();”这句话打开,编译下载,自定义初试时间,单片机不要断电。然后把“DS1302_Write_Time();”这句话屏蔽掉,编译下载,这样能实现单片机重新上电时间不重置的问题。
再说我的问题,我用的是DS1302的模块,请问在什么地方加上上拉电阻?
回复

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
937
金钱
937
注册时间
2017-3-23
在线时间
256 小时
 楼主| 发表于 2017-4-15 16:55:30 | 显示全部楼层
LuoBen 发表于 2017-4-14 16:09
第一次把“DS1302_Write_Time();”这句话打开,编译下载,自定义初试时间,单片机不要断电。然后把“DS13 ...

与单片机连接的线上加上拉电阻10K,就是一端接IO口一端接3.3V
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2016-9-22
在线时间
41 小时
发表于 2017-4-17 17:54:50 | 显示全部楼层
未知1908 发表于 2017-4-12 08:35
都是FF的话就先检查一下硬件吧

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-22 03:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表