0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

可配置GPIO模拟SPI总线的设计和实现过程分析

牵手一起梦 来源:电子技术 作者:邓彬伟 2020-10-04 14:10 次阅读

嵌入式系统处理器中有相当一部分处理器不带SPI接口,但基丁SPI接口的设备非常丰富,此外,SPI设备的不同以及处理器对GPIO口位寻址是否支持各处理器各有不同,因而不同处理器中软件模拟GPIO也各不相同。若能提供一种通用可配置可移植的GPIO模拟SPI总线的驱动则能很方便快捷的访问SPI设备,从而提高整个嵌入式系统的开发效率。本文针对GPIO口位寻址与否给出方面,给出了一种可配置GPIO模拟SPI总线的方法并详细介绍了其设计与实现过程,且具有代码小可移植性强使用方便等特点。

1 GPIO规范

SPI是一个全双工的串行接口。它设计成可以在一个给定总线上处理多个互联的主机和从机。在一定数据传输过程中,接口上只能有一个丰机和一个从机能够通信。在一次数据传输中,主机总是向从机发送一个字节数据,而从机也总是向主要发送一个字节数据。可以使MCU与各种外围设备以串行方式进行通信以交换信息。由于SPI总线一共只需3~4位数据线和控制线即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8~16位地址线、2~3位控制线,冈此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。在基于SPI总线接口构成的通信网络中,通信可由主节点发起,也可由从节点发起。当主节点发起通信时,它可主动对从节点进行数据的读写操作。工作过程叙述如下:首先选中要与之通信的从节点(通常片选端为低有效),而后送出时钟信号,读取数据信息的操作将在时钟的上升沿(或下降沿)进行。每送出八个时钟脉冲,从节点产生一个中断信号,该中断信号通知上节点一个字节已完整接收,可发送下一个字节的数据。SPI接口网络主从点需完成给出片选信号及时钟信号,它可主动的与各从节点进行信息的交流;而在从节点主动要求服务的情况下,它却是一种半主动的形式。由SPI接口技术构成的网络接口信号线(CLK、MOSI、MISO、/SS和INT)如果辅之以相应完备的通信协议,其服务功能必然会增强,相比于485等主从式分布网络而言,其通信速率也应有较人的提高。

2 GPIO模拟SPl

2.1 SPI硬件结构

SPI接口在内部硬件实际上足两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后,SPI内部硬件结构如图1所示。

可配置GPIO模拟SPI总线的设计和实现过程分析

2.2 SPI时序

在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器,SPI时序如图2所示。

2.3 SPI写过程模拟

采用掩码方式实现位控制。

3 可配置GPIO设计与实现

GPIO端口可分为支持位寻址和不支持位寻址,需由程序移植人员根据处理器及编译器情况定义GPIO对应的SPI接口,相关文件在SPIHARD.H中。

3.1 GPIO配置

3.2 实现配置的可移植部分

与GPIO口寻址方式无关性代码的实现。

以上实现在EPSON S1C33L11、AT89C52、SPCE061A及PHILIPS ARM LPC2106上都得到验证。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19076

    浏览量

    228679
  • 接口
    +关注

    关注

    33

    文章

    8422

    浏览量

    150663
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1686

    浏览量

    91129
收藏 人收藏

    评论

    相关推荐

    基于GPIO模拟SPI接口驱动设计与实现

    SPI总线是我们常用的串行设备接口,一般情况下我们都会适应硬件SPI接口,但有些时候当硬件端口不足时,我们也希望可以使用软件来模拟SPI硬件
    发表于 12-07 16:21 6136次阅读
    基于<b class='flag-5'>GPIO</b><b class='flag-5'>模拟</b>的<b class='flag-5'>SPI</b>接口驱动设计与<b class='flag-5'>实现</b>

    GPIO模拟I2C总线的驱动设计与实现

    I2C总线简单方便,是我们经常使用的一种总线。但有时候我们的MCU没有足够多的I2C控制器来实现我们的应用,所幸我可以使用普通的GPIO引脚来模拟
    发表于 12-14 14:19 5275次阅读
    <b class='flag-5'>GPIO</b><b class='flag-5'>模拟</b>I2C<b class='flag-5'>总线</b>的驱动设计与<b class='flag-5'>实现</b>

    SPI通信模式的配置过程分析

    SPI通信分析许久不更,想你们了。SPI 模式的配置SPI通信配置STM官方的芯片手册中对于
    发表于 02-17 07:57

    SPI总线实现DSP和MCU之间的高速通信

    简述了SPI总线协议工作时序和配置要求,通过一个成功的实例详细介绍了使用SPI总线实现DSP与M
    发表于 11-27 15:10 58次下载

    基于Avalon总线可配置LCD控制器IP核的设计

    基于Avalon总线可配置LCD 控制器IP核的设计 本文讨论了基于Avalon 总线流传输的配置LCD 显示控制器IP 核的设计,根据自顶向下的设计思想,将IP 核进行层次功能
    发表于 02-09 09:34 27次下载

    一种高速可配置实时总线的开发及其应用

    一种高速可配置实时总线的开发及其应用:为满足工业生产中对现场总线柔性可重构以及高速实时传输要求,讨论了一种可在线配置高速实时总线的设计与
    发表于 03-18 15:56 20次下载

    兼容I2C总线可配置模拟输出的PAC192

    视频简介:本视频为大家介绍Microchip的上桥臂电流传感器PAC1921,它具有兼容I2C的总线可配置模拟输出。
    的头像 发表于 03-26 06:17 4272次阅读

    STM32F0xx_ GPIO配置详细过程

    STM32F0xx_GPIO配置详细过程
    的头像 发表于 04-08 09:31 4525次阅读
    STM32F0xx_ <b class='flag-5'>GPIO</b><b class='flag-5'>配置</b>详细<b class='flag-5'>过程</b>

    STM32的SPI接口、cubeMX软件配置SPI接口和分析SPI相关代码

    本文主要介绍STM32的SPI接口、cubeMX软件配置SPI接口和分析SPI相关代码。 STM32之S
    的头像 发表于 09-24 14:09 1.6w次阅读
    STM32的<b class='flag-5'>SPI</b>接口、cubeMX软件<b class='flag-5'>配置</b><b class='flag-5'>SPI</b>接口和<b class='flag-5'>分析</b><b class='flag-5'>SPI</b>相关代码

    UG-753:使用片上基准电压源和SPI接口评估8通道、12位、可配置的ADC/DAC/GPIO AD5592R

    UG-753:使用片上基准电压源和SPI接口评估8通道、12位、可配置的ADC/DAC/GPIO AD5592R
    发表于 05-24 13:28 6次下载
    UG-753:使用片上基准电压源和<b class='flag-5'>SPI</b>接口评估8通道、12位、<b class='flag-5'>可配置</b>的ADC/DAC/<b class='flag-5'>GPIO</b> AD5592R

    stm32使用gpio模拟spi

    本文介绍如何使用STM32标准外设库的GPIO端口模拟SPI,本例程使用PA5、PA6和PA7模拟一路SPI
    发表于 11-23 18:21 64次下载
    stm32使用<b class='flag-5'>gpio</b><b class='flag-5'>模拟</b><b class='flag-5'>spi</b>

    STM32 SPI配置及深入解析

    SPI分析平时会使用硬件SPI,但是只用于应用没有具体深入了解SPI的执行流程,此处我采用抓取波形的方式对SPI进行了一下深入了解。STM3
    发表于 12-22 19:16 4次下载
    STM32 <b class='flag-5'>SPI</b><b class='flag-5'>配置</b>及深入解析

    STM32F103+TM1638 SPI驱动,非GPIO模拟SPI

    STM32F103+TM1638 SPI驱动,非GPIO模拟SPI由于最近的项目需要用到数码管显示。本想……废话少说,由于种种原因(偷懒)选用了一片TM1638。现成的开发板,貌似好多
    发表于 12-22 19:22 13次下载
    STM32F103+TM1638 <b class='flag-5'>SPI</b>驱动,非<b class='flag-5'>GPIO</b><b class='flag-5'>模拟</b><b class='flag-5'>SPI</b>

    GPIO可配置为几种模式 请简述GPIO的工作模式

    GPIO可配置为三种模式:Output模式、Input模式和Analog模式
    发表于 07-24 11:27 5983次阅读
    <b class='flag-5'>GPIO</b><b class='flag-5'>可配置</b>为几种模式 请简述<b class='flag-5'>GPIO</b>的工作模式

    软件可配置模拟 I/O 的设计理念

    作者: Kenton Williston 曾几何时,模拟 I/O 就是最专业、功能最固定的硬件。例如,电流驱动器和电压传感器是完全不同的零件,试图颠倒其角色可谓是荒谬至极。 软件可配置模拟 I/O
    的头像 发表于 05-05 11:10 704次阅读
    软件<b class='flag-5'>可配置</b><b class='flag-5'>模拟</b> I/O 的设计理念