掌桥专利:专业的专利平台
掌桥专利
首页

一种SPI设备时钟校正的方法

文献发布时间:2023-06-19 19:30:30


一种SPI设备时钟校正的方法

技术领域

本发明涉及一种时钟校正的方法,特别是一种SPI设备时钟校正的方法。

背景技术

在无晶振应用的芯片,通常使用内部RC振荡电路提供系统时钟,但是内部RC精度低,且随着温度的变化偏差大,不及时校正的话会影响工作,比如UART(通用异步收发传输器,Universal Asynchronous Receiver/Transmitter,UART)的波特率不准无法收发数据。

高速内部时钟信号(High Speed Internal Clock signal,HSI,高速内部时钟信号)启动速度比高速外部时钟信号(High Speed External Clock signal,HSE)晶体振荡器快,但是其精度即使经过校准也仍然比外部晶体振荡器或陶瓷谐振器低。HSI随着温度的变化,偏差也很大,所以一般情况下,HSI作为备用时钟应用在集成电路设计中。

在无晶振应用的芯片中,HSI作为主时钟被使用。本方案提出一种解决方法,能校准HSI时钟,使芯片正常工作。

现有技术,一般内部高频RC(HSI)都是作为备用时钟,芯片使用外部高频晶振作为主时钟,同时通过外部高频时钟校正HSI。但是作为无晶振应用的芯片,外部没有提供高频晶振,就无法用过外部高频晶振去校正内部HSI。

发明内容

发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种SPI设备时钟校正的方法。

为了解决上述技术问题,本发明公开了一种SPI设备时钟校正的方法,包括以下步骤:

步骤1、当所述SPI设备中的主设备进行写操作时,所述主设备拉低CSN信号,并提供48个连续的SCK时钟信号;

从设备监测CSN信号为低后,从第一个SCK时钟信号上升沿开始计数,计数器从0开始计数;计数频率为从设备内部高频时钟f

当从设备检测到第48个SCK时钟信号时,计数器停止计数,将计数值CNT保存在从设备的寄存器中;

步骤2、主设备读从设备计数寄存器中保持的计数值CNT;

步骤3、根据计数值,计算从设备系统时钟f

其中,f

Δf=f

步骤4、主设备将校正补偿值即步骤3中所述的校正频率Δf,写入从设备的寄存器的相应地址中,完成所述的时钟校正。

有益效果:

本发明提出的方案可以通过SPI通信校准内部HSI,无需外部高频晶振。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。

图1为本发明中的信号时序示意图。

图2为SPI写操作通讯协议示意图。

图3为SPI读操作通讯协议示意图。

图4为SPI设备连接示意图。

具体实施方式

一种SPI设备时钟校正的方法,其特征在于,包括以下步骤:

步骤1、当所述SPI(串行外设接口,Serial Peripheral Interface,SPI)设备中的主设备进行写操作时,所述主设备拉低CSN信号,并提供48个连续的SCK时钟信号;信号时序如图1所示;

从设备监测CSN信号为低后,从第一个SCK时钟信号上升沿开始计数,计数器从0开始计数;计数频率为从设备内部高频时钟f

当从设备检测到第48个SCK时钟信号时,计数器停止计数,将计数值CNT保存在从设备的寄存器中;

步骤2、主设备读从设备计数寄存器中保持的计数值CNT;

步骤3、根据计数值,计算从设备系统时钟f

其中,f

Δf=f

步骤4、主设备将校正补偿值即步骤3中所述的校正频率Δf,写入从设备的寄存器的相应地址中,完成所述的时钟校正。

所述SPI设备包括:主设备和从设备,主设备及从设备均包含四个引脚,用于信号传输,设备连接如图4所示,其中:

MISO引脚:主设备输入或从设备输出引脚;该引脚在从设备中发送数据,在主设备中接收数据;

MOSI引脚:主设备输出或从设备输入引脚;该引脚在主设备中发送数据,在从设备中接收数据;

SCK引脚:串口时钟,作为主设备的输出,从设备的输入;

CSN引脚:从设备选择。

从设备中包括寄存器,用于存储所述计数值CNT和校正补偿值Δf。

步骤1中当所述SPI设备中的主设备进行写操作时,当从设备接收到第六字节即校验和时,若校验出错,则不进行频率校正。

步骤3中计算校正频率时,主设备判断校正补偿值的偏差范围,对大于设定阈值的偏差不进行补偿。

步骤3中所述的设定阈值为6553600的4%。

步骤4中所述的写入从设备的寄存器的相应地址中时,寄存器的相应地址中的最高位表示正负符号位。

当主设备想从设备的寄存器进行写操作时,通讯协议如图2所示,主设备连续发送6个字节数据,第一个字节为从设备目标寄存器地址,第2~5字节为目标寄存器数据,第6字节为发送数据的检验和。

当主设备向从设备的寄存器进行读操作时,通讯协议如图3所示,主设备发送准备读取的从设备寄存器的目标地址,从设备收到读指令后,发送4字节数据和1字节校验和。

当主设备向从设备的寄存器进行读或写操作时,通过MOSI引脚传送通信信号。

实施例:

本方案设计了一套自有协议,使主设备可读写从设备的寄存器,从而校正从设备的内部RC振荡器参数。

其中,主设备向从设备的寄存器进行写操作时,采用SPI写操作通讯协议如图2所示:主设备通过MOSI引脚连续发送6个字节数据,第一个字节为从设备目标寄存器地址,第2~5字节为目标寄存器数据,第6字节为发送数据的检验和。

所述写操作通讯协议规定的字节(仅列出各字节的数据位B7:B0)如表1所示:

表1主设备写数据帧结构表

主设备向从设备的寄存器进行读操作时,采用SPI读操作通讯协议如图3所示:首先主设备通过MOSI发送想要读取的从设备目标寄存器地址,从设备收到读指令后,通过MISO发送4字节数据和1字节校验和。

进行上述读操作时,设计主设备向从设备发送的命令帧结构(仅列出各字节的数据位B7:B0),主设备读操作时,MOSI信号线上数据帧结构如表2所示:

表2MOSI信号线上命令数据帧结构表

进行读操作时,设计从设备向主设备发送的应答帧结构(仅列出各字节的数据位B7:B0),主设备读操作时,MISO信号线上的应答数据帧结构如表3所示:

表2MOSI信号线上应答数据帧结构表

如图4所示,通常SPI设备通过4个引脚与外部器件相连:

MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

SCK:串口时钟,作为主设备的输出,从设备的输入。

CSN:从设备选择。

校正流程:

1、每次主设备写操作,主设备拉低CSN信号,提供48个SCK时钟信号,信号时序如图1所示。

从设备监测CSN信号为低后,第一个SCK信号上升沿开始计数,计数器从0开始计数。计数频率为从设备内部高频时钟f

当检测到第48个SCK时钟时,计数器停止计数,将计数值CNT保存在寄存器中。

2、主设备读从设备计数寄存器;

3、根据计数值,计算从设备系统时钟

已知从设备HSI设计值为6.5536MHz,则校正频率为Δf=f

4、主设备将校正补偿值写入从设备相应寄存器地址,其中最高位表示正负符号位。

当从设备接收到第六字节校验和出错时,将不进行频率校正;

另外,主设备判断补偿值的偏差范围,对大于4%的偏差不进行补偿。

具体实现中,本申请提供计算机存储介质以及对应的数据处理单元,其中,该计算机存储介质能够存储计算机程序,所述计算机程序通过数据处理单元执行时可运行本发明提供的一种SPI设备时钟校正的方法的发明内容以及各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等。

本领域的技术人员可以清楚地了解到本发明实施例中的技术方案可借助计算机程序以及其对应的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序即软件产品的形式体现出来,该计算机程序软件产品可以存储在存储介质中,包括若干指令用以使得一台包含数据处理单元的设备(可以是个人计算机,服务器,单片机,MUU或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本发明提供了一种SPI设备时钟校正的方法的思路及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

相关技术
  • 一种基于SPI总线的设备间通信方法及设备拓扑结构
  • 基于SPI实现时钟同步的方法、存储介质及终端设备
  • 基于SPI实现时钟同步的方法、存储介质及终端设备
技术分类

06120115933861