《基于SPI数据传输时序的数据传输方法和系统.pdf》由会员分享,可在线阅读,更多相关《基于SPI数据传输时序的数据传输方法和系统.pdf(14页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103092806 A (43)申请公布日 2013.05.08 CN 103092806 A *CN103092806A* (21)申请号 201310019727.X (22)申请日 2013.01.18 G06F 13/42(2006.01) (71)申请人 青岛海信宽带多媒体技术有限公司 地址 266555 山东省青岛市经济技术开发区 前湾港路 218 号 (72)发明人 孙黎明 (74)专利代理机构 北京市京大律师事务所 11321 代理人 黄启行 方晓明 (54) 发明名称 基于 SPI 数据传输时序的数据传输方法和系 统 (57) 摘要 本发明公开了一种。
2、基于 SPI 数据传输时序的 数据传输方法和系统, 所述方法包括 : 主器件输 出有效状态的SPI时钟, 并发送1字节的读/写标 志、 2 字节的起始地址 SA, 以及 2 字节的读 / 写数 据长度 Len ; 从器件根据主器件输出的 SPI 时钟, 依据 SPI 数据传输时序, 接收到所述读 / 写标志、 SA、 Len ; 并依据 SPI 数据传输时序, 根据所述读 / 写标志, 向所述主器件发送首地址为SA的、 Len字 节的数据, 或从所述主器件接收 Len 字节的数据 存储到首地址为SA的本地存储空间中。 由于在一 帧数据内连续发送 Len 字节, 而不必如现有技术 将Len字节的。
3、数据分别放在Len帧数据中传送, 大 大提高了传输效率。 (51)Int.Cl. 权利要求书 2 页 说明书 7 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书7页 附图4页 (10)申请公布号 CN 103092806 A CN 103092806 A *CN103092806A* 1/2 页 2 1. 一种基于 SPI 数据传输时序的数据传输方法, 包括 : 主器件输出有效状态的 SPI 时钟, 并发送 1 字节的读 / 写标志、 2 字节的起始地址 SA, 以及 2 字节的读 / 写数据长度 Len ; 从器件根据所述主器件输出的 S。
4、PI 时钟, 依据 SPI 数据传输时序, 接收到所述读 / 写标 志、 SA、 Len ; 所述从器件依据SPI数据传输时序, 根据所述读/写标志, 向所述主器件发送首地址为 SA 的、 Len 字节的数据, 或从所述主器件接收 Len 字节的数据存储到首地址为 SA 的本地存 储空间中。 2. 如权利要求 1 所述的方法, 其中, 所述根据所述读 / 写标志, 向所述主器件发送首地 址为 SA 的、 Len 字节的数据, 或从所述主器件接收 Len 字节的数据存储到首地址为 SA 的本 地存储空间中具体包括 : 所述从器件若确定接收的读 / 写标志为读标志的值, 则在接收到读 / 写数据长。
5、度 Len 后, 依据 SPI 数据传输时序, 将本地存储的首地址为 SA 的、 Len 字节的数据向所述主器件发 送 ; 所述从器件若确定接收的读 / 写标志为写标志的值, 则在接收到读 / 写数据长度 Len 后, 依据 SPI 数据传输时序, 接收所述主器件发送的 Len 字节的数据存储到首地址为 SA 的 本地存储空间中。 3. 如权利要求 2 所述的方法, 其中, 所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据均通过同一数据线传输 ; 或者, 若所述读 / 写标志为读标志的值, 则所述 1 字节的读 。
6、/ 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过主入从出 MISO 数据线传输 ; 若 所述读/写标志为写标志的值, 则所述1字节的读/写标志、 2字节的起始地址SA、 2字节的 读 / 写数据长度 Len, 以及所述 Len 字节的数据通过主出从入 MOSI 数据线传输。 4. 一种基于 SPI 数据传输时序的数据传输系统, 其特征在于, 包括 : 主器件, 用于输出有效状态的SPI时钟, 并发送1字节的读/写标志、 2字节的起始地址 SA, 以及 2 字节的读 / 写数据长度 Len ; 从器件, 用于根据所述主器件输出的 。
7、SPI 时钟, 依据 SPI 数据传输时序, 接收到所述读 / 写标志、 SA、 Len ; 以及依据 SPI 数据传输时序, 根据所述读 / 写标志, 向所述主器件发送首 地址为 SA 的、 Len 字节的数据, 或从所述主器件接收 Len 字节的数据存储到首地址为 SA 的 本地存储空间中。 5. 如权利要求 4 所述的系统, 其中, 所述从器件具体包括 : 指令接收模块, 用于根据所述主器件输出的 SPI 时钟, 依据 SPI 数据传输时序, 接收到 所述读/写标志、 SA、 Len ; 以及若确定所述读/写标志为读标志的值, 则发送数据发送信号 ; 若确定所述读/写标志为写标志的值, 。
8、则发送数据接收信号 ; 并在接收所述读/写数据长度 Len 完毕后, 发送开始信号 ; 数据发送模块, 用于若接收到所述指令接收模块发送的数据发送信号, 则在接收到所 述开始信号后, 依据 SPI 数据传输时序, 将本地存储的首地址为 SA 的、 Len 字节的数据向所 述主器件发送 ; 数据接收模块, 用于若接收到所述指令接收模块发送的数据接收信号, 则在接收到所 权 利 要 求 书 CN 103092806 A 2 2/2 页 3 述开始信号后, 依据SPI数据传输时序, 接收所述主器件发送的Len字节的数据存储到首地 址为 SA 的本地存储空间中。 6. 如权利要求 5 所述的系统, 其。
9、中, 所述主器件与从器件之间连接有时钟线和一根数 据线 ; 以及 所述 SPI 时钟通过所述时钟线传输, 所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据均通过该数据线传输。 7. 如权利要求 5 所述的系统, 其中, 所述主器件与从器件之间连接有时钟线、 主入从出 MISO 数据线, 以及主出从入 MOSI 数据线 ; 以及 所述 SPI 时钟通过所述时钟线传输 ; 若所述读 / 写标志为读标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所。
10、述 Len 字节的数据通过所述 MISO 数据线传输 ; 若所述读 / 写标志为写标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过所述 MOSI 数据线传输。 8. 如权利要求 4-7 任一所述的系统, 其中, 由同一晶振作为所述主器件与从器件的参 考时钟 ; 所述主器件根据所述参考时钟输出所述 SPI 时钟 ; 所述从器件根据所述参考时钟生成 处理时钟, 并使用所述处理时钟进行数据的发送、 接收与处理。 9. 如权利要求 8 所述的系统, 其特征在于, 所述主器件为单片机, 所述从器件为逻辑器。
11、 件。 10. 如权利要求 9 所述的系统, 其中, 所述逻辑器件还用于通过 MDIO 接口与主机通信。 权 利 要 求 书 CN 103092806 A 3 1/7 页 4 基于 SPI 数据传输时序的数据传输方法和系统 技术领域 0001 本发明涉及通信技术, 尤其涉及一种基于 SPI 数据传输时序的数据传输方法和系 统。 背景技术 0002 SPI(Serial Peripheral Interface, 串行外围接口) 是 Motorola(摩托罗拉) 首 先在其 MC68HCXX 系列处理器上定义的。SPI 接口被广泛应用于 CPU 和外围低速器件之间, 进行同步串行数据传输。 SP。
12、I接口是以主从方式工作的, 这种模式通常有一个主器件和一个 或多个从器件, 其接口可以包括以下四种信号 : 0003 (1) MOSI 主出从入数据线, 即主器件数据输出、 从器件数据输入的数据线 ; 0004 (2) MISO 主入从出数据线, 即主器件数据输入、 从器件数据输出的数据线 ; 0005 (3) SCLK 时钟信号, 由主器件产生 ; 0006 (4) /SS 从器件使能信号 , 由主器件控制, 用于主器件与多个从器件通过 SPI 接 口总线通信时, 选择其中一个从器件有效。 0007 一帧 SPI 数据的格式如下表 1 所示 : 0008 表 1 0009 W/R flagA。
13、ddressW/R data 1 字节读 / 写标志 2 字节读 / 写地址 2 字节读 / 写数据 0010 目前, 现有的通用 SPI 帧通信过程为 : 主器件发送 1 字节的读 / 写标志, 然后发送 两字节的读/写地址 ; 从器件将根据读/写标志, 将2字节数据从该地址读出向主器件发送 或接收主器件随后发送的 2 字节数据写入该地址。 0011 对于 SPI 接口通信, 还可通过设置时钟极性 CPOL, 来设置读取或更换数据时的时 钟边沿极性。图 1a 和图 1b 示出了不同时钟极性下的 SPI 数据传输时序示意图 ; 其中, 若 CPOL 设置为 0, 则如图 1a 所示, 数据的发。
14、送方在时钟 SCLK 的下降沿更换数据, 数据的接收 方在数据的上升沿读取数据 ; 若 CPOL 设置为 1, 则如图 1b 所示, 数据的发送方在时钟 SCLK 的上升沿更换数据, 数据的接收方在数据的下降沿读取数据。 0012 然而, 本发明的发明人发现, 在实际应用中, 现有的基于 SPI 的通信方式的通信效 率不高, 具有提高通信效率的需求。 发明内容 0013 本发明的实施例提供了一种基于 SPI 数据传输时序的数据传输方法、 以及逻辑器 件和单片机, 用以提高通信效率。 0014 根据本发明的一个方面, 提供了一种基于 SPI 数据传输时序的数据传输方法, 包 括 : 说 明 书 。
15、CN 103092806 A 4 2/7 页 5 0015 主器件输出有效状态的 SPI 时钟, 并发送 1 字节的读 / 写标志、 2 字节的起始地址 SA, 以及 2 字节的读 / 写数据长度 Len ; 0016 从器件根据所述主器件输出的 SPI 时钟, 依据 SPI 数据传输时序, 接收到所述读 / 写标志、 SA、 Len ; 0017 所述从器件依据SPI数据传输时序, 根据所述读/写标志, 向所述主器件发送首地 址为 SA 的、 Len 字节的数据, 或从所述主器件接收 Len 字节的数据存储到首地址为 SA 的本 地存储空间中。 0018 其中, 所述根据所述读 / 写标志,。
16、 向所述主器件发送首地址为 SA 的、 Len 字节的数 据, 或从所述主器件接收 Len 字节的数据存储到首地址为 SA 的本地存储空间中具体包括 : 0019 所述从器件若确定接收的读 / 写标志为读标志的值, 则在接收到读 / 写数据长度 Len 后, 依据 SPI 数据传输时序, 将本地存储的首地址为 SA 的、 Len 字节的数据向所述主器 件发送 ; 0020 所述从器件若确定接收的读 / 写标志为写标志的值, 则在接收到读 / 写数据长度 Len 后, 依据 SPI 数据传输时序, 接收所述主器件发送的 Len 字节的数据存储到首地址为 SA 的本地存储空间中。 0021 其中,。
17、 所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据均通过同一数据线传输 ; 或者, 0022 若所述读 / 写标志为读标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过主入从出 MISO 数据线传 输 ; 若所述读 / 写标志为写标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过主出从入 MOSI 数据线传输。 0023。
18、 根据本发明的另一个方面, 还提供了一种基于 SPI 数据传输时序的数据传输系 统, 包括 : 0024 主器件, 用于输出有效状态的SPI时钟, 并发送1字节的读/写标志、 2字节的起始 地址 SA, 以及 2 字节的读 / 写数据长度 Len ; 0025 从器件, 用于根据所述主器件输出的 SPI 时钟, 依据 SPI 数据传输时序, 接收到所 述读 / 写标志、 SA、 Len ; 以及依据 SPI 数据传输时序, 根据所述读 / 写标志, 向所述主器件 发送首地址为 SA 的、 Len 字节的数据, 或从所述主器件接收 Len 字节的数据存储到首地址 为 SA 的本地存储空间中。 0。
19、026 其中, 所述从器件具体包括 : 0027 指令接收模块, 用于根据所述主器件输出的 SPI 时钟, 依据 SPI 数据传输时序, 接 收到所述读 / 写标志、 SA、 Len ; 以及若确定所述读 / 写标志为读标志的值, 则发送数据发送 信号 ; 若确定所述读 / 写标志为写标志的值, 则发送数据接收信号 ; 并在接收所述读 / 写数 据长度 Len 完毕后, 发送开始信号 ; 0028 数据发送模块, 用于若接收到所述指令接收模块发送的数据发送信号, 则在接收 到所述开始信号后, 依据 SPI 数据传输时序, 将本地存储的首地址为 SA 的、 Len 字节的数据 向所述主器件发送 。
20、; 0029 数据接收模块, 用于若接收到所述指令接收模块发送的数据接收信号, 则在接收 到所述开始信号后, 依据SPI数据传输时序, 接收所述主器件发送的Len字节的数据存储到 说 明 书 CN 103092806 A 5 3/7 页 6 首地址为 SA 的本地存储空间中。 0030 其中, 所述主器件与从器件之间连接有时钟线和一根数据线 ; 以及 0031 所述 SPI 时钟通过所述时钟线传输, 所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据均通过该数据线传输。 0032 或者, 所述主器件与从器件之间连接。
21、有时钟线、 主入从出 MISO 数据线, 以及主出 从入 MOSI 数据线 ; 以及 0033 所述 SPI 时钟通过所述时钟线传输 ; 0034 若所述读 / 写标志为读标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过所述 MISO 数据线传输 ; 0035 若所述读 / 写标志为写标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过所述 MOSI 数据线传输。 0036 较佳地, 由同一晶振作为所。
22、述主器件与从器件的参考时钟 ; 0037 所述主器件根据所述参考时钟输出所述 SPI 时钟 ; 所述从器件根据所述参考时钟 生成处理时钟, 并使用所述处理时钟进行数据的发送、 接收与处理。 0038 较佳地, 所述主器件为单片机, 所述从器件为逻辑器件。 0039 所述逻辑器件还用于通过 MDIO 接口与主机通信。 0040 本发明实施例提供的技术方案中, 由于对现有的 SPI 数据帧结构进行改进, 改进 后的 SPI 数据帧可以在一帧数据内连续发送 Len 字节, 而不必如现有技术将 Len 字节的数 据分别放在 Len 帧数据中传送, 大大提高了传输效率, 亦即提高了通信效率, 整体上提高。
23、了 数据传输的速度。 0041 而且, 本发明还为单工应用场合提供了一种单工模式的 SPI 通信方式, 可以节约 主、 从器件的硬件资源, 尤其是主、 从器件的管脚资源。 0042 进一步, 本发明中使用同一晶振为主、 从器件提供参考时钟, 既可以保证主器件中 的处理时钟与从器件中的处理时钟的相位一致, 便于同步 ; 又可以保证输出到从器件的参 考时钟的驱动能力足够, 防止数据丢失现象。 附图说明 0043 图 1a、 1b 为现有技术的不同时钟极性 CPOL 下的 SPI 数据传输时序示意图 ; 0044 图 2 为本发明实施例的主从器件通过 SPI 接口进行通信的示意图 ; 0045 图 。
24、3 为本发明实施例的主器件从从器件读取数据的方法流程图 ; 0046 图 4 为本发明实施例的主器件向从器件写入数据的方法流程图 ; 0047 图 5 为本发明实施例的通过逻辑器件实现单片机与主机之间通信的示意图 ; 0048 图 6 为本发明实施例的单工模式的 SPI 接口示意图 ; 0049 图 7 为本发明实施例的从器件中的内部结构框图。 具体实施方式 0050 为使本发明的目的、 技术方案及优点更加清楚明白, 以下参照附图并举出优选实 施例, 对本发明进一步详细说明。然而, 需要说明的是, 说明书中列出的许多细节仅仅是为 了使读者对本发明的一个或多个方面有一个透彻的理解, 即便没有这些。
25、特定的细节也可以 说 明 书 CN 103092806 A 6 4/7 页 7 实现本发明的这些方面。 0051 本申请使用的 “模块” 、“系统” 等术语旨在包括与计算机或芯片或可编程逻辑器件 相关的实体, 例如但不限于硬件、 固件、 软硬件组合、 软件或者执行中的软件。 0052 本发明的发明人对现有的基于 SPI 的通信方式进行分析 : 由于在一帧数据中只传 送 2 字节的数据 ; 如果后续还需要发送相邻地址的 2 字节数据, 就还需再发送下一帧数据, 在下一帧数据中仍然要包含1字节的读/写标志, 和两字节的读/写地址 ; 因此数据发送效 率低, 即通信效率低。由此, 本发明的发明人考虑。
26、到, 采用另一种帧结构的方式来传送 SPI 数据, 以提高通信效率。 0053 本发明实施例所提供的传送 SPI 数据的帧结构如下表 2 所示 : 0054 表 2 0055 W/R flagStart addressLengthW/R data 1 字节读 / 写标志2 字节起始地址2 字节读 / 写数据长度连续的读 / 写数据 0056 本发明提供的基于 SPI 的通信方式中, 仍然采用与现有技术的 SPI 通信方式相同 的 SPI 数据传输时序, 但是传输数据的帧格式则采用上述的表 2 所示的帧格式 : 在 MOSI、 或 MISO 数据线上传播的数据, 依次为 : 第 1 个字节为 1。
27、 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 之后为连续的读 / 写数据。其中, 2 字节的读 / 写数据长 度用于指示出之后的连续的读 / 写数据的字节数 ; 而 2 字节的起始地址则指示出连续的读 /写数据的存储地址中的首地址。 2字节的Len最大可以达到64M, 此即意味, 一帧数据中最 多可以连续传送 64M 字节的数据, 从而大大提高了传输效率。当然, Len 也可以是最小值 1。 0057 在如图2所示的基于SPI数据传输时序的数据传输系统中, 主器件与从器件之间, 基于SPI数据传输时序、 依据上述的帧格式进行SPI通信传输数据的方。
28、法为 : 从器件接收到 主器件发送的读 / 写标志、 SA、 Len 后, 根据所述读 / 写标志, 向所述主器件发送首地址为 SA 的、 Len 字节的数据, 或从所述主器件接收 Len 字节的数据存储到首地址为 SA 的本地存储 空间中。具体的方法流程, 如图 3、 4 所示。 0058 其中, 图3主要示出基于SPI数据传输时序的主器件从从器件读取数据的方法, 包 括如下步骤 : 0059 S301 : 主器件开始输出有效状态的 SPI 时钟, 并发送 1 字节的读 / 写标志。 0060 具体地, 主器件在SCLK时钟线上输出有效SPI时钟 ; 串行同步的SPI时钟的有效、 空闲状态可。
29、预先设置 : 若设置 CPOL=0, 则 SPI 时钟的空闲状态为低电平, 其由低电平跳变到 高电平后则输出有效状态的SPI时钟, 此时, SPI时钟由空闲状态转为有效状态 ; 若CPOL=1, 则SPI时钟的空闲状态为高电平, 其由高电平跳变到低电平后则输出有效状态的SPI时钟, 此时, SPI 时钟由空闲状态转为有效状态。 0061 主器件输出有效 SPI 时钟, 并依据 SPI 数据传输时序在 MISO 数据线上发送 1 字节 的读 / 写标志, 该字节的读 / 写标志的值具体为读标志的值。由于 SPI 数据传输时序已在 背景技术中介绍了, 此处不再赘述。 0062 S302 : 从器件。
30、接收到读 / 写标志后, 在确定该读 / 写标志的值为读标志的值后, 决 定此次操作为读操作。 说 明 书 CN 103092806 A 7 5/7 页 8 0063 具体地, 从器件根据主器件输出的SPI时钟, 依据SPI数据传输时序接收到主器件 发送的第 1 字节后, 确定该字节的值为读标志的值后, 决定此次操作为读操作。 0064 S303 : 主器件继续发送 2 字节的起始地址 SA, 以及 2 字节的读 / 写数据长度 Len。 0065 具体地, 主器件依据 SPI 数据传输时序在发送了 1 字节的读 / 写标志后, 继续发送 2 字节的起始地址 SA, 以及 2 字节的读 / 写。
31、数据长度 Len。 0066 S304 : 从器件接收主器件发送的 2 字节的起始地址 SA, 以及 2 字节的读 / 写数据 长度 Len。 0067 具体地, 从器件依据 SPI 数据传输时序接收到主器件后续发送的 2 字节的起始地 址 SA, 以及 2 字节的读 / 写数据长度 Len。 0068 从器件根据之前接收到的读标志的值, 将本地存储的首地址为 SA、 数据字节长度 为 Len 的数据读取到缓存中准备进行发送。 0069 S305 : 从器件将本地存储的首地址为 SA、 数据字节长度为 Len 的数据依次向主器 件发送。 0070 具体地, 从器件在接收到 2 字节的读 / 写。
32、数据长度 Len 的最后一个比特数据后, 依 SPI 数据传输时序, 在下个 SPI 时钟到来后, 将缓存中准备的首地址为 SA、 数据字节长度为 Len 的数据依次向主器件发送。从器件发送 Len 字节的数据的方法与现有技术中从器件发 送 2 字节的数据的方法相同, 此处不再赘述。 0071 S306 : 主器件接收了 Len 字节的数据后, 停止输出有效的 SPI 时钟。 0072 具体地, 主器件依 SPI 数据传输时序, 接收了从器件发送的 Len 字节的数据后, 将 SPI 时钟的状态设置为空闲状态, 停止输出有效的 SPI 时钟, 完成此帧数据的传输。 0073 图 4 主要示出基。
33、于 SPI 数据传输时序的主器件向从器件写入数据的方法, 包括如 下步骤 : 0074 S401 : 主器件开始输出有效状态的 SPI 时钟, 并发送 1 字节的读 / 写标志。 0075 具体地, 主器件输出有效 SPI 时钟, 并依据 SPI 数据传输时序在 MOSI 数据线上发 送 1 字节的读 / 写标志, 该字节的读 / 写标志的值具体为写标志的值。 0076 S402 : 从器件接收到读 / 写标志后, 在确定该读 / 写标志的值为写标志的值后, 决 定此次操作为写操作。 0077 S403 : 主器件继续发送 2 字节的起始地址 SA, 以及 2 字节的读 / 写数据长度 Len。
34、。 0078 S404 : 从器件接收主器件发送的 2 字节的起始地址 SA, 以及 2 字节的读 / 写数据 长度 Len。 0079 S405 : 主器件将数据字节长度为 Len 的数据依次向从器件发送。 0080 具体地, 主器件在发送了 2 字节的读 / 写数据长度 Len 后, 依 SPI 数据传输时序, 继续在 MOSI 数据线上发送 Len 个字节的数据。 0081 S406 : 从器件接收到字节长度为 Len 的数据后, 将其存储到本地首地址为 SA 的存 储空间中。 0082 具体地, 从器件根据接收的写标志, 在接收到 2 字节的读 / 写数据长度 Len 后, 开 始接收。
35、Len个字节的数据 ; 在接收完毕Len个字节的数据, 从器件将接收的数据存储到本地 首地址为 SA、 长度为 Len 的存储空间中。 0083 在单片机与主机进行通信的场合, 由于主机常用的串行接口为 USB 或 MDIO 接口, 说 明 书 CN 103092806 A 8 6/7 页 9 而单片机常用的串行接口为 SPI 接口 ; 因此, 通常在单片机与主机之间通过逻辑器件, 比如 FPGA (Field Programmable Gata Array, 现场可编程门阵列) 、 或 PAL (Programmable Array Logic, 可编程阵列逻辑) , 进行接口的转换。 00。
36、84 例如, 如图5所示, 主机与逻辑器件之间通过MDIO接口总线通信, 逻辑器件与单片 机之间通过 SPI 接口总线通信, 从而单片机与主机之间通过逻辑器件实现通信。一般而言, 单片机作为上述的主器件, 逻辑器件作为上述的从器件 ; 若逻辑器件与单片机之间的 SPI 接口采用本发明的 SPI 通信方式, 则可以大大提高每帧传输数据的效率, 从而整体提高传 输速度。 0085 进一步, 由于 MDIO 接口为单工模式的接口, 即同一时刻, 主机与逻辑器件之间的 通信只能是单方向的数据传输 ; 因 MDIO 接口的限制, 在同一时刻, 单片机经逻辑器件与主 机之间的通信也只能是单方向的数据传输 。
37、; 基于此分析, 本发明的发明人考虑到将现有的 SPI 接口的双工模式改为单工模式, 既可以满足系统的通信需求, 又可以节约系统的硬件资 源, 尤其是单片机和逻辑器件的管脚的硬件资源。具体如图 6 所示, 将图 5 的 SPI 接口中的 MOSI 线和 MISO 线合并为图 6 中的 SPI 数据线。而上述步骤 S301-306 中在 MOSI 数据线上 发送的数据可以是在图 6 中所示的 SPI 数据线上发送, 上述步骤 S4301-406 中在 MISO 数据 线上发送的数据也可以是在图 6 中所示的 SPI 数据线上发送。 0086 换言之, 单工模式下 SPI 接口如图 6 所示, 主。
38、器件 (单片机) 与从器件 (逻辑器件) 之 间连接有时钟线 SCLK 和一根 SPI 数据线 ; SPI 时钟通过所述时钟线 SCLK 传输 ; 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据均 通过同一数据线即SPI数据线传输 ; 这样, 单片机和逻辑器件都减少了一个用于SPI接口传 输数据的硬件管脚, 节约了单片机和逻辑器件的硬件资源。 0087 双工模式下SPI接口如图3所示, 主器件与从器件之间连接有时钟线SCLK、 主入从 出 MISO 数据线, 以及主出从入 MOSI 数据线 ; SPI 时钟通过所述时。
39、钟线 SCLK 传输 ; 若主器件 发送的读 / 写标志为读标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字 节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过主入从出 MISO 数据线传输 ; 若主 器件发送的读 / 写标志为写标志的值, 则所述 1 字节的读 / 写标志、 2 字节的起始地址 SA、 2 字节的读 / 写数据长度 Len, 以及所述 Len 字节的数据通过主出从入 MOSI 数据线传输。 0088 为了便于同步, 主、 从器件通常使用同源时钟 ; 在现有技术中的做法是, 晶振输出 参考时钟到主器件, 主器件锁相参考时钟后, 。
40、输出本器件的系统处理时钟和从器件的参考 时钟 ; 从器件对主器件输出的参考时钟锁相后, 输出本器件的处理时钟。主器件根据本器 件的系统处理时钟生成 SPI 时钟, 从器件根据本器件的处理时钟接收、 发送、 处理数据。然 而, 本发明的发明人发现, 该方法存在缺陷, 主要是主器件输出到从器件的参考时钟的驱动 能力不够, 则有可能会产生数据丢失现象。 0089 因此, 本发明中采用驱动能力更强的晶振同时作为所述主器件与从器件的参考时 钟。 主器件根据所述参考时钟输出本器件的处理时钟, 根据本器件的处理时钟生成所述SPI 时钟 ; 所述从器件根据所述参考时钟生成处理时钟, 并使用所述处理时钟进行数据。
41、的发送、 接收与处理。 这样, 既可以保证主器件中的处理时钟与从器件中的处理时钟的相位一致, 便 于同步 ; 又可以保证输出到从器件的参考时钟的驱动能力足够, 防止数据丢失现象。 0090 上述的从器件中的一种具体的内部结构, 如图 7 所示, 包括 : 指令接收模块 701、 数 说 明 书 CN 103092806 A 9 7/7 页 10 据发送模块 702、 数据接收模块 703。 0091 指令接收模块 701 用于根据所述主器件输出的 SPI 时钟, 依据 SPI 数据传输时序, 接收到所述读 / 写标志、 SA、 Len ; 以及若确定所述读 / 写标志为读标志的值, 则向数据发。
42、送 模块 702 发送数据发送信号 ; 若确定所述读 / 写标志为写标志的值, 则向数据接收模块 703 发送数据接收信号 ; 并在接收所述读 / 写数据长度 Len 完毕后, 发送开始信号 ; 该开始信号 既可以发送给数据发送模块 702, 也可以发送给数据接收模块 703, 视情况而定 ; 一般而言, 在确定所述读 / 写标志为读标志的值的情况下, 指令接收模块 701 将开始信号发送给数据 发送模块 702 ; 在确定所述读 / 写标志为写标志的值的情况下, 指令接收模块 701 将开始信 号发送给数据接收模块 703。 0092 数据发送模块 702 用于若接收到指令接收模块 701 。
43、发送的数据发送信号, 则在接 收到所述开始信号后, 依据 SPI 数据传输时序, 将本地存储的首地址为 SA 的、 Len 字节的数 据向所述主器件发送 ; 0093 数据接收模块 703 用于若接收到指令接收模块 701 发送的数据接收信号, 则在接 收到所述开始信号后, 依据SPI数据传输时序, 接收所述主器件发送的Len字节的数据存储 到首地址为 SA 的本地存储空间中。 0094 本发明实施例提供的技术方案中, 由于对现有的 SPI 数据帧结构进行改进, 改进 后的 SPI 数据帧可以在一帧数据内连续发送 Len 字节, 而不必如现有技术将 Len 字节的数 据分别放在 Len 帧数据。
44、中传送, 大大提高了传输效率, 亦即提高了通信效率, 整体上提高了 数据传输的速度。 0095 而且, 本发明还为单工应用场合提供了一种单工模式的 SPI 通信方式, 可以节约 主、 从器件的硬件资源, 尤其是主、 从器件的管脚资源。 0096 进一步, 本发明中使用同一晶振为主、 从器件提供参考时钟, 既可以保证主器件中 的处理时钟与从器件中的处理时钟的相位一致, 便于同步 ; 又可以保证输出到从器件的参 考时钟的驱动能力足够, 防止数据丢失现象。 0097 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关的硬件来完成, 该程序可以存储于一计算机可读取。
45、存储介质中, 如 : ROM/RAM、 磁碟、 光盘等。 0098 以上所述仅是本发明的优选实施方式, 应当指出, 对于本技术领域的普通技术人 员来说, 在不脱离本发明原理的前提下, 还可以作出若干改进和润饰, 这些改进和润饰也应 视为本发明的保护范围。 说 明 书 CN 103092806 A 10 1/4 页 11 图 1a 图 1b 图 2 说 明 书 附 图 CN 103092806 A 11 2/4 页 12 图 3 说 明 书 附 图 CN 103092806 A 12 3/4 页 13 图 4 图 5 说 明 书 附 图 CN 103092806 A 13 4/4 页 14 图 6 图 7 说 明 书 附 图 CN 103092806 A 14 。