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

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

3天内不再提示

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

星星科技指导员 来源:ADI 作者:ADI 2023-01-12 16:18 次阅读

快速 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 端口的速度。

审核编辑:郭婷

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

    关注

    48

    文章

    7557

    浏览量

    151446
  • 寄存器
    +关注

    关注

    31

    文章

    5343

    浏览量

    120401
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52115
收藏 人收藏

    评论

    相关推荐

    SPI接口如何实现微控制器之间的通信

    微控制器的接口侧配有一个通用同步和异步收发 (USART)、一个 I2C 兼容型双线接口 (TWI) 和 SPI。USART 可配置为第二个 S
    发表于 08-02 11:24 2731次阅读
    <b class='flag-5'>SPI</b>接口如何实现<b class='flag-5'>微控制器</b>之间的通信

    8051微控制器架构的简要说明

    此前已经介绍了关于8051微控制器基础知识和引脚图说明等相关知识,而在本文中,将重点介绍8051微控制器的硬件方面内容,如 I/O 端口、R
    发表于 08-23 14:45 2921次阅读
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>架构的简要说明

    8051微控制器的基础知识

    8051微控制器是嵌入式系统、消费电子、汽车等各个领域中最流行和最常用的微控制器之一,技术上称为Intel MCS-51架构。8051微控制器
    发表于 09-12 17:32 3456次阅读
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的基础知识

    用于外部微控制器SPI连接

    BlueNRG-MS设备,用于天线或测量仪器的SMA连接以及用于外部微控制器SPI连接。该
    发表于 06-01 17:03

    STM32:32微控制器功能

    STM32:32微控制器功能:1、串口USART:接外设2、内部集成电路I2C:用于与I2C接口设备通信3、串行通讯接口SPI用于
    发表于 08-11 08:02

    用新型微控制器降低8051系统的功耗

    用新型微控制器降低8051系统的功耗
    发表于 05-04 13:37 18次下载

    用AD7549双D A转换8051微控制器设计12模拟

    用AD7549双D A转换8051微控制器设计12模拟I O端口:
    发表于 06-12 15:32 67次下载
    用AD7549双D A转换<b class='flag-5'>器</b>和<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>设计12<b class='flag-5'>位</b>模拟

    MAX6900 RTC与8051控制器的连接

    摘要:本应用笔记提供了MAX6900 RTC与8051控制器的硬件连接和软件例程。 说明本应用笔迹介绍了MAX6900 I²C兼容RTC (实时时钟)与
    发表于 04-21 11:11 686次阅读
    MAX6900 RTC与<b class='flag-5'>8051</b><b class='flag-5'>位</b><b class='flag-5'>控制器</b>的连接

    基于微控制器的串行端口接口(SPI)启动电路

    本应用笔记描述基于微控制器的通用串行端口接口(SPI)启动电路的工作原理。对于需要在上电时修改某些器件参数的用户而言,这是一种低成本解决方案。本电路实现了一种用于对转换
    发表于 09-15 11:17 39次下载
    基于<b class='flag-5'>微控制器</b>的串行<b class='flag-5'>端口</b>接口(<b class='flag-5'>SPI</b>)启动电路

    N76E003 88051内核微控制器的中文数据手册免费下载

    N76E003为带有flash的增强型88051内核微控制器(1T工作模式),指令集与标准的80C51完全兼容并具备更高效能。
    发表于 11-09 08:00 80次下载
    N76E003 8<b class='flag-5'>位</b><b class='flag-5'>8051</b>内核<b class='flag-5'>微控制器</b>的中文数据手册免费下载

    N76E003 8051内核微控制器的数据手册免费下载

    N76E003为带有flash的增强型88051内核微控制器(1T工作模式),指令集与标准的80C51完全兼容并具备更高效能。
    发表于 03-04 08:00 37次下载
    N76E003 <b class='flag-5'>8051</b>内核<b class='flag-5'>微控制器</b>的数据手册免费下载

    AN-812: 基于微控制器的串行端口接口(SPI®)启动电路

    AN-812: 基于微控制器的串行端口接口(SPI®)启动电路
    发表于 03-21 08:35 14次下载
    AN-812: 基于<b class='flag-5'>微控制器</b>的串行<b class='flag-5'>端口</b>接口(<b class='flag-5'>SPI</b>®)启动电路

    8051微控制器引脚说明与基本电路

    此前已经介绍过8051微控制器的基础知识,包括它的历史、特性、封装和一些实际应用。在本文中,小编将将继续介绍关于8051微控制器引脚图、引脚说明以及其他一些细节内容,包括
    发表于 08-23 15:53 8444次阅读
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>引脚说明与基本电路

    DS1307与兼容8051微控制器接口

    DS1307串行实时时钟集成了2线串行接口,可使用兼容8051微控制器进行控制。本例中的DS1307直接连接到DS5000微控制器上的两个
    的头像 发表于 03-01 13:52 1443次阅读
    DS1307与<b class='flag-5'>兼容</b><b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b>接口

    将基于8051微控制器连接到SCI端口

    本应用笔记介绍如何配置高速微控制器或超高速闪存微控制器的UART,以便与支持SCI的设备通信。它首先简要讨论了SCI和UART模块之间的差异,并以一个实际示例结束,说明如何配置基于8051的达拉斯半导体
    的头像 发表于 06-13 15:48 766次阅读
    将基于<b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b>连接到SCI<b class='flag-5'>端口</b>