STM32F407软件模拟IIC驱动RX8025程序加原理图
一、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程序加原理图相关推荐
- STM32基于软件模拟IIC进行AHT21B温湿度采集
STM32基于软件模拟IIC进行AHT21B温湿度采集 一. IIC简介 1.1 IIC简介 1.2 实现方式 1.3 实现方式对比 二. AHT21B简介 2.1 简介 2.2 产品特点 2.3 外 ...
- 软件模拟IIC主从机
软件模拟IIC 从机部分 从机接收部分 从机发送部分 主机部分 阻塞式发送 定时器中断方式发送 从机部分 因为项目简单,就只有数据接收,数据命令处理,显示.显示部分使用定时器中断动态扫描方式,主函数用 ...
- STM32 软件模拟 IIC 代码,标准库、HAL库可用
1 #ifndef _IIC_H 2 #define _IIC_H 3 4 #include "stdio.h" 5 #include "stm32f1xx_hal.h& ...
- 基于Stm32f103利用模拟iic驱动LM75A温度传感器
这两天一直在搞模拟iic,模拟iic相较于硬件iic的优势在于更稳定,io口的选择更灵活. 这次编写模拟iic驱动程序还是有点坎坷,其中模拟iic的时序不是难点,直接说我遇到的问题1.io口模式的选择 ...
- STM32F103单片机软件模拟IIC并读取TMP112数字温度传感器
本文利用STM32F103系列单片机读取TMP112数字温度传感器的温度信息,TMP112数字传感器采用IIC总线协议通信.STM32自身含有硬件IIC资源,分别是PB6-->SCL.PB7-- ...
- CH582M 模拟iic 驱动 QMI8658笔记(避免失败坑)
模拟IIC可移植性高 是优先选择. 582M模拟IIC驱动很多人遇到不成功问题,逻辑分析仪看到数据波形也是正确的,可就是驱动失败. 其实原因很简单,无非时序和SDA的读取问题. 废话不多先展示8658 ...
- MSP430杂谈--AD7745硬件IIC驱动与模拟IIC驱动
和上一篇AD7793类似,项目中也涉及到利用AD7745读取电容值,来测环境湿度.编写了基于MSP430的AD7745的硬件IIC驱动和模拟IIC驱动,分享给大家. AD7745硬件IIC驱动完整版下 ...
- STM32 Cube MX 之hal库软件模拟IIC 可直接移植使用
此为软件模拟IIC,可以直接移植到HAL库使用..h文件需要自己做函数声明这里就不再放出,如有问题大家可以讨论. 使用的时候只需要更改SDA 和SCL引脚的宏定义就可以移植使用,当然IIC协议其实就是 ...
- STM32 软件模拟IIC
0.系列目录 STM32 软件模拟IIC STM32 使用DMP库处理MPU6050数据 STM32 MPU6050与匿名上位机通讯(V2.6版) 1.IIC通讯过程 SCL和SDA在空闲时候均为高电 ...
- IO口软件模拟IIC
一.IIC时序 IIC(Inter-Integrated Circuit, 内部集成电路)总线是飞利浦公司开发的两线式串行总线,用于短距离传输,常用语微控制器及其外围设备.它是由数据线SDA和时钟线S ...
最新文章
- 文献阅读|Dynamic-SLAM
- 行业洞见 | 一文了解自动驾驶汽车
- zabbix_agentd.conf配置文件详解
- EGLImage与纹理
- 数据结构实验之链表六:有序链表的建立
- java梅森素数_JAVA基础 第三篇:梅森数、梅森素数、伪素数——素数与指数的完美结合与进阶...
- 计算一个人出生了多少天(炸窝)
- Python 文件编码问题解决
- 梯度下降算法总结 (FG,SG,SAG,mini-batch,Momentum等等)
- linux下mac风格菜单栏,Mac 菜单栏样式太单调?不妨用这个小工具自己动手定制
- 计算机组成与系统结构概述
- html的日期插件标签,CaretTab - 新式可以显示时间和日期的标签
- 磁共振t1t2信号记忆顺口溜_核磁共振诊断报告中的T1T2信号是什么意思?
- 让电脑说话vbs程序
- [Paper Reading]开始写Paper Reading Report
- ubuntu 20.04网卡驱动安装(rtl8812au)
- 大学生职业生涯规划书性格特征_大学生职业生涯规划书自我分析
- 几何光学学习笔记(8)- 3.2 理想光学系统的焦点与焦平面、主点与主平面、焦距、节点
- HMI-44-【多媒体】开启新篇章
- 制作 macOS High Sierra U盘
热门文章
- js实现椭圆轨迹_利用js实现div画椭圆曲线运动特效代码
- Windows下9001端口被占用
- 微型计算机系统教案,微型计算机硬件系统教案
- dreamweaver cc php mysql_Dreamweaver cc 2015 +PHP+MySQL动态网站开发案例教程集合
- Adobe Dreamweaver(DW)安装教程(附安装包下载地址)
- 如何下载静海区卫星地图高清版大图
- 维护和维修涉密计算机网络 必须严格采取,安全保密管理员主要负责涉密网络的日常安全保密管理工作,包括()。A.涉密网络的日常运行维护工 - 普法考试题库问答...
- 我们最畅销的30本好书,都在这了
- Nopcommerce kendo UI Roxy Fileman控件的汉化
- .docx勒索病毒删除 .docx勒索病毒还原文件