DS1302时钟芯片(SPI协议)

2023-05-16

DS1302时钟芯片

DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能

可以把该芯片看成一个小型的单片机,其内部的寄存器不能控制,通过协议与51进行通信

RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片

引脚名作用引脚名作用
VCC2主电源CE芯片使能
VCC1备用电源IO数据输入、输出
GND电源地SCLK串行时钟
X1、X232.768kHz晶振

在哪 写入 写入什么 -> 单片机

在哪 读取 读取什么 -> 时钟芯片

在这里插入图片描述

寄存器地址\定义

在这里插入图片描述

该寄存器显示了时钟的地址信息,操作时往对应的地址写入值就行,也就是说如果想写入秒,往对应的寄存器写入0x80;表示小时的地址的第7位可选为12小时制还是24小时制,WP是写保护位

时钟暂停标志(CH):
秒寄存器的位7被定义为时钟暂停标志,当此位置1时,时钟振荡器暂停,DS1302进入漏电流小于100nA的低功耗备用模式;当此为置0时时钟开始,初始加电状态未定义

写保护位(WP):
控制寄存器的位7是写保护位,前7位(位0至位6被强制为0且读取时总是读0,在任何对时钟或RAM的写操作以前,位7必须为0;当为高时,写保护位禁止任何寄存器的写操作,初始加电状态未定义;因此,在试图写器件之前应该清除WP位.

命令字

在这里插入图片描述

该图显示的是命令字,命令字启动每一次数据传输时需要配置,第7位固定为1,如果是0则禁止对DS1302的写入,第6位写1则是读取或写入RAM区,写0则读取或写入时钟,第1~5位是地址,即要操作的地址,秒的地址是从0开始;第0位置1是read,对地址进行读取,置0是write,对地址进行写入

例如要读取月信息,则往命令字寄存器写0x89,如要写入月信息,则往命令字寄存器写0x88,对应了RTC左边的地址

SPI总线概念

SPI接口的全称是“Serial Peripheral Interface”,意为串行外围接口

SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

  1. MOSI – 主器件数据输出,从器件数据输入
  2. MISO – 主器件数据输入,从器件数据输出
  3. SCLK – 时钟信号,由主器件产生
  4. /CS – 从器件使能信号,由主器件控制

时序定义

要点:在时钟的上升沿,单片机往时钟芯片写入数据;在时钟的下降沿,时钟芯片往单片机输出数据

在时序图中,只有红色方框框住的是时钟芯片控制的,其余绿色圆形圈住的都是单片机控制

在这里插入图片描述

详细解释:

以写入操作为例:

单片机首先要将CE置高电平,IO口的第一位是命令字的最低位,就是规定本次操作是读还是写,然后SCLK给个上升沿,第一位就被发送出去了,SCLK变回低电平,接着就是下一位A0,同样是上升沿就发送出去,待第一个字节(8位)全部发送出去后,此时便确定了要操作的地址以及操作的模式,是读还是写;

第二个字节便是数据,低地址在前,同样上升沿发送,发送完后,将CE置为低电平,整个写入时序完成

BCD码

BCD码(Binary Coded Decimal‎),用4位二进制数来表示1位十进制数

例:0001 0011表示13,1000 0101表示85,0001 1010不合法

在十六进制中的体现:0x13表示13,0x85表示85,0x1A不合法

BCD码转十进制:DEC=BCD/16 * 10+BCD%16; (2位BCD)
十进制转BCD码:BCD=DEC/10 * 16+DEC%10; (2位BCD)

因为时钟芯片内存放的是BCD码,所以直接读取出来的话会不准确,要转为十进制来显示

可调时钟学习要点

while(1)
{
    key = key_down();
    if(key == 1)	//key1按下,进行模式选择
    {	//主要是Mode模式的选择,初始值为0,当key1按下时置1,再一次按下时再置0,便可实现一个按键无论按多少次都是两个状态
        if(Mode == 0){Mode = 1; TimeSetSelect = 0;}	
        else if(Mode == 1){Mode = 0;DS1302_SetTime();}
    }
    switch(Mode)
    {	//对模式进行判断,如果是0则执行TimeShow函数,如果是1则执行TimeSet函数,这样便可一个按键跳到不同的函数中实现不同的功			能
        case 0:TimeShow();break;
        case 1:TimeSet();break;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DS1302时钟芯片(SPI协议) 的相关文章

  • 一文搞懂——软件模拟SPI

    关于stm32通信协议 xff1a 软件模拟SPI 软件模拟I2C的总结 xff08 fishing 8 xff09 To be a fisher的博客 CSDN博客 stm32 软件spi 发现一篇写的软件模拟SPI的比较容易理解的博客
  • SPI通讯协议详解 基于STM32

    SPI 协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议 Serial Peripheral Interface xff0c 即串行外围设备接口 xff0c 是 一种高速全双工的通信总线 它被广泛地使用在 ADC LCD 等设备与 MC
  • pixhawk px4 spi设备驱动

    此篇blog是以nuttx官网介绍为出发点 xff0c 先分析如何初始化的 xff0c 再分析如何读取传感器数据的 xff0c 最后对比了字符型设备操作和spi驱动的实现方式的差别 如有错误还请指正 6 字符型设备 所有的结构体和API都在
  • UART、I2C、SPI接口常见面试问题总结

    UART 定义 xff1a Universal Asynchronous Receiver Transmitter 通用异步收发传输器 特点 xff1a 速率不快 可全双工 结构上一般由波特率产生器 UART发送器 UART接收器组成 xf
  • 串口通信协议【I2C、SPI、UART、RS232、RS422、RS485、CAN、TTL、USB】

    xff08 1 xff09 I2C 集成电路互连总线接口 Inter IC xff1a 同步串行半双工传输总线 xff0c 连接嵌入式处理器及其外围器件 支持器件 xff1a LCD驱动器 Flash存储器 特点 有两根传输线 xff08
  • 【STM32CubeMX】STM32H7-RTOS-SPI-W5500

    工程源码下载 xff1a 基于裸机和Freertos的W5500网络通信工程 目录 1 移植W5500步骤 2 Cobemx配置步骤 2 1 时钟配置Clock Configuration 2 2 Trace and Debug配置 2 3
  • spi,iic,uart,pcie区别

    一 spi SPI 是英语Serial Peripheral interface的缩写 xff0c 顾名思义就是串行外围设备接口 xff0c 是同步传输协议 xff0c 特征是 xff1a 设备有主机 xff08 master xff09
  • 通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别

    GPIO xff0c I2C xff0c SPI xff0c UART xff0c USART xff0c USB的区别 1 简单区别 xff1a 1 xff09 GPIO xff08 General Purpose Input Outpu
  • 基于I2C/SPI的温湿度采集与OLED显示

    基于I2C SPI的温湿度采集与OLED显示 一 AHT20温湿度采集1 I2C2 温湿度采集代码效果 二 OLED显示1 显示学号姓名2 诗句显示 三 总结四 参考 一 AHT20温湿度采集 1 I2C 解释什么是 软件I2C 和 硬件I
  • SPI通讯协议介绍

    来到SPI通讯协议了 废话两句 xff0c SPI很重要 xff0c 这是我在学校时候听那些单片机开发工程师说的 出来实习 xff0c 到后来工作 xff0c 确实如此 xff0c SPI的使用很常见 xff0c 那么自然重要咯 SPI S
  • Single SPI、Dual SPI、Qaud SPI

    博主目前已经用上了 QSPI
  • 时钟芯片DS1302的原理及使用

    一 描述 DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片 它可以对年 月 日 周 时 分 秒进行计时 且具有闰年补偿等多种功能 DS1302芯片包含一个用于存储实时时钟 日历的 31 字节的静态
  • Raspberry Pi 与Arduino SPI通信

    本教程介绍了使用SPI 串行外围设备接口总线 进行Raspberry Pi与Arduino通讯和控制的基本框架 SPI代表了一种非常完善的芯片间通信方法 该方法在两种设备的硬件中均实现 在这里 我们将详细探讨SPI 讨论硬件和软件注意事项
  • 外设驱动库开发笔记22:ADXL345三轴数字加速度计驱动

    移动设备的广泛应用增加对移动过程中各种参数的检测需求 ADXL345三轴数字加速度计可以用来检测加速度 进而测量倾斜角度等 在这一篇中 我们将讨论ADXL345三轴数字加速度计驱动程序的设计与实现 1 功能概述 ADXL345是一款小而薄的
  • Android-模块化通信-简单实用的android spi机制

    目录 前言 一 spi是什么 二 ServiceLoader 1 ExportTableLoader 2 ExportTable 3 LazyLoader 4 ServiceLoader 三 应用 四 总结 前言 为了实现Android 模
  • Linux内核自带SPI设备驱动测试程序分析:spidev_test.c

    在Linux系统中 SPI 的用户模式设备接口的驱动源码位于 drivers spi spidev c 在应用层生成 dev spidev 的节点 可以通过 read write 达到与硬件设备的 SPI 通信 下面介绍spidev驱动移植
  • Linux,spidev:为什么它不应该直接在设备树中?

    我想定义一个具有用户模式访问权限的 SPI 设备 如中所述http linux sunxi org SPIdev 按照这些示例 我在设备树中添加了以下内容 ecspi1 other stuff mydev 0 compatible spid
  • Spidev 不使用 ioctl 同时写入/读取

    我希望找到一些帮助 即使这个问题可能更多地与硬件相关而不是与软件相关 我们将会看到 我正在开发基于 Freescales P1021 处理器 ppc e500v2 内核 的定制板 将连接外部 PCB 并可通过 SPI 进行配置 该外部 PC
  • Python - 如何使用 ioctl 或 spidev 从设备读取输入?

    我有一个提供它的供应商提供了一些 C 代码来监听按钮按下 该代码使用ioctl 该设备具有 SSD1289 控制器 按钮不需要额外的引脚 可以通过 SPI 读取其状态 这就是我想要的 读取按下了哪个按钮 我试图在 Python 中为我自己的
  • 树莓派 pico rfid rc522 (Micropython)

    我想使用 RPi Pico 从 mfrc522 Iduino RFID rc522 读卡器读取数据 但我不知道如何操作 我试图使用为此目的制作的 mfrc522 py MicroPython 库 阅读器正在通过 SPI 与 Pi 通信 我将

随机推荐

  • VNC viewer连接树莓派报错“Cannot currently show the desktop”

    我也遇到一种情况是vnc viewer连接树莓派系统时出现这样的报错 xff1a 今天为了能够调用摄像头 xff0c 结果自己尝试了一下下面的过程 xff1a 完成上面的更改后 xff0c 然后重启就出现了上面的情况 xff0c 解决方法很
  • 树莓派bash: gpio:未找到命令

    今天用gpio指令时出现报错 xff1a bash gpio 未找到命令 然后我就去搜解决方法 xff0c 试了下面方法后解决问题 xff0c 在此记录一下 xff1a span class token function wget span
  • 树莓派4b Raspberry Pi 4安装以前内置Python3.7版本的buster系统出现的一系列问题记录

    今天想要重装树莓派系统 xff0c 想装那种内置Python3 7版本的系统 xff0c 从网上找到镜像源后烧录进去出现一系列问题 xff1a 烧录系统开机后 xff0c 首先就出现报错 xff1a 上面显示一个问题就是 xff1a sta
  • Opencv将图片中的手写数字一个一个单独的抠出来并保存到指定的文件夹

    今天想要构建自己的MNIST数据集 xff0c 但是一个一个手画然后拍照再把数字一个一个抠出来实在是太耗时了 xff0c 所以想用程序解决这个问题 xff1a 下面附上程序 xff1a xff08 备注 xff1a 里面的代码是在之前某个博
  • onnxruntime.capi.onnxruntime_pybind11_state.Fail: [ONNXRuntimeError] : 1 : FAIL : Load model from mn

    树莓派4B在使用onnxruntime1 6 0对model onnx模型进行加载的时候出现以下的报错 xff1a 原因 xff1a 由于导出的ONNX模型文件不兼容ONNX Runtime当前版本所导致的 xff0c 一开始我导出模型的方
  • C++ 模板与泛型编程简述

    目录 1 什么是模板和泛型编程 2 定义及使用模板 1 什么是模板和泛型编程 什么是模板 xff1f 什么是泛型编程 xff1f 模板的概念与泛型编程是相辅相成的 想象一个场景 xff1a 我们需要比较两个整数或两个字符串的大小 xff0c
  • 在jupyter notebook中添加和删除环境【笔记】

    在jupyter notebook中加入虚拟环境 xff1a python span class token operator span m ipykernel install span class token operator span
  • 浮点数怎么用二进制表示

    浮点数怎么用二进制表示 对于浮点数在计算机中是怎么用二进制表示的 xff0c 这个知识点让我学了很久 xff0c 很多资料讲的特别抽象难懂 xff0c 所以今天我想用自己的方式讲一讲 学过 计算机组成原理 或者类似 计算机系统 这些课程的小
  • Git合并出问题了怎么办

    首先 xff0c 我们不要在master中去进行修改提交 xff0c 一般这个时候我们新建一个分支 xff0c 将合并后的代码复制到新的分支中去 xff0c 然后我们对分支去进行一个修改 xff0c 当修改完成之后 xff0c 再合并到ma
  • 解决win11不能开启5GHZ热点的问题

    对于电脑5GHZ波段不可用的问题解决方法如下 xff1a 手机打开5GHz先让电脑连接电脑开启5Ghz热点断开WiFi xff0c 这时就可以用电脑开的5Ghz的热点了
  • SpringBoot 各层之间的关系

    一 层级 SpringBoot 分为四层 xff1a controller层 service层 dao层 entity层 entity层 xff1a 和model层一样 xff0c 存放的是实体类 xff0c 属性值与数据库值保持一致 xf
  • IEEE 802.1至802.12各层的 功能及特点

    IEEE 802 1 通用网络概念及网桥等 IEEE 802 2 逻辑链路控制等 IEEE 802 3 CSMA CD访问方法及物理层规定 IEEE 802 4 ARCnet总线结构及访问方法 物理层规定 IEEE 802 5 Token
  • ubuntu 常用命令大全

    一 文件 文件夹管理 ls 列出当前目录文件 xff08 不包括隐含文件 xff09 ls a 列出当前目录文件 xff08 包括隐含文件 xff09 ls l 列出当前目录下文件的详细信息 cd 回当前目录的上一级目录 cd 回上一次所在
  • MyBatis mapper.xml中使用静态常量或者静态方法

    使用MyBatis技术 xff0c 书写mapper xml时 xff0c 如果在其中的ognl表达式或者sql中直接使用一些数字或者字符串的话 xff0c 会造成难以维护的问题 在Java编码中 xff0c 我们通常会把这些数字或者字符串
  • get请求和post请求的区别

    HTTP协议 什么是协议 xff1f 协议实际上是某些人 xff0c 或者某些组织提前制定好的一套规范 xff0c 大家都按照这个规范来 xff0c 这样可以做到沟通无障碍 协议就是一套规范 xff0c 就是一套标准 由其他人或其他组织来负
  • 常见网络协议

    网络协议为计算机网络中进行数据交换而建立的规则 标准或约定的集合 例如 xff0c 网络中一个微机用户和一个大型主机的操作员进行通信 xff0c 由于这两个数据终端所用字符集不同 xff0c 因此操作员所输入的命令彼此不认识 为了能进行通信
  • C++ 栈(stack)使用简述

    目录 1 有关函数的作用 2 测试用例 至于栈的结构与原理 xff08 先入后出 xff09 这里就不细说了 xff0c 这里主要记录下 C 43 43 的头文件 lt stack gt 有关栈的操作是如何使用的 1 有关函数的作用 sta
  • 解决一个镜像ID同时拥有多个tag的问题

    docker rmi span class token operator lt span REPOSITORY TAG span class token operator gt span
  • 蜂鸣器介绍

    蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件 xff0c 常用来产生设备的按键音 报警音等提示信号 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器 有源蜂鸣器 xff1a 内部自带振荡源 xff0c 将正负极接上直流电压即可持续发声
  • DS1302时钟芯片(SPI协议)

    DS1302时钟芯片 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片 它可以对年 月 日 周 时 分 秒进行计时 xff0c 且具有闰年补偿等多种功能 可以把该芯片看成一个小型的单片机 xff0c 其内部