常用的计时时钟芯片有 DS12C887, DS1302, DS1307, DS3231, RX8025, 各型号还有衍生型号. 可以看到到大部分是Dallas生产的芯片, RX8025的厂商是Epson. 其中

RX8025T 是高精度I2C实时时钟芯片, I2C总线地址为固定的0x64
注意, RX-8025T 与 RX-8025SA/NB 只是部分相同, Pin不兼容, 寄存器也不完全相同
二者精度都很高, 误差接近

| PIN | Name | I/O | 说明 |
|---|---|---|---|
| 1 | T1(CE) | Input | 厂商测试 (不连接) |
| 2 | SCL | Input | I2C的时钟 |
| 3 | FOUT | Output | C-MOS 输出, 由 FOE 控制. 当 FOE 为高电平时, 输出 32.768 kHz 信号, 当停止输出时, FOUT pin 表现为高阻态 (high impedance) |
| 4 | N.C. | ||
| 5 | TEST | Input | 厂商测试 (不连接) |
| 6 | VDD | 供电正电压 | |
| 7 | FOE | Input | 用于控制 FOUT pin 的输出. 当此pin为高电平时, FOUT pin 为输出模式, 低电平时 FOUT pin 停止输出. |
| 8 | N.C. | ||
| 9 | N.C. | ||
| 10 | /INT | Output | 这个 pin 用于输出闹钟信号, 定时器信号, 时钟更新信号等, 这个pin为开漏输出. |
| 11 | GND | 接地 | |
| 12 | T2(VPP) | 厂商测试 (不连接) | |
| 13 | SDA | I/O | I2C的数据输入输出, 输出时为 N-ch open drain, 需要上拉电阻. |
| 14 | N.C. |

| Addr | Name | 说明 |
|---|---|---|
| 0x00 | SEC | 计时秒, BCD码[0, 59], 前六位有效 |
| 0x01 | MIN | 计时分钟, BCD码[0, 59], 前六位有效 |
| 0x02 | HOUR | 计时小时, BCD码[0, 23], 24小时制, 前五位有效 |
| 0x03 | WEEK | 计时日(周天), 每一个bit代表一天, 从bit0至bit6依次为周日, 周一, ..., 周六 |
| 0x04 | DAY | 计时日, BCD码[1, 31], 前五位有效 |
| 0x05 | MONTH | 计时月, BCD码[1, 12], 前四位有效 |
| 0x06 | YEAR | 计时年, BCD码[0, 99], 全八位有效 |
| 0x07 | RAM | 非功能, 可读写区域 |
| 0x08 | MIN Alarm | 闹钟分钟, BCD码[0, 59], 前六位有效. 第七位AE标识是否忽略(不参与比较), 0:否, 1:是 |
| 0x09 | HOUR Alarm | 闹钟小时, BCD码[0, 23], 前五位有效. 第七位AE标识是否忽略 |
| 0x0A | WEEK Alarm / DAY Alarm | 闹钟日(周天/日), 由 WADA 寄存器控制 |
| 闹钟周天, 每一个bit代表一天, 从bit0至bit6依次为周日至周六, 第七位AE标识是否忽略 | ||
| 闹钟日, BCD码[1, 31], 前五位有效, 第七位AE标识是否忽略 | ||
| 0x0B | Timer Counter 0 | 计数器的低8位, HEX码(正常数值) |
| 0x0C | Timer Counter 1 | 计数器的高4位, HEX码(正常数值) |
| 0x0D | Extension Register | 扩展功能寄存器 |
| 0x0E | Flag Register | 标志位寄存器 |
| 0x0F | Control Register | 控制位寄存器 |
P32 -> SCL
P33 -> SDA
GND -> GND
3.3V -> VCC
代码下载地址
代码会将 RX8025T 时间设置为 2022-07-16 10:10:10, 然后每隔一秒显示一次时间, 数值为十六进制
10-10-10-40-16-07-22-01-00-04-00-00-00-00-00-40-
11-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
12-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
13-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
14-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
15-10-10-40-16-07-22-01-00-04-00-00-00-00-20-40-
读写时间的方法
__XDATA uint8_t buff[7];
uint8_t RX8025T_Write(uint8_t reg, uint8_t dat)
{
return I2C_Write(RX8025T_I2C_ADDR, reg, &dat, 1);
}
// 初始化, 清除标志位, 关闭中断
uint8_t RX8025T_Init(void)
{
// Reset all flags
RX8025T_Write(RX8025T_REG_FLAG, 0x00);
// Default , turn off all interrupts
RX8025T_Write(RX8025T_REG_CONTROL, 0x40);
return HAL_OK;
}
// 读取时间
uint8_t RX8025T_GetTime(uint8_t *t)
{
I2C_Read(RX8025T_I2C_ADDR, RX8025T_REG_SECOND, t, 16);
return HAL_OK;
}
// 设置时间
uint8_t RX8025T_SetTime(uint8_t *t)
{
RX8025T_Write(RX8025T_REG_SECOND, t[0]);
RX8025T_Write(RX8025T_REG_MINUTE, t[1]);
RX8025T_Write(RX8025T_REG_HOUR, t[2]);
RX8025T_Write(RX8025T_REG_WEEKDAY, t[3]);
RX8025T_Write(RX8025T_REG_DAY, t[4]);
RX8025T_Write(RX8025T_REG_MONTH, t[5]);
RX8025T_Write(RX8025T_REG_YEAR, t[6]);
return HAL_OK;
}
main方法示例
int main(void)
{
uint8_t i;
SYS_SetClock();
// UART1 configuration: baud 115200 with Timer2, 1T mode, no interrupt
UART1_Config8bitUart(UART1_BaudSource_Timer2, HAL_State_ON, 115200);
GPIO_Init();
I2C_Init();
RX8025T_Init();
time[0] = 0x10; // second
time[1] = 0x10; // minute
time[2] = 0x10; // hour
time[3] = 0x40; // week day
time[4] = 0x16; // day
time[5] = 0x07; // month
time[6] = 0x22; // year
RX8025T_SetTime(time);
while(1)
{
RX8025T_GetTime(time);
for (i = 0; i < BUFF_SIZE; i++)
{
UART1_TxHex(time[i]);
UART1_TxChar('-');
}
UART1_TxString("\r\n");
SYS_Delay(1000);
}
}
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
我正在尝试使用正则表达式验证美元金额:^[0-9]+\.[0-9]{2}$这工作正常,但每当用户提交表单并且美元金额以0(零)结尾时,ruby(或rails?)将0砍掉。所以500.00变成500.0,因此正则表达式验证失败。有没有办法让ruby/rails保持用户输入的格式,而不管尾随零? 最佳答案 我假设您的美元金额是小数类型。因此,用户在字段中输入的任何值在保存到数据库之前都会从字符串转换为适当的类型。验证适用于已转换为数字类型的值,因此在您的情况下,正则表达式并不是真正合适的验证过滤器。不过,您有几种可能性可以解决这个问
参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍 介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。 内容有: ①:Hub模型的方法介绍 ②:服务器端代码介绍 ③:前端vue3安装并调用后端方法 ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke() 去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on
Ruby到底是怎么做到的?Jörg或其他人是否知道幕后发生的事情?不幸的是,我不太了解C,所以bignum.c对我帮助不大。我只是有点好奇有人可以解释(用简单的英语)它使用的任何神奇算法背后的理论。irb(main):001:0>999**99936806348825922326789470084006052186583833823203735320465595962143702560930047223153010387361450517521869134525758989639113039318944796977164583238219236607653663113200177617
我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_
我目前有一个运行Ruby1.8.7和Rails2.3.2的RubyonRails项目我有一些从数据库中读取数据的单元测试,特别是两个连续项目的日期时间列,这两个项目应该相隔24小时。在一项测试中,我将项目2的日期时间设置为与项目1的日期时间相同。当我执行断言以确保两个值相等时,测试在rails2.3.2下工作正常。当我升级到rails2.3.11时,测试失败显示两次之间的差异将关闭并出现以下错误:expectedbutwas.这两个版本的rails中似乎存在浮点转换问题。如何解决float问题? 最佳答案 这也发生在我身上,我最终这
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。多年来,我一直在使用多种语言进行编程,并且认为自己总体上相当擅长。但是,我从未编写过任何自动化测试:没有单元测试,没有TDD,没有BDD,什么都没有。我已经尝试开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中所有代码的理论值(value)。我可以看到像RSpec和Mocha这样的测试框架应该如何使设置和运行所述测试变得相当容易
在Rails3.x应用程序中,我正在使用net::ssh并向远程pc运行一些命令。我想向用户的浏览器显示实时日志。比如,如果两个命令在net中运行::ssh执行即echo"Hello",echo"Bye"被传递然后"Hello"应该在执行后立即显示在浏览器中。这是代码我在rubyonrails应用程序中使用ssh连接和运行命令Net::SSH.start(@servers['local'],@machine_name,:password=>@machine_pwd,:timeout=>30)do|ssh|ssh.open_channeldo|channel|channel.requ