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

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

3天内不再提示

SPI外设与MAX7651处理器的接口

星星科技指导员 来源:ADI 作者:ADI 2023-03-28 11:14 次阅读

本文介绍如何将 GPIO端口连接到 SPI 外设。它定义了SPI协议的基础知识,信号和SCK信号的四种传输变体。包括一个软件程序,用于使用MAX7651实现SPI接口,MAX12是一种闪存可编程的<>位集成数据采集系统。

介绍

The SPI™总线是许多微处理器外设芯片使用的4线串行通信接口。MAX7651微处理器不包括实现接口的专用硬件。但是,图中显示了可以向SPI外设发送和接收数据的简单软件例程。

SPI接口的4个引脚如下:

SCK(串行数据时钟):数据在SCK的上升沿或下降沿上移动/锁定(请参阅下一节)。

MOSI(主输出/从输入):如果芯片是主设备,则数据从此引脚传输出去,如果芯片是从设备,则数据传输到此引脚。

MISO(主输入/从输出):如果芯片是主设备,则数据接收到此引脚,如果芯片是从设备,则从该引脚传输出去。

/CS(芯片选择,低电平有效):告知外围设备传输即将开始。

SPI协议定义了SCK相位和极性的四种数据组合。如果芯片具有设置这四种状态的控制位,则它们通常称为CPOL(时钟极性)和CPHA(时钟相位)。SPI 始终以 8 位块传输数据。您可以根据需要传输任意数量的 8 位块。例如,16 位写入从前 8 位开始到第 <> 位结束断言/CS。

CPOL CPHA Transfer
0 0 SCK上升沿转移。
SCK 在位定时中间进行转换。
1 0 SCK 落边转移。
SCK 在位定时中间进行转换。
0 1 SCK 落边转移。
SCK 在位时序开始时转换。
1 1 SCK上升沿转移。
SCK 在位时序开始时转换。

在读取SPI外设的数据手册时,通常会看到对SPI模式的引用为CPOL = 0、CPHA = 0等,即使芯片本身在物理上不包含这些位定义。相反,SPI接口是“硬连线”的,以发送/接收数据,就好像CPOL和CPHA位已设置为0一样。例如,MAX5154 12位DAC采用SPI接口,具有上升沿中位数据传输功能。这对应于CPOL = 0,CPHA = 0协议。因为这是迄今为止最常见的SPI传输,所以这就是我们将要讨论的示例代码。下图来自MAX5154数据资料。信号/CS是SPI信号Active-Low SS,SCLK是SCK,DIN将连接到MODI,因为外设是从机,只有一个输入(没有回读)。这部分在传输中使用 16 位。

pYYBAGQiW7KATGlEAAAORlzC4Tw591.gif

图1.串行接口时序图。

代码示例:8 位数据传输

以下示例是最常见的 SPI 传输类型,CPO = 0,CPHA = 0。该例程不假设MAX7651的时钟速度,因为I/O端口位只是尽可能快地“位敲击”。数据传输时间显示在本节末尾。

图2所示为MAX7651/MAX7652与SPI外设之间的典型连接。

poYBAGQiW7KAKAPwAAAOL3vqPGk844.gif

图2.通用 SPI 连接。

注释字段中的数字 {N} 是执行指令的时钟周期数。

;用于 8 位外设的 SPI 数据传输。MAX7651为主站;外围是奴隶。
;
;使用以下SPI定义的引脚。(某些外围设备是写入的 仅,因此只需要 3 根电线。
;SCK:数据传输时钟
;MISO:主输入数据(来自外设),并不总是使用
;MOSI:主输出数据(到外设);
SS:从选择(低电平有效))
;

SCK EQU P1.0
MISO EQU P1.1
MOSI EQU P1.2
CS EQU 小1.3 ;使用端口 1,但这是 100% 任意的。使用任何可用的 引 脚。

;
;现在我们需要使用MAX7651中的一些内部RAM作为数据存储。
;为了执行速度,其中两个变量必须位于 RAM 区域
;这允许在字节内进行位寻址。在MAX7651中,RAM空间对应于
;到地址 20H 到 2FH。低于 20H 或高于 2FH 的地址不能被位寻址!

SPI_In EQU 20+ ;从从属设备读取 8 位的结果。
SPI_Out EQU 21+ ;我们希望发送给奴隶的数据。

;
;最后,我们需要一个循环计数器来跟踪发送 8 位。
;这可以是“R”寄存器(R0-R7) 或
;任何 RAM 寄存器(不必是位可寻址的)。让我们使用
内存 ;注册。

LOOP EQU 30+ ;可以在地图中的任何位置;这只是一个例子。

;
;假设调用时,已经设置了片选位SS 到 1.

SPI_IO: CLR SCK ; SCK starts off low. {1}
CLR CS ; Clearing CS begins the data transfer. {1}
SETB MISO ; To be used as input, must be set internally. {1}
MOV LOOP,#8 ; Eight bits to transfer. {3}
XFER: MOV C,SPI_Out.7 ; Move bit 7 into Carry (SPI is MSB first). {2}
MOV MOSI,C ; I/O port reflects the Carry bit, which is the Data bit. {2}
SETB SCK ; GenerateSCKrisingedge, after Data is stable. {1}
MOV C,MISO ; ReaddatafromSlave into Carry (optional). {2}
MOV SPI_In.7,C ; Copy into the received data byte, bit-7 position. {2}
CLR SCK ; Generate SCKfallingedge, after data read in. {1}
MOV A,SPI_Out ; Accumulatoris temp holder for shift operation. {2}
RL A ; Rotate left (butnotthrough Carry!). {1}
MOV SPI_Out, A ; Prepare bit 7 for next transfer to Slave. {2}
MOV A,SPI_In ; Get previous Slave read data. {2}
RL A ; Rotate left to get next bit position into proper spot. {1}
MOV SPI_In,A ; Save result. {2}
DJNZ LOOP,XFER ; Decrement LOOP. Jump if not zero to XFER. {3}
; Transfer done.
SETB CS ; De-assert chip select. {1}
.END ; Tell assembler code completed.

传输 8 位(读取和写入从属)的CPU周期总数为 6 + 8 × 23 + 1 = 191。仅供读取或写入,总数为 6 + 8 × 18 + 1 = 151 个 CPU 周期。下表给出了使用MAX7651常用时钟速度的各种传输速率。

MAX7651时钟速度 位传输时间 总读/写
传输时间
12兆赫 7.95us (~125KHz) 63.6秒
11.0592兆赫 8.63us (~116KHz) 69.08秒
4兆赫 23.88us (~41.9KHz) 191us

从此表中,我们可以看到最快的SPI字节传输约为15.7KHz,而最慢的速率为5.2KHz。这比专用的1MHz SPI硬件端口慢得多!因此,如果MAX7651用作从机,则必须将SPI主机设置为最慢的位传输速度(125KHz),MAX7651必须工作在12MHz时钟速度。

审核编辑:郭婷

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

    关注

    450

    文章

    49365

    浏览量

    415815
  • 微处理器
    +关注

    关注

    11

    文章

    2206

    浏览量

    81894
  • 总线
    +关注

    关注

    10

    文章

    2797

    浏览量

    87600
收藏 人收藏

    评论

    相关推荐

    RK3399处理器与AR9201处理器有哪些不同之处呢

    RK3399 处理器与AR9201 处理器有哪些不同之处呢?hi3559A 处理器与RV1126 处理器有哪些不同之处呢?
    发表于02-21 07:29

    基于ARM的PC/104处理器模块设计

    提出了一种低成本的PC/104 处理器模块的设计。该模块硬件上以ARM 处理器为核心实现了PC/104 处理模块的基本结构、总线 接口,软件上构建了嵌入式Linux操作系统。以ARM
    发表于08-25 10:36 20次下载

    MAX7651评估板配置Keil µVisio

    摘要:本文讨论了为 MAX7651评估板建立项目和配置Keil µVision® IDE的操作流程,并给出了一个第三方的应用实例:程序编写、编译以及下载到 MAX7651评估板的步骤。
    发表于04-23 14:08 1005次阅读
    为<b class='flag-5'>MAX7651</b>评估板配置Keil µVisio

    利用MAX7651实现ADC转换

    摘要:本文提供了利用 MAX7651评估板实现模/数转换的源代码和函数。它是 MAX7651评估板提供的3个应用例程之一,能够进行写、编译和下载等简单的编程功能。 另请参考:
    发表于04-23 14:09 808次阅读

    Interfacing theMAX7651/MAX765

    to interface the MAX7651and MAX7652 12-bit data acquisition system to the 24C02 2-wire serial EEPROM. Detailed software code is provid
    发表于04-23 15:12 1364次阅读
    Interfacing the <b class='flag-5'>MAX7651</b>/<b class='flag-5'>MAX</b>765

    外围设备的SPI接口MAX7651处理器-Interfac

    Abstract: This article explains how to interface a GPIO port to an SPIperipheral. It defines
    发表于04-24 16:10 797次阅读
    外围设备的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的<b class='flag-5'>MAX7651</b><b class='flag-5'>处理器</b>-Interfac

    外围设备的SPI接口MAX7651处理器-Interfac

    Abstract: This article explains how to interface a GPIO port to an SPIperipheral. It defines
    发表于05-08 09:41 489次阅读
    外围设备的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的<b class='flag-5'>MAX7651</b><b class='flag-5'>处理器</b>-Interfac

    Intel 64位处理器,Intel 64位处理器结构原理

    Intel 64位 处理器,Intel 64位 处理器结构原理 现在人们广泛使用的是由32位微 处理器构成的计算系统,但是32位的计算和操作系统不能支持
    发表于03-26 15:07 3234次阅读

    苹果a6处理器怎么样_a6处理器参数

    苹果正式发布iphone5,iphone5采用A6 处理器,那么A6 处理器怎么样?a6 处理器参数是什么呢?a6 处理器四核的吗?带着这些疑问,我们来一起了解下A6
    发表于09-13 14:29 2.6w次阅读

    如何将ADS7866/67/68ADC连接TMS470处理器的串行外设接口端口的概述

    该应用报告提出了将ADS7866/67/68 12/10/8位SAR模数转换 连接到TMS470 处理器的串行 外设 接口SPI)端口的方法。T
    发表于05-25 16:03 9次下载
    如何将ADS7866/67/68ADC连接TMS470<b class='flag-5'>处理器</b>的串行<b class='flag-5'>外设</b><b class='flag-5'>接口</b>端口的概述

    麒麟9000处理器和高通骁龙875处理器相比如何?

    随着华为mate10系列的发布,华为最后一代旗舰 处理器,麒麟9000也就此亮相,大家对于麒麟9000 处理器十分的看好。因为麒麟9000 处理器在安兔兔的跑分竟然高达72万分,较上一代麒麟990
    的头像 发表于11-03 11:31 5726次阅读

    MAX7651评估板配置Keil μVision IDE

    本文给出了启动项目和为 MAX7651评估板配置Keil μVision® IDE软件的分步步骤。本文为 MAX7651评估板目标板编写、编译和下载简单程序的三部分应用示例中的第二个。
    的头像 发表于01-23 14:53 997次阅读
    为<b class='flag-5'>MAX7651</b>评估板配置Keil μVision IDE

    MAX7651的扩展数学子程序集合

    MAX7651闪存可编程12位集成数据采集系统使用8位CPU内核进行所有操作。在某些情况下,8 位分辨率不足以进行数据操作。一个明显的例子是使用具有12位分辨率的内部ADC。收集多个读数,然后找到最大值需要 CPU 寄存 中 8 位以外的数学子程序。
    的头像 发表于02-21 10:48 498次阅读

    SPI外设MAX7651处理器接口

    本文介绍如何将 GPIO 端口连接到 SPI 外设。它定义了 SPI协议的基础知识,信号和SCK信号的四种传输变体。包括一个软件程序,用于使用 MAX7651实现
    的头像 发表于02-24 16:22 677次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>外设</b>与<b class='flag-5'>MAX7651</b><b class='flag-5'>处理器</b>的<b class='flag-5'>接口</b>

    MAX7651/MAX7652 12位数据采集系统与24C02 2线串行EEPROM接口

    本文介绍将 MAX7651MAX7652 12位数据采集系统连接至24C02 2线串行EEPROM所需的特定硬件描述和软件程序。提供了详细的软件代码。由于 MAX7651/52基于标准
    的头像 发表于03-01 14:18 1057次阅读
    <b class='flag-5'>MAX7651</b>/<b class='flag-5'>MAX</b>7652 12位数据采集系统与24C02 2线串行EEPROM<b class='flag-5'>接口</b>