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 ; Generate SCK rising edge, after Data is stable. {1}
MOV C,MISO ; Read data from Slave into Carry (optional). {2}
MOV SPI_In.7,C ; Copy into the received data byte, bit-7 position. {2}
CLR SCK ; Generate SCK falling edge, after data read in. {1}
MOV A,SPI_Out ; Accumulator is temp holder for shift operation. {2}
RL A ; Rotate left (but not through 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时钟速度。

审核编辑:郭婷

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

    关注

    447

    文章

    47788

    浏览量

    409118
  • 微处理器
    +关注

    关注

    11

    文章

    2131

    浏览量

    81411
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87211
收藏 人收藏

    评论

    相关推荐

    基于TMS320F2812处理器的智能接口板设计

    结构为PMC底板结构,具有一定的通用性。系统设计接口板采用TMS320F2812处理器,对串行数据的接收和发送采用智能控制方式,它通过一个512K(32K×16)双端口存储(DPRAM)实现与主
    发表于 05-22 05:01

    32位处理器的开发与8位处理器的开发有哪些明显的不同?

    32位处理器的开发与8位处理器的开发有哪些明显的不同?开发一个32位的嵌入式系统需要哪些工具和环境呢?32位嵌入式系统的开发过程中存在哪些技术难点?有什么方法去应对呢?
    发表于 04-19 08:11

    Cortex-M3处理器是什么

    STM32单片机STM32的核心Cortex-M3处理器是一个标准化的微控制结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CPU,并行总线结构,嵌套中断向量
    发表于 07-16 06:33

    基于STMF103处理器的微型四轴飞行设计

    这段时间正在学习stm32处理器的使用,为了巩固所学知识,初步熟悉STMF103处理器外设的使用,打算制作一架微型四轴飞行,由于这个项目对我来讲还是有难度的,网上也看到一些不太成功
    发表于 08-06 09:04

    MSM8940处理器有哪些特点

    MSM8940处理器是什么?MSM8940处理器有哪些特点?
    发表于 11-09 07:09

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

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

    请问RISC处理器和ARM7处理器的区别在哪

    请问RISC处理器和ARM7处理器的区别在哪?求大神解答
    发表于 06-30 17:51

    Sitara AM62处理器的资料分享

    分析。AM62处理器还支持双屏全高清显示和多种操作系统,包括主线Linux®和 Android 操作系统。此外,AM62处理器可提供有线和无线连接接口。将系统功耗降低高达50%与同类器件相比,AM62
    发表于 11-03 06:11

    ARM Cortex-M7处理器参考手册

    和纠正的纠错码(ECC)功能在实现时包括在数据和指令高速缓存中。 Tcm接口支持实施外部ECC,以提供更高的可靠性并满足与安全相关的应用。 Cortex-M7处理器包括可选的浮点算术功能,支持单精度和双精度算术。 请参见第8章浮点单元。 该
    发表于 08-17 07:55

    MAX7651评估板配置Keil µVisio

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

    利用MAX7651实现ADC转换

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

    Interfacing the MAX7651/MAX765

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

    MAX7651评估板配置Keil μVision IDE

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

    SPI外设MAX7651处理器接口

    本文介绍如何将 GPIO 端口连接到 SPI 外设。它定义了SPI协议的基础知识,信号和SCK信号的四种传输变体。包括一个软件程序,用于使用MAX7651实现
    的头像 发表于 02-24 16:22 515次阅读
    <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 895次阅读
    <b class='flag-5'>MAX7651</b>/<b class='flag-5'>MAX</b>7652 12位数据采集系统与24C02 2线串行EEPROM<b class='flag-5'>接口</b>