M-Arch(10)第九个示例:SPI与DS1302
前言
回顾下之前的章节:第一章节中我们描述了整个框架的核心设计思路以及主要的文件架构第二章节中我们基于一个简单的定时器OS实现了串口的数据打印,并完成了通用crc模块的设计和测试第三章节中我们给出了真随机数和伪随机数的概念和代码示例,并在架构上对接口进行了重构第四章节中我们回顾了FMC的基本知识,并给出了示例,后面我们将在设计IAP的时候再次使用到FMC第五章节中我们使用ADC和DMA搭建了一个通用的采样框架,并通过串口给出了采样的数据示例第六章节中我们总结了DAC的基本使用方法,并通过DAC生成了任意频率的正弦波,三角波和方波第七章节中我们总结下时钟的概念,并给出了系统中各模块的时钟频率的代码第八章节中我们介绍了如何通过串口的DMA来实现串口数据的收发第九章节中我们介绍了定时器的使用,以及如何产生普通占空比PWM以及互补带死区的PWM,这在控制中十分重要
本文我们将介绍下SPI的概念,以及如何使用三线SPI的时序驱动DS1302时钟芯片,同时我们也将给出用模拟IO方式驱动DS1302的方法。
关键字:STM32,GD32,SPI,DS1302,三线SPI,半双工SPI
SPI
串行外设接口(Serial Peripheral Interface,缩写为SPI)提供了基于SPI协议的数据发送和接收功能,可以工作于主机或从机模式。SPI接口支持具有硬件CRC计算和校验的全双工和单工模式。有些SPI口还支持SPI四线主机模式。
常规的SPI信号描述如下图:
常规SPI信号描述
DS1302
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,并且具有闰年补偿等多种功能。(百度百科)
DS1302的管脚配置:
DS1302的时序:
DS1302时序
可以看到:除了CE高低电平不一样,这个时序跟半双工的SPI是一样的。
半双工SPI
DS1302的寄存器配置:
DS1302寄存器
DS1302的时钟频率:
DS1302时钟频率
三线SPI驱动DS1302
半双工SPI的基本初始化:单线发送模式数据8位主机模式时钟空闲低电平,第一个边沿读数据NSS Soft分频:根据DS1302的配置来,一般1M多比较合适。LSB
发送流程:设置为发送模式CE使能发送地址发送数据CE失能
接收流程:设置为发送模式CE使能发送地址设置为接收模式等待数据接收完成CE失能切换为发送模式,掐断SPI时钟信号读数据,等待SPI收工
模拟IO驱动DS1302
从网上找的代码,其原理就是用IO口反转来模拟高低电平。
一坨代码
GD32代码:
STM32代码:
对外接口代码:
例行结果展示
串口打印时间
DS1302时间打印
GD32 SPI驱动DS1302 示波器数据
GD32三线SPI驱动DS1302
GD32三线SPI驱动DS1302 WEEK数据
GD32 IO口模拟驱动DS1302 示波器数据
GD32 IO口模拟驱动DS1302
GD32 IO口模拟驱动DS1302 WEEK数据
STM32 SPI驱动DS1302 示波器数据
STM32三线SPI驱动DS1302
STM32三线SPI驱动DS1302 WEEK数据
STM32 IO口模拟驱动DS1302 示波器数据
STM32 IO口模拟驱动DS1302
STM32 IO口模拟驱动DS1302 WEEK数据
–EOF–
例行求粉,谢谢!
求粉本文使用 文章同步助手 同步
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/97169.html