一、RX8025T介绍
RX8025-T是一款拥有I2C接口和温度补偿功能的新型实时时钟芯片,内部集成32.768KHz温度补偿晶体振荡器,可用于各种需要高精度时钟的场合。通过设置相应补偿的控制位,可以实现不同间隔的温度补偿功能,从而大大提高了时钟的精度。芯片可设置四种不同的时段进行温度补偿,默认设置是2S补偿。该芯片采用C-MOS工艺生产,具有极低的功能消耗,可长期使用电池供电。

二、原理图

三、参考程序

u8 r8025_init(void)
{uint8_t val[3]={0x00,0x00,0x60};  //0x0D、0x0E、0x0F、三个寄存器的值,设置时间更新为“秒”更新,关闭所有闹钟,温补时间为2秒,打开时间更新中断,关闭其他中断。iic_init();  //iic接口初始化if(rx8025_write_data(RX8025T_EXT_REG,val,3))return 1;        return 0;
}
/*******************************************************************************
* 函数名: u8 rx8025_write_data(u8 addr, u8 *buf, u8 len)
* 描述  : 写RX8025T寄存器
* 参数  : addr寄存器地址,*buf写入的数据,len写入的长度
* 返回值: 1=操作失败,0=操作成功
*******************************************************************************/
u8 rx8025_write_data(u8 addr, u8 *buf, u8 len)
{uint8_t i;iic_start();iic_send_byte(0x64); //写操作指令if(iic_wait_ack())   //检测ACK信号{iic_stop();    //发送IIC停止信号return 1;   }iic_send_byte(addr); //写寄存器存储地址if(iic_wait_ack()) {iic_stop();return 1;    }   for(i=0; i<len; i++) //连续写{iic_send_byte(buf[i]);if(iic_wait_ack()) {iic_stop();return 1; }       }iic_stop();return 0;
}/*******************************************************************************
* 函数名: u8 rx8025_read_data(u8 addr,u8 *buf,u8 len)
* 描述  : 读RX8025T寄存器
* 参数  : addr寄存器地址,*buf存储位置,len读取的长度
* 返回值: 1=操作失败,0=操作成功
*******************************************************************************/
u8 rx8025_read_data(u8 addr,u8 *buf,u8 len)
{u8 i;iic_start();iic_send_byte(0x64);  //写操作指令if(iic_wait_ack()) {iic_stop();return 1; }   iic_send_byte(addr);  //发送寄存器地址if(iic_wait_ack()) {iic_stop();return 1; }       iic_start();          //Sr条件,RESTARTiic_send_byte(0x65);  //读操作指令if(iic_wait_ack()) {iic_stop();return 1;    }   for(i=0; i<len; i++) //连续读{buf[i] =iic_read_byte(1);  //读取数据并发送ACK信号}//  iic_nack();         //发送一个‘1’iic_stop();return 0;
}/*******************************************************************************
* 函数名: u8 get_rx8025_time(TIME* t)
* 描述  : 从RX8025T获取时间
* 参数  : 存储时间的结构体
* 返回值: 0成功,1失败。
*******************************************************************************/
u8 get_rx8025_time(TIME *t)
{u8 rtc_str[7];if(rx8025_read_data(RX8025T_SEC_REG,rtc_str,7))  //获取日期与时间return 1;  //读取出错t->second = ((rtc_str[0]>>4)*10) + (rtc_str[0] & 0x0f);t->minute = ((rtc_str[1]>>4)*10) + (rtc_str[1] & 0x0f);t->hour   = ((rtc_str[2]>>4)*10) + (rtc_str[2] & 0x0f);t->week      = rtc_str[3];  t->day    = ((rtc_str[4]>>4)*10) + (rtc_str[4] & 0x0f);t->month  = ((rtc_str[5]>>4)*10) + (rtc_str[5] & 0x0f);t->year   = ((rtc_str[6]>>4)*10) + (rtc_str[6] & 0x0f);t->year+=2000;return 0;}
/*******************************************************************************
* 函数名: u8 set_rx8025_time(TIME* t)
* 描述  : 设置RX8025T时间
* 参数  : 存储时间的结构体
* 返回值: 0成功,1失败。
*******************************************************************************/
u8 set_rx8025_time(u16 year,u8 month,u8 day,u8 week,u8 hour,u8 minute,u8 second)
{u8 rtc_str[7];year-=2000;rtc_str[0] = ((second/10)<<4) | (second%10);rtc_str[1] = ((minute/10)<<4) | (minute%10);rtc_str[2] = ((hour/10)<<4) | (hour%10);rtc_str[3] = week;rtc_str[4] = ((day/10)<<4) | (day%10);rtc_str[5] = ((month/10)<<4) | (month%10);rtc_str[6] = ((year/10)<<4) | (year%10);if(rx8025_write_data(RX8025T_SEC_REG,rtc_str,7))    //写入日期与时间return 1; else return 0;
}

四、完整工程下载
完整工程请点击

STM32F407软件模拟IIC驱动RX8025程序加原理图相关推荐

  1. STM32基于软件模拟IIC进行AHT21B温湿度采集

    STM32基于软件模拟IIC进行AHT21B温湿度采集 一. IIC简介 1.1 IIC简介 1.2 实现方式 1.3 实现方式对比 二. AHT21B简介 2.1 简介 2.2 产品特点 2.3 外 ...

  2. 软件模拟IIC主从机

    软件模拟IIC 从机部分 从机接收部分 从机发送部分 主机部分 阻塞式发送 定时器中断方式发送 从机部分 因为项目简单,就只有数据接收,数据命令处理,显示.显示部分使用定时器中断动态扫描方式,主函数用 ...

  3. STM32 软件模拟 IIC 代码,标准库、HAL库可用

    1 #ifndef _IIC_H 2 #define _IIC_H 3 4 #include "stdio.h" 5 #include "stm32f1xx_hal.h& ...

  4. 基于Stm32f103利用模拟iic驱动LM75A温度传感器

    这两天一直在搞模拟iic,模拟iic相较于硬件iic的优势在于更稳定,io口的选择更灵活. 这次编写模拟iic驱动程序还是有点坎坷,其中模拟iic的时序不是难点,直接说我遇到的问题1.io口模式的选择 ...

  5. STM32F103单片机软件模拟IIC并读取TMP112数字温度传感器

    本文利用STM32F103系列单片机读取TMP112数字温度传感器的温度信息,TMP112数字传感器采用IIC总线协议通信.STM32自身含有硬件IIC资源,分别是PB6-->SCL.PB7-- ...

  6. CH582M 模拟iic 驱动 QMI8658笔记(避免失败坑)

    模拟IIC可移植性高 是优先选择. 582M模拟IIC驱动很多人遇到不成功问题,逻辑分析仪看到数据波形也是正确的,可就是驱动失败. 其实原因很简单,无非时序和SDA的读取问题. 废话不多先展示8658 ...

  7. MSP430杂谈--AD7745硬件IIC驱动与模拟IIC驱动

    和上一篇AD7793类似,项目中也涉及到利用AD7745读取电容值,来测环境湿度.编写了基于MSP430的AD7745的硬件IIC驱动和模拟IIC驱动,分享给大家. AD7745硬件IIC驱动完整版下 ...

  8. STM32 Cube MX 之hal库软件模拟IIC 可直接移植使用

    此为软件模拟IIC,可以直接移植到HAL库使用..h文件需要自己做函数声明这里就不再放出,如有问题大家可以讨论. 使用的时候只需要更改SDA 和SCL引脚的宏定义就可以移植使用,当然IIC协议其实就是 ...

  9. STM32 软件模拟IIC

    0.系列目录 STM32 软件模拟IIC STM32 使用DMP库处理MPU6050数据 STM32 MPU6050与匿名上位机通讯(V2.6版) 1.IIC通讯过程 SCL和SDA在空闲时候均为高电 ...

  10. IO口软件模拟IIC

    一.IIC时序 IIC(Inter-Integrated Circuit, 内部集成电路)总线是飞利浦公司开发的两线式串行总线,用于短距离传输,常用语微控制器及其外围设备.它是由数据线SDA和时钟线S ...

最新文章

  1. 文献阅读|Dynamic-SLAM
  2. 行业洞见 | 一文了解自动驾驶汽车
  3. zabbix_agentd.conf配置文件详解
  4. EGLImage与纹理
  5. 数据结构实验之链表六:有序链表的建立
  6. java梅森素数_JAVA基础 第三篇:梅森数、梅森素数、伪素数——素数与指数的完美结合与进阶...
  7. 计算一个人出生了多少天(炸窝)
  8. Python 文件编码问题解决
  9. 梯度下降算法总结 (FG,SG,SAG,mini-batch,Momentum等等)
  10. linux下mac风格菜单栏,Mac 菜单栏样式太单调?不妨用这个小工具自己动手定制
  11. 计算机组成与系统结构概述
  12. html的日期插件标签,CaretTab - 新式可以显示时间和日期的标签
  13. 磁共振t1t2信号记忆顺口溜_核磁共振诊断报告中的T1T2信号是什么意思?
  14. 让电脑说话vbs程序
  15. [Paper Reading]开始写Paper Reading Report
  16. ubuntu 20.04网卡驱动安装(rtl8812au)
  17. 大学生职业生涯规划书性格特征_大学生职业生涯规划书自我分析
  18. 几何光学学习笔记(8)- 3.2 理想光学系统的焦点与焦平面、主点与主平面、焦距、节点
  19. HMI-44-【多媒体】开启新篇章
  20. 制作 macOS High Sierra U盘

热门文章

  1. js实现椭圆轨迹_利用js实现div画椭圆曲线运动特效代码
  2. Windows下9001端口被占用
  3. 微型计算机系统教案,微型计算机硬件系统教案
  4. dreamweaver cc php mysql_Dreamweaver cc 2015 +PHP+MySQL动态网站开发案例教程集合
  5. Adobe Dreamweaver(DW)安装教程(附安装包下载地址)
  6. 如何下载静海区卫星地图高清版大图
  7. 维护和维修涉密计算机网络 必须严格采取,安全保密管理员主要负责涉密网络的日常安全保密管理工作,包括()。A.涉密网络的日常运行维护工 - 普法考试题库问答...
  8. 我们最畅销的30本好书,都在这了
  9. Nopcommerce kendo UI Roxy Fileman控件的汉化
  10. .docx勒索病毒删除 .docx勒索病毒还原文件