OpenEdv-开源电子网

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

STM32 DS3232M

[复制链接]

13

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2015-1-15
在线时间
73 小时
发表于 2015-9-1 20:44:20 | 显示全部楼层 |阅读模式
5金钱

#define IIC_SCL PBout(6)// DS1
#define IIC_SDA PBout(7)
#define IN_SDA PBin(7)

//改变SDA所接的IO输入/输出
#define IIC_SDA_IN   ((GPIOB->CRL&0X0FFFFFFF)|0X80000000)
#define IIC_SDA_OUT  ((GPIOB->CRL&0X0FFFFFFF)|0X30000000)

u8 IIC_Write_Byte(u8 dat)
{
u8 i;
u8 iic_ack=0; //iic应答标志

IIC_SDA_OUT; //设置成输出

for(i = 0;i < 8;i++)
{
if(dat & 0x80) IIC_SDA = 1; //判断发送位,先发送高位
else IIC_SDA = 0;

#if _USER_DELAY_CLK==1  /* 定义了则使用延时函数来改变通讯频率 */

IIC_Delay();
IIC_SCL = 1; //为SCL下降做准备
IIC_Delay();
IIC_SCL = 0; //突变,将数据位发送过去
dat<<=1; //数据左移一位
IIC_Delay();
} //字节发送完成,开始接收应答信号

IIC_SDA = 1; //释放数据线
IIC_SDA_IN; //设置成输入

IIC_SCL = 1; //为SCL下降做准备
IIC_Delay();


#else  /* 否则不使用延时函数改变通讯频率 */

IIC_SCL = 1; //为SCL下降做准备
IIC_SCL = 0; //突变,将数据位发送过去
dat<<=1; //数据左移一位
} //字节发送完成,开始接收应答信号

IIC_SDA = 1; //释放数据线
IIC_SDA_IN(); //设置成输入

IIC_Delay();
IIC_SCL = 1; //为SCL下降做准备

#endif  /* end __USER_DELAY_CLK */

iic_ack |= IN_SDA; //读入应答位
IIC_Delay();
IIC_SCL = 0;
return iic_ack; //返回应答信号
}

写入地址后,3232无返回低电平的应答。
DS3232时序.jpg

最佳答案

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

回复【2楼】正点原子: --------------------------------- 解决了  IO口需配置成OD 而不能PP
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2015-1-15
在线时间
73 小时
 楼主| 发表于 2015-9-1 20:44:21 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
解决了  IO口需配置成OD 而不能PP
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-9-1 21:15:50 | 显示全部楼层
帮顶.....
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-9-2 12:34:04 | 显示全部楼层
好有意思喔,论坛上面有3231的http://www.openedv.com/posts/list/32492.htm
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

13

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2015-1-15
在线时间
73 小时
 楼主| 发表于 2015-9-6 13:21:38 | 显示全部楼层
回复【3楼】八度空间:
---------------------------------
读写时间能够正常,但是断电之后,时间都回到默认值了。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-9-8 08:17:47 | 显示全部楼层
回复【5楼】debug:
---------------------------------
你初始化时间判断不对,在内置的备份寄存器里边用一个地址写一个数值,开机的时候判断这个字节,是对的则不用再次初始化了,否则就要初始化时间
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

13

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2015-1-15
在线时间
73 小时
 楼主| 发表于 2015-9-10 17:06:33 | 显示全部楼层
回复【6楼】八度空间:
---------------------------------
隐隐有些不明白,电池备份就是为了断电后继续计时,保证时间准确,判断字节是否要初始化的话,初始化后时间就不对了。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-9-10 21:19:41 | 显示全部楼层
回复【7楼】debug:
---------------------------------
仔细看看原子哥探索者开发板RTC例程吧,看看怎么做的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 06:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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