用于8051兼容微控制器的高效位敲击SPI端口

发布者:咖啡小熊最新更新时间:2023-10-30 来源: elecfans关键字:微控制器  SPI端口 手机看文章 扫描二维码
随时随地手机看文章

快速 SPI 端口可通过 GPIO 引脚进行位冲击,并作为具有 SPI 端口的 8051 兼容微控制器的低成本替代方案。本应用笔记所示的代码利用8051特有的特性,使用最少的额外代码创建快速SPI端口。


虽然可以使用带有SPI端口的8051兼容微控制器,但具有SPI端口通过GPIO引脚位敲击的低成本器件通常足以满足许多应用的需求。此处显示的代码利用特定于 8051 内核的功能,以最小的工作量创建快速 SPI 端口。#define语句中的 CPHA、CPOL 和CS_TOGGLE_BETWEEN_BYTES常量初始化宏,这些宏根据正在实现的 SPI 端口类型定制代码。 预处理器在编译时而不是运行时执行此代码定制,从而节省了宝贵的时钟周期,如果使用决策结构(即常规的 if-else 语句),这些周期将被浪费。


下面的代码包括利用 8051 内核功能所需的特定于 8051 的 C 命令。尽管这些命令是特定于编译器的(在本例中为 8051 的 Keil μVision v2 开发工具),但所有适用于 8051 兼容设备的“好”C 编译器都包含类似的命令。


检查代码,PORT_0定义为 sfr 类型,它提醒编译器此标签是 8051 特殊功能寄存器 (SFR)。由于此 SFR 是位可寻址的,因此 sbit 类型定义引用特定 SFR 位以充当 SPI 端口引脚的标识符。spiTmp 声明中使用的 bdata 类型允许将此变量放置在 8051 内核的直接可寻址 RAM 内的特殊位可寻址内存中。同样,sbit 类型定义了将引用 spiTmp 变量中特定位的标识符。


要通过 SPI 端口发送的字节将加载到全局字节数组 spiData 中。将此变量声明为全局变量允许 SPI 发送/接收函数访问 spiData,而无需将其作为参数传递。使用数据标识符声明它强制编译器将数组存储在 8051 内核内最快的可访问内存(直接可寻址内存)中。


spiReadWriteBlock 函数包含位撞击 SPI 端口的代码。它使用此 SPI 端口有效地传输 spiData 数组中的每个字节,从数组中的最后一个元素到第一个元素。使用此反向顺序访问数组允许与零进行比较(请参阅代码),由于 8051 指令集,这意味着更快的组装。当 spiReadWriteBlock 函数完成时,使用 SPI 端口读取的字节将替换 spiData 数组中的原始数据,再次从数组中的最后一个元素开始到第一个元素。


请注意,代码经过优化,可以发送和接收大于一个字节的数据块。对于单字节传输,应删除 spiReadWriteBlock 中的循环结构和局部变量。(这可以使用预处理器完成。


当针对Maxim DS89C430/450系列8051兼容微控制器进行编译时,该位撞击式SPI端口的运行速度略高于2Mbps,如图1所示。此外,该代码只需要两个字节的可直接寻址RAM和139字节的闪存用于代码空间(包括SPI端口初始化和主程序循环)。

poYBAGO_wmKAXZ4SAAAamY0V4W4014.gif?imgver=1

图1.这些波形表示当CPHA、CPOL和CS_TOGGLE_BETWEEN_BYTES常数设置为1时,位撞击SPI端口的输出。此固件使用 8051 内核中的位可寻址存储器来提高 SPI 端口的速度。


关键字:微控制器  SPI端口 引用地址:用于8051兼容微控制器的高效位敲击SPI端口

上一篇:80C51单片机与8051单片机的区别是什么
下一篇:基于8051单片机开发的湿度计设计

推荐阅读最新更新时间:2024-10-25 13:52

用于8051兼容微控制器的高效位敲击SPI端口
快速 SPI 端口可通过 GPIO 引脚进行位冲击,并作为具有 SPI 端口的 8051 兼容微控制器的低成本替代方案。本应用笔记所示的代码利用8051特有的特性,使用最少的额外代码创建快速SPI端口。 虽然可以使用带有SPI端口的8051兼容微控制器,但具有SPI端口通过GPIO引脚位敲击的低成本器件通常足以满足许多应用的需求。此处显示的代码利用特定于 8051 内核的功能,以最小的工作量创建快速 SPI 端口。#define语句中的 CPHA、CPOL 和CS_TOGGLE_BETWEEN_BYTES常量初始化宏,这些宏根据正在实现的 SPI 端口类型定制代码。 预处理器在编译时而不是运行时执行此代码定制,从而节省了宝贵的
[单片机]
用于<font color='red'>8051</font>兼容<font color='red'>微控制器</font>的高效位敲击<font color='red'>SPI</font><font color='red'>端口</font>
将基于8051微控制器连接到SCI端口
本应用笔记介绍如何配置高速微控制器或超高速闪存微控制器的UART,以便与支持SCI的设备通信。它首先简要讨论了SCI和UART模块之间的差异,并以一个实际示例结束,说明如何配置基于8051的达拉斯半导体微控制器UART以与SCI模块通信。 介绍 串行通信接口 (SCI) 是一种高速串行 I/O 端口,允许设备之间的同步或异步通信。它允许微控制器连接到各种类似功能的外设,以及标准RS-232接口。SCI 的确切实现因设备制造商而异;许多器件都支持异步模式下的全双工通信、奇偶校验、错误检测以及 到 位的可编程字符长度等功能。 所有基于 8051 的达拉斯半导体微控制器都能够与支持 SCI 的设备进行通信,即使 SCI 功能
[单片机]
将基于<font color='red'>8051</font>的<font color='red'>微控制器</font>连接到SCI<font color='red'>端口</font>
8051单片机的四组I/O端口
1.概述 单片机的I/O端口是输入信号和输出信号的通道。8051单片机有P0、P1、P2、P3四组I/O 端口,每组端口有8个引脚。 2.P0端口 2.1 概述 P0端口有P0.0~P0.7共8个引脚,这些引脚除了可用作输入引脚和输出引脚外,在外接存储器时,还可用作地址/数据总线引脚。P0端口每个引脚的内部电路结构都相同,其内部电路结构如图1所示。 图1 P0端口的内部电路结构图 2.2 P0端口用作输出端口的工作原理 下面讲解单片机需要从P0.x 引脚输出高电平“1”。如图1所示,单片机内部相关电路通过控制线送出“0(低电平)”到与门的一个输入端和电子开关的控制端,控制线上的“0”一方面使与门关闭(即与门的一端为“0”时
[单片机]
<font color='red'>8051</font><font color='red'>单片机</font>的四组I/O<font color='red'>端口</font>
C8051F单片机端口配置
前言 最近项目上使用C8051单片机,我也是首次用这款单片机,所以项目开发过程中还是或多或少的遇到了一些问题,在此做一个总结,方便以后再次使用,避免相同问题重复犯错。 一、涉及的寄存器 PxMDIN:端口输入方式寄存器,有模拟输入和非模拟输入两种方式 PxMDOUT:端口输出方式寄存器,开漏输出和推挽输出两种方式 PxSKIP:端口跳过寄存器 Px:端口寄存器 二、实例 1.配置端口输入 //P0.X(1 3 5 7)为数字输入,开漏输出,普通IO功能 P0MDIN |= (1 1) | (1 3) | (1 5) | (1 7); P0MDOUT &= ~((1 1) | (1 3) | (1 5)
[单片机]
C<font color='red'>8051</font>F<font color='red'>单片机</font><font color='red'>端口</font>配置
8051单片机端口结构—P3口
P3口是一个多功能端口,对比P1的结构图不难看出,P3口与P2口的差别在于多了与非门和缓冲器。正是这两个部分,使得P3口除了具有P1口的准双向I/O功能之外,还可以使用各引脚所具有的第二功能。 与非门的作用实际上是一个开关,决定是输出锁存器上的数据还是输出第二功能W的信号。WR和RD三个第二输出功能引脚。当W=1时,输出Q端信号;当Q=1时,可输出W线信号。编程时,可不必事先由软件设置P3口为通用I/O口还是第二功能。 当CPU对P3口进行特殊功能寄存器寻址访问时,由内部硬件自动将第二功能输出线W置1,这时P3口为通用I/O口;当CPU不把P3口作为特殊功能寄存器寻址访问时,即可用作第二功能输出/输入线时,由内部硬件使锁存
[单片机]
<font color='red'>8051</font><font color='red'>单片机</font><font color='red'>端口</font>结构—P3口
8051单片机端口结构—P2口
P2口的位结构与P0口类似,有MUX开关。驱动部分与P1口类似,但比P1口多了一个转换部分。 当CPU对片内存储器和I/0口进行读写时,即执行MOV指令,或在EA=1的条件下执行MOVE指令,由内部控制电路自动使开关MUX倒向锁存器的Q端,这时P2口为一般I/O口;当CPU 对片外存储器进行读写时,即执行MOV指令,或在EA=1的条件下执行MOVC指令,开关倒向地址线端,这时P2口之输出高8位地址。当系统扩展片外EPROM和RAM时,由P2口输出地址(低8位地址由P0输出)。此时,MUX在CPU的控制下,转向内部地址线的一端。因为访问片外EPROM和RAM的操作往往接连不断,P2口要不断送出高8位地址,此时P2口无法再用作通用
[单片机]
<font color='red'>8051</font><font color='red'>单片机</font>的<font color='red'>端口</font>结构—P2口
8051单片机端口结构—P1口
P1口也是一个准双向口,作通用I/O使用。 从P1口的结构上可以看出,P1口输出驱动部分与P0口不同,内部有上拉负载与电源相连。实质上电阻是两个场效应管FET并在一起,一个FET为负载管,其电阻固定;另一个FET可工作在导通或截止两种状态,使其总电阻值变化近为0或阻值很大两种情况。当阻值近似为0时,可将引脚快速上拉至高电平,当阻值很大时,P1口为高阻输入状态。当P1口输出高电平时,能向外提供拉电流负载,所以不必再接上拉电阻。在端口用作输入时,也必须先向对应的锁存器写入“1”,使FET截止。由于片内负载电阻较大,约20-40K欧。所以不会对输入的数据产生影响。
[单片机]
<font color='red'>8051</font><font color='red'>单片机</font><font color='red'>端口</font>结构—P1口
8051单片机端口结构—P0口
  8051单片机有四个8位并行I/O端口,记作P0,P1,P2和P3.每个端口都是8位准双向口,共占有32条引脚。每一条I/O线都 可以独立的用作输入或输出。   每个端口都包括锁存器,一个输出驱动器,作输出时数据可以锁存,作输入时数据可以缓冲。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为准双向通用I/O端口使用。   在具有片外扩展存储器系统中,P2口送出高8位地址,P0口为双向总线,分别送出低8位地址和数据输入/输出。8051单片机四个I/O端口的电路设计非常巧妙,熟悉I/O端口逻辑电路,不但有利于正确合理地使用端口,而且会对设计单片机外围逻辑电路有所启发。   P0口的每一位由一个输出锁存器 ,二个三态
[单片机]
<font color='red'>8051</font><font color='red'>单片机</font><font color='red'>端口</font>结构—P0口
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved