嵌入式系统中可配置式GPIO模拟SPI总线方法

发布者:吉州古玩斋最新更新时间:2012-03-20 来源: 电子产品世界关键字:spi 手机看文章 扫描二维码
随时随地手机看文章

    在嵌入式系统处理器中有相当一部分处理器不带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所示。

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上都得到验证。

关键字:spi 引用地址:嵌入式系统中可配置式GPIO模拟SPI总线方法

上一篇:ARM7在嵌入式应用中启动程序技术难点分析
下一篇:全闭环脉冲同步高速总线片材机控制方案

推荐阅读最新更新时间:2024-03-30 21:52

STM32用SPI方式控制OLED模块
一、OLED 1. OLED模块的外观 2. OLED模块的电路图 3. OLED模块参数 项目 说明 接口特性 3.3V(串电阻后,可与 5V 系统连接) 通信接口 4 线 SPI 屏幕分辨率 128*64 屏幕尺寸 0.96 寸 工作温度 -40℃~70℃ 颜色 纯蓝色、黄蓝双色 模块尺寸| 27mm*26mm 二、GPIO模拟SPI 1. 硬件连接 通过引脚和模块电路图可以分析出SPI的电路连接 OLED STM32 GND ---------- GND VCC ---------- 3.3V D0 ---------- PA4(CLK) D1
[单片机]
S3C6410 SPI 裸机驱动
刚刚写的SPI驱动,想移植到LINUX上面用来读写SD卡 只测试了发送,没有测试接收. spi.c /************************************************************************************************************* * 文件名: spi.c * 功能: S3C6410 SPI底层驱动函数 * 作者: 陈鹏 * 创建时间: 2012年9月8日20:35 * 最后修改时间:2012年9月8日 * 详细: SPI始化,发送,接收,配置等 * 使用的是手动控制片选,因为在实际
[单片机]
S3C6410 <font color='red'>SPI</font> 裸机驱动
Loto实践干货(6)用示波器+逻辑分析仪进行SPI解码
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI以主从方式工作模式被广泛应用于电路系统中,我结合自己的项目情况对SPI协议进行解析,并通过LOTO虚拟示波器采集到的数据波形并进行对比分析,方便大家的理解。 SPI通信协议一般只需要四根线将主控芯片与从芯片连接起来,其中四根线分别为: (1)SDO – 主设备数据输出,从设备数据输入 (2)SDI – 主设备数据输入,从设备数据输出 (3)SCLK – 时钟信号,由主设备产生 (4)CS – 从设备使能信号,由主设备控制 其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位)
[测试测量]
Loto实践干货(6)用示波器+逻辑分析仪进行<font color='red'>SPI</font>解码
STM32F105VC SPI3的重映射使用
SPI3的重映射使用调试 芯片:STM32F105VC KEIL库:3.5 2017/08/26: 使用SPI3操作FLASH,但是用示波器查看无SCK输出,有MOSI输出,SCK一直为低。 重映射函数如下,未发现问题: //使能被重新映射到的I/O端口时钟 RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能被重新映射的外设时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); //使能AFIO功能的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
[单片机]
PIC32 SPI简介(主/从模式)
SPI串行同步接口(有时钟脉冲) 串行外设接口(Serial Peripheral Interface,SPI)模块是用于同外部外设和其他单片机器件进行通信的同步串行接口。这些外设可以是串行EEPROM、移位寄存器、显示驱动器和模数转换器 (ADC)或音频编解码器。 SPIx 串行接口由以下四个引脚组成:(可由引脚的映射确定四个引脚) SDIx:串行数据输入 SDOx:串行数据输出 SCKx:移位时钟输入或输出 SSx:低动态功耗从选择或帧同步I/O 脉冲 主模式下SPI 模块的工作原理如下所述: 一句话概括:数据由用户写入SPIxbuf然后装入SPIXTXB发送缓冲区移入移位寄存器SPIxSR,仅当存在待发送数据时
[单片机]
PIC32 <font color='red'>SPI</font>简介(主/从模式)
MSP430F5438A单片机基于SPI的FatFs移植笔记(一)
怎么说呢……太费劲了,前面的博客还烂尾了,主要是觉得自己在调试的过程当中思维太混乱。虽然说自己挖的坑,含着泪也要填上,这几个就先不填了吧我重新开个坑把调通的说清楚。 不管移植什么程序,最重要的就是, 不要自以为是 一定要先查资料,花一周查资料,查到查不到为止,否则你编了一半的程序再参考别人的,直接后果是你下不了决心推翻重来 1. FatFs移植要点: 相信能看到这个博客的都知道FatFs是什么了,目前应该是0.11版本,我就不多废话了,一个开源的文件系统,不全面的说,作用就是让你编程序操作写SD卡的内容能够被PC机读出来(有不对的话懂的大神请指正) 它的好处就是只要写底层的几个硬件驱动函数就OK了,上层的函数都已经写好了,
[单片机]
MSP430F5438A单片机基于<font color='red'>SPI</font>的FatFs移植笔记(一)
TI技术分析:数字接口系列文章之SPI 总线
      串行外设接口 (SPI) 总线是一种运行于全双工模式下的同步串行数据链路。用于在单个主节点和一个或多个从节点之间交换数据。SPI总线实施简单,仅使用四条数据信号线和控制信号线(请参见图 1)。       尽管表1中的引脚名称取自Motorola公司的SPI标准,但特殊集成电路的SPI端口名称通常与图1中所标示的名称有所不同。 图1 基本的SPI总线 表1 SPI引脚名称分配       SPI数据速率通常介于1到70MHz 之间,字节长度范围从8位和12位到这些数值的倍数位。       数据传输通常会包含一次数据交换。当主节点向从节点发送数据时,从节点也会向主节点发送数据。为此,主节
[电源管理]
TI技术分析:数字接口系列文章之<font color='red'>SPI</font> 总线
从零开始一起学stm32(十二)---SPI协议
SPI通信 -- W25Q64 -- flash芯片的使用 1、通信协议 2、SPI通信 3、STM32中SPI控制器的使用 4、W25Q64的操作过程以及软件编程 1.通信协议: 协议:两个相互通信的设备之间,进行数据传输的一种规定! 1.串口通信-- 物理层 所接管脚:TX(发送管脚) RX(接收管脚) GND(接地) 数据链接层---RS232协议 开始位+数据位+奇偶校验位+停止位 1 5~8 1 1 1.总线在发送或接收前应处于空闲状态--没有数据传输时,总线处于高电平状态! 2.开始位:要发送数据时,先发送一个低电平信号,这个信号叫开始信号,表示开
[单片机]
从零开始一起学stm32(十二)---<font color='red'>SPI</font>协议
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved