一种串行外围接口的高速半硬件实现方法技术

技术编号:11002264 阅读:82 留言:0更新日期:2015-02-05 00:10
一种串行外围接口的高速半硬件实现方法,CPU建立用于将待发送的SPI数据转换成GPIO端口驱动数据的预解析数组表,将待发送的SPI数据拆分成与预解析数组表中的数据具有同样位宽的数据组合,通过查询预解析数组表,将待发送的SPI数据组合解析成驱动GPIO端口的驱动数据,将解析后的GPIO端口驱动数据连续地存储,以便于DMA模块搬运,DMA模块将连续存储的GPIO端口驱动数据搬运至GPIO模块端口,将数据写入GPIO数据寄存器,驱动GPIO模块的时钟线和数据线同时翻转。本发明专利技术大大降低了CPU工作量,提高了系统工作效率,充分发挥了DMA的数据快速搬运优势,使得SPI通信速率也大大提高。

【技术实现步骤摘要】
-种串行外围接口的高速半硬件实现方法
本专利技术涉及,尤其涉及一种利用DMA(直 接访问存储器)与GPIO (通用输入输出)结合来实现串行外围接口功能的半硬件方法,适用 于没有SPI (串行外围接口)硬件模块又需要使用SPI进行高速通信的应用场景。
技术介绍
SPI接口的全称是Serial化ri地eral Interface,意为串行外围接口,是一种 高速、全双工、同步的通信总线,并且连线简单,节省电路空间,近年来得到了非常广泛的应 用。 SPI通信通常采用硬件方式实现,硬件方式实现优点是速度快,不需要CPU全程参 与,系统效率高。但是在没有SPI硬件的应用中,只能用软件模拟的方式实现SPI通信。 目前SPI通信中,有很大一部分应用是主机采用软件的方式(即通过GPI0(通用输 入输出)端口产生高低电平)模拟SPI通信协议与从设备进行通信。尤其是一些比较低端 的通用单片机控制器芯片MCU中常常不集成SPI模块,主机用软件方式模拟SPI端口的应 用方式就更为普遍。 图1是目前普遍采用的软件方式SPI方法的示意图,目前普遍采用的软件方式SPI 通信是首先将待发送SPI通信数据通过CPU逐位比较的方式转换成串行数据(0/1),同时还 要驱动其他GPIO端口按SPI时钟翻转产生CLK信号,然后根据串行数据在GPIO端口产生 SPI通信需要的时钟驱动和数据驱动(GPIO端口翻转),该整个过程需要在CPU控制下完成, 占用了大量CPU资源。 该种方法方便可行,省去了对控制器集成SPI模块的要求也降低了硬件成本,缩 短了开发周期。但是由于通过软件方式模拟SPI通信在GPIO端口上产生翻转需要花费大 量的CPU时间,CPU需要全程参与对每一个SPI数据的逐位解析和驱动,通信速度和系统效 率都大大降低,系统最快通信速率受限于系统工作频率,通信速度很难提高,成为该种应用 方式的瓶颈。
技术实现思路
本专利技术提供,利用DM模块和GPIO模块 实现通信过程,而CPU只要在通信之前完成对待发送数据的解析即可,该种半硬件实现方 法大大降低了 CPU工作量,提高了系统工作效率,充分发挥了 DMA的数据快速搬运优势,使 得SPI通信速率也大大提高。 为了达到上述目的,本专利技术提供,利用 DMA模块和GPIO模块来实现串行外围接口的数据通信功能,CPU仅需要在通信之前将待发 送的SPI数据解析成GPIO端口驱动数据,该高速半硬件实现方法包含W下步骤: CPU建立用于将待发送的SPI数据转换成GPIO端口驱动数据的预解析数组表,通过查 询预解析数组表,将待发送的SPI数据解析成驱动GPIO端口的驱动数据,解析后的GPIO端 口驱动数据需连续地存储,W便于DMA模块搬运; DMA模块将连续存储的GPIO端口驱动数据搬运至GPIO模块端口,驱动GPIO模块的时 钟线和数据线同时翻转。 所述的预解析数组表是用于将待发送的SPI数据变换成GPIO端口驱动数据的一 个映射方法。 先将待发送的SPI数据拆分成与预解析数组表中的数据具有同样位宽的数据组 合后,再通过查询预解析数组表,将待发送的SPI数据组合解析成驱动GPIO端口的驱动数 据。 在DMA模块将连续存储的GPIO端口驱动数据搬运至GPIO模块端口的数据搬运过 程中,完全由DMA模块完成数据搬运,即实现对GPIO端口的驱动,由DMA模块和GPIO模块完 成SPI模拟通信过程,不需要CPU的参与,提高了系统的运行效率和模拟SPI的通信速度。 本专利技术与
技术介绍
相比,具有W下优点: 1、传统软件SPI传输需要将待传数据通过CPU逐位比较的方式转换成串行数据(0/1), 而本专利技术创建的预解析数组表将该个逐位解析的过程通过建立查表的方式进行代替,一次 查表代替CPU的比较时钟和比较数据线两个动作,创建速度快。 2、预解析数组表创建的方式考虑了 DMA传输的特殊要求,使得通过DMA的一次数 据搬运动作可W同时完成对数据引脚和时钟引脚的驱动,不占用CPU资源,驱动速度快。 3、采用了数据拆分的方法减小存储的解析数组的大小,减少了系统资源占用。 4、CPU只要在通信之前完成对待发送数据的解析即可,通信过程由DMA和GPIO硬 件实现,所W称为是半硬件的实现方式,相比纯软件的SPI实现方式,本专利技术提出的半硬件 方式大大降低了 CPU工作量,提高了系统工作效率,充分发挥了 DMA的数据快速搬运优势, 使得SPI通信速率也大大提高。 【附图说明】 图1是
技术介绍
中软件方式SPI方法的示意图。 图2是通用单片机MCU的电路模块框图。 [001引图3是本专利技术的流程图。 图4是本专利技术的功能示意图。 图5是对本专利技术进行验证的波形图。 【具体实施方式】 W下根据图2?图5,具体说明本专利技术的较佳实施例。 [002引如图2所示,是一个通用单片机MCU的电路模块框图,该MCU包含CPUlO 1,W及分 别电性连接CPUlOl的直接访问存储器(DMA) 102、通用输入输出接口(GPIO) 103、串行外围 接口(SPI) 104、静态随机存储器(SRAM) 105、只读存储器(ROM) 106、闪存(Flash) 107、计时 器(TIMER) 108和看口狗电路(Watchdog) 109和通用异步收发器(UART) 110。在很多应用 中,除了使用单片机MCU自带的SPI接口模块,也会通过GPIO模拟SPI接口来实现某些功 能。 Direct Memcxry Access (直接访问存储器DMA)是一种高速的数据传输操作,允许 在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预,整个数据传输 操作在直接访问存储器DM的控制下进行。 如图3所示,本专利技术提供,包含W下步 骤: 步骤1、对系统进行初始化配置并设定SPI通讯协议。 所述的初始化配置包含;配置堆载、配置时钟频率(如48MHz)、中断设置,及配置 外设接口 GPIO和DMA。 所述的设定SPI通讯协议包含;SPI协议中可W规定在系统时钟CLK的上升沿或 者下降沿读取SPI数据线MOSI线上的数据,也可W选择发送的数据是LSB (低位)在先还 是MSB (高位)在先。 本实施例中,W SPI模拟为例,SPI接口有4个信号;MOSI (主出从入),MISO (主 入从出),CLK (SPI时钟),SS (从设备选择),本实施例中设置在系统时钟CLK的上升沿读取 MOSI线上的数据,高位在先。 步骤2、CPU建立用于将待发送的SPI数据转换成GPIO端口驱动数据的预解析数 组表,该预解析数组表同时包含时钟线和数据线的驱动信息。 所述的预解析数组表是专口用于将待发送的SPI数据变换成GPIO端口驱动数据 的一个映射方法,是在DMA模块搬运待发送数据之前对待发送数据进行预处理的一个关键 步骤。 Sbit位宽数据数值范围为[OxOO-Oxff],为了减小预处理数组大小,只对4bit位 宽数据[OxO-Oxf]区间建立预解析数组表,一个8位宽数据可通过拆分成两个4位宽数据, 然后查预解析数组表而得。 G本文档来自技高网
...

【技术保护点】
一种串行外围接口的高速半硬件实现方法,其特征在于,利用DMA模块和GPIO模块来实现串行外围接口的数据通信功能,CPU仅需要在通信之前将待发送的SPI数据解析成GPIO端口驱动数据,该高速半硬件实现方法包含以下步骤:CPU建立用于将待发送的SPI数据转换成GPIO端口驱动数据的预解析数组表,通过查询预解析数组表,将待发送的SPI数据解析成驱动GPIO端口的驱动数据,解析后的GPIO端口驱动数据需连续地存储,以便于DMA模块搬运;DMA模块将连续存储的GPIO端口驱动数据搬运至GPIO模块端口,驱动GPIO模块的时钟线和数据线同时翻转。

【技术特征摘要】
1. 一种串行外围接口的高速半硬件实现方法,其特征在于,利用DMA模块和GPIO模块 来实现串行外围接口的数据通信功能,CPU仅需要在通信之前将待发送的SPI数据解析成 GPI0端口驱动数据,该高速半硬件实现方法包含以下步骤: (PU建立用于将待发送的SPI数据转换成GPI0端口驱动数据的预解析数组表,通过查 询预解析数组表,将待发送的SPI数据解析成驱动GPI0端口的驱动数据,解析后的GPI0端 口驱动数据需连续地存储,以便于DMA模块搬运; DMA模块将连续存储的GPI0端口驱动数据搬运至GPI0模块端口,驱动GPI0模块的时 钟线和数据线同时翻转。2. 如权利要求1所述的串行外围接口的高速半硬件实现方法,其特征在于,所述的预...

【专利技术属性】
技术研发人员:周玉洁陈玲
申请(专利权)人:上海爱信诺航芯电子科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1