在嵌入式系统处理器中有相当一部分处理器不带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上都得到验证。
关键字:接口 控制 地址 寄存
引用地址:
嵌入式系统中可配置式GPIO模拟SPI总线方法
推荐阅读最新更新时间:2024-03-30 21:24
基于MCS51单片机的大屏幕LED显示屏高速控制方案
摘要:以MCS51系列单片机为例,介绍单片机对大屏幕LED显示屏的一种高速控制方案。单片机对LED显示屏的显示控制,一般是先从数据存储器读取数据,然后将数据写给LED点阵片。本方案的创新点是:用一条对外部数据存储器的读指令,同时完成对外部数据存储器读和对LED点阵片的写操作。本文详细介绍高速控制方案的电路设计,并简要提示软件编制的要点;最后介绍高速控制方案在大屏幕LED显示屏中的应用。
引言
LED显示屏的基本工作原理是动态扫描。显示控制的过程是先从数据存储器读得字模数据,再通过单片机的串行口或并行口将数据写给LED点阵片,然后再行扫描。
动态扫描方案和静态显示方案相比节省驱动元件,但要求刷新频率高于50 Hz
[单片机]
12864(st7920控制器)画点、线子程序
/*------------------ 画点子程序 -----------------------------*/ //X Y为预想的坐标系(X:0-127,Y:0-63 按格算),Color 0灭,1亮,2翻转 void DrawPoint(unsigned char X,unsigned char Y,unsigned char Color) { unsigned char Row,Tier,Tier_bit ; unsigned char ReadOldH,ReadOldL ; wr_comm(0x34); // 选扩充指令 并关显示 wr_comm(0x36); // 选扩充指令,开显示 Tier=X
[单片机]
基于TDA1524A的音调控制电路
这是一个模块中的低噪声和失真前置放大器和音调控制电路。使用特殊的IC TDA1524A,这个简单的电路很容易构建,可以驱动大部分功率放大器。 示意图: 前置放大器 + 音调控制组件列表: 电路工程: 所有信号处理均在 TDA1524A 内由压控放大器和压控滤波器完成。IC 在引脚 17 处提供固定电压 (~ 3.8V DC),所有可变电阻器都使用该电压为相应的控制引脚提供可调节的直流电压。 电流检测用于在 R5 连接到引脚 17 时提供平坦响应,并在断开连接时提供响度轮廓。每个电位器上使用 100 nF 电容器将任何交流信号与控制输入去耦。10 uF 电容器用于耦合输入和输出音频信号,同时阻断直流。R1 和 R2
[嵌入式]
交换式路由器的千兆比以太网接口设计和实现
摘要: 根据交换式路由器的设计要求、结构功能及千兆比以太网的具体特点,使用介质访问控制子层的控制芯片XMACII和大容量的FPGA,完成了千兆比以太网接口的设计与实现。
关键词: 千兆比以太网接口 XMACII FPGA
随着宽带网络的普及和网络应用的多业务需求,特别是基于视频多媒体等的大流量网络业务的增多,传统的路由器越来越成为高速网络的瓶颈。由于路由器各个端口之间是通过共享总线相连,路由器的端口速率比较低,因而限制了转发IP分组的能力。传统的路由器在运行路由协议、维护路由表等方面都难以满足现代IP通信网络的要求。
交换式路由器是采用新型交换结构来实现分组路由转发功能的下一代路由器。交换式
[应用]
初学MSP430——按键中断控制小灯翻转
** /* * Copyright (c)... * All rights reserved. * * 文件名称:main.c * 文件标识:NO * 硬件描述:开发板上P1.3接按键,P1.0接了LED(用跳线帽连接)。 * 功能描述:每次按下按键后,控制P1.0、P1.6 LED闪烁情况 * * 当前版本:V1.0 * 作者:输入作者(或修改者)名字 * 完成日期:2015年2月6日 * * 取代版本:NO * 原作者:TI * 完成日期:2013-4-8 */ #include MSP430G2553.h //-----在main()函数前提前申明子函数----- void P1_IODect();
[单片机]
USB 80Gbps接口标准正式发布 USB 3.0/USB4称呼被淘汰
10月19日,USB-IF组织正式发布了全新的USB4 v2.0标准规范,带来了新一代USB 80Gbps接口,还有全新的命名体系。说到命名骚操作,除了大名鼎鼎的微软“改名部”,最会玩的就是USB-IF组织了,从早期的Full Speed、High Speed,到后来的USB 3.2 Gen1/Gen2/Gen2x2,能让你分清楚算我输。 到了USB4,不但再次改变命名方式,技术上也变懒了,几乎直接承袭了Intel捐献的雷电3标准,从物理底层到技术规格都如出一辙。 新鲜出炉的USB4 v2.0,也不是接口名字,而只是规范命名。 从此以后(到下次再改名),USB接口将统一以传输带宽命名,USB4 v2.0对应USB 80
[手机便携]
基于Stm32F407的多路(6路)步进电机速度控制函数
应学弟们的要求特意将步进电机的速度控制函数完善。 重点:这里只是速度控制函数, 没有加减速曲线! 没有记录步数! 只是简单的把步进电机当成直流电机用! 很初级的一个程序! 程序的下载链接在这里 开发平台Keil5 单片机 Stm32F407 接下来 我就程序的实现过程给大家进行分享 第一部分是实现的机制介绍 详细链接 在这里!主要就是通过修改 PSC和ARR寄存器的值,我们可以修改 定时器的溢出频率!而我们的定时器模式设置成 PWM输出模式, CCR寄存器 我们设置一个较小的值*(我们要控制脉冲的频率 ,所以单个脉冲的宽度是我们不关心的!) 修改了 PSC 和ARR值之后 我们就可以实现对步进电机的速度进行控制
[单片机]
异步LED显示屏控制系统设计
基于led技术的大屏幕显示屏已经广泛用于广场、机场、体育场馆和车站等公共场所,在大屏幕上显示文字、动画、图像以及视频等多媒体信息。LED大屏幕控制系统在显示信息时,不需要经过计算机对数据进行处理,是直接读取存放在显示器缓冲区中的信息来显示的,当需要更新信息时,显示屏的数据采集模块向显示模块发送新数据。本文利用高速数据存储和处理的技术方法,设计了一种彩色异步LED大屏幕显示屏控制系统。 1系统设计 1.1系统的总体框架 本文设计的LED大屏幕显示屏控制系统总体框架如图1所示。 图1LED大屏幕控制系统结构图 从图中可以看出,系统主要包括以下4个组成部分: 1
[电源管理]