当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]ARM与射频芯片TRF796x的SPI通信研究

摘要:针对SPI总线接口缺乏标准协议的特点,提出了SPI器件之间通信的一般方法。论文阐述了ARM芯片内置SPI硬件控制器的工作原理和时序,并对射频芯片TRF7960x的工作模式与读写要求进行了分析。在此基础上,根据TRF796x的时序特性和访问要求,采用ARM芯片的硬件 SPI方式实现对TRF796x的读写访问与控制,并在RFID门禁系统中验证了通信结果。
关键词:SPI;ARM;TRF796x;时序

引言
    SPI(同步串行外围接口)是由Motorola公司最早提出的,出现在其M68系列单片机中。它是一种全双工的同步串行接口,采用主一从模式架构,支持多Slave模式应用,但一般仅支持单Master。由于其简单实用,又不牵涉到专利问题,因此许多厂家的设备都支持该接口,被广泛应用于外设控制领域。 SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola公司的SPI接口定义来设计的。正因为没有确切的标准协议,不同厂家的 SPI器件接口在技术上存在着一定的差异,有的甚至无法直接互连。本文对SPI器件通信时容易忽略的问题进行了分析。

1 S3C2440A内置SPI接口与工作时序
    S3C2440A是Samsung公司生产的ARM9内核芯片,该芯片内置了2个SPI硬件控制器,大大简化了与SPI器件的通信。从 Samsung公司提供的Datasheet中可以看出,其内置硬件SPI结构主要由4部分构成:时钟分频器、8位发送移位寄存器、8位接收移位寄存器、控制逻辑等。其与SPI接口相关的寄存器包括控制寄存器(SPCONn)、状态寄存器(SPSTAn)、引脚控制寄存器(SPPINn)、预分频寄存器 (SPPREn)、发送数据寄存器(SPTDATn)、接收数据寄存器(SPRDATn,n=0,1)。其SPI接口共有4根信号线,分别是从设备选择线(SS)、时钟线(SCK)、串行输出数据线(MO-SI)、串行输入数据线(MISO)。当S3C2440A作为Master时,SS信号由S3C2440A驱动输出,用于选择激活某从 SPI器件,只有当SS信号线为低电平时,对应Slave设备的SPI接口才处于工作状态。为了满足不同SPI器件的通信特性,S3C2440A内置的 SPI接口定义了4种数据传输的工作时序,这4种时序是由控制寄存器(SPCONn)的时钟极性控制位(CPOL)和时钟相位控制位(CPHA)联合进行配置的。从表1可以看出,SPI的工作时序主要是根据数据采样的时刻(上升沿或下降沿),以及在没有数据传输时SCK信号所保持的状态来划分模式的。


    根据CPOL和CPHA设置的不同,S3C2440A内置SPI接口的4种工作时序如图1所示。需要注意的是,SPI通信的数据传输是以字节为单位进行的,且高位在前,低位在后,图1中的*LSB表示上一个传输字节的最低位,MSB*是指下一个传输字节的最高位。

[!--empirenews.page--]

2 射频芯片TRF796x
    TRF796x是德州仪器(TI)公司生产的射频读写器芯片,是一个13.56 MHz集成模拟前端和数据帧RFID阅读系统。其内部可编程配置,外部控制器可直接访问其内部寄存器来调整读写器的各种参数,该芯片被广泛应用于近距离RFID系统。
    TRF796x芯片与处理器之间的通信既可以通过8位并行口也可以通过SPI接口。当采用SPI接口时,TRF796x芯片总是以从设备运行。如果内部的硬件编/解码器被使用,TRF796x将启动12个字节的数据缓冲器FIFO来完成数据的传送和接收。有时候为了使处理器(如MCU)能实时的处理数据,TRF796x会旁路掉硬件编/解码器,采用直接传送和接收功能。TRF796x芯片的两种通信模式是相互排斥的,在应用中的某个时刻只能有一种通信方式被使用。表2中列出了TRF796x的通信方式,可以看出,要实现其SPI通信就必须先对引脚I/00~I/O2配置成不同的电平。当芯片被使能工作时就会检测这3个引脚的电平,从而进入相应的通信方式。


    当选择了SPI带SS通信方式,SS信号为高时SPI处于复位状态。只有SS信号为低时,时钟信号才开始工作,串行数据输入(MOSI)在上升沿采样,在下降沿确认生效,当SS信号变为高电平时,通信终止。TRF796x的写操作通信如图2所示。


    TRF796x的单个寄存器读操作包括一个写周期和一个读周期,在写周期过程中,MISO引脚上是无效的数据,其时序与写操作相同,也是上升沿采样,下降沿确认生效。在写周期和读周期之间,需要有半个时钟周期的极性转换时间。注意:对于任何读操作(单个读、连续读)来说,该时钟极性跳变必须被执行,否则不能够读到TRF796x寄存器的正确值。在读周期过程中,数据在下降沿采样,上升沿时确认生效,而MOSI引脚不应该有任何的跳变,就是说要始终保持高电平或低电平(即0x00或0xFF)。图3是TRF796x的读操作时序。


[!--empirenews.page--]
3 ARM与TRF796x通信的实现
    S3C2440A的SPI接口传输方式有查询、中断、DMA三种,由于TRF796x有专门的IRQ中断引脚,所以本文选择ARM芯片 SPI接口的查询方式。S3C2440A作为Master,时钟频率通过SPPREn寄存器设置,其频率f=PCLK/[2(SPPREn的值+1)],f≤25 MHz。控制寄存器SPCONn应该根据具体的通信要求来设置。
    对TRF796x的访问需要区分是写地址还是写命令,字节的最高位(MSB)决定了该指令是用于命令还是地址。具体的地址/命令字节位描述如表3所列。


    从表3可以看出,如果是单个写寄存器操作,则发送字节最高3位为000;如果是连续写寄存器操作,则最高3位001;如果是读单个寄存器操作,则最高3位010;如果是写命令,则最高3位100;其他操作不再详述。
    本文采用S3C2440A的SPI0接口与TRF796x通信,其连接图如图4所示。从I/O_0~I/O_2的引脚电平可以看出选择的是SPI带SS通信方式。其中,EN脚是TRF796x的工作使能引脚,I/O_4是SS脚。当SS置为低且查询到状态寄存器SPSTA0的最低位为1(说明SPI发送接收准备好),待发送的数据一旦写入到发送移位寄存器SPTDAT0中,SPI通信的发送和接收就会同时开始,一般是上升沿发送,下降沿接收。如果只想发送不想接收数据,可以不读取接收寄存器的内容;值得注意的是,如果只想接收数据,应该写数据0xFF或0x00到发送移位寄存器,然后才能从接收移位寄存器中读取数据。


    下面通过非连续寄存器读操作来具体说明ARM与TRF796x是如何进行SPI通信的。图5是对TRF796x的非连续寄存器读操作的流程。


    整个读操作流程是:
    ①初始化操作,置EN脚为高电平使能TRF796x工作,将GPE11~GPE13配置成SPI功能,配置S3C2440A作为Master,且选择查询工作方式,写SPPREN0寄存器来配置通信时钟频率。[!--empirenews.page--]
    ②写地址,从图1和图3的时序可以看出,要读TRF796x的寄存器值,必须包含一个写地址周期和一个读数据周期。在写TRF796x的地址之前,必须先设置SPCON0的CPOL和CPHA都为O,这样通信双方的时序才能保持一致,而且要将地址字节的最高3位设为010,然后将地址字节写入发送移位寄存器SPTDAT0中,一旦地址字节发送完,TRF796x就会把相应地址的内容送到MISO脚上。
    ③读数据,在地址字节写入后,读数据之前,必须转换SCK的时钟极性,从图1可以看出,需要设置CPOL为0,CPHA为1,这样就满足了TRF796x的读时序要求。写数据0x00或0xFF到SPTDAT0中,接着就可以从SPRDAT0中读取数据。
    非连续读操作的实现代码如下:


    为了验证上述的程序,在按照图4连接电路后,可以选择读取TRF7960的09h、0Ah、0Bh寄存器单元的内容,这3个寄存器在系统上电时,分别默认内容为0x11、0x40、0x87。定义一个数组 Operation[O]=0x09;Operation[1]=0x0A;Operation[2]=0x0B;调用函数 SingleRead(Operation,3);即可得到3个寄存器的内容并存放在Operation数组中。在RFID门禁系统的开发中,就是采用了这种SPI通信方式实现了ARM对RFID阅读器芯片的访问控制。

结语
    本文通过介绍ARM芯片与TRF796x之间的硬件SPI通信方式,说明了在进行SPI器件之间通信时应该注意的问题,强调工作时序在通信时的重要性,最后给出的程序在RFID门禁系统中得到了运用。论文研究对ARM与其他SPI器件之间的通信有一定的参考意义,只要根据SPI器件的工作时序进行稍加修改就能融会贯通。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

据《日经新闻》报道,软银旗下英国芯片制造商Arm计划到2025年销售AI芯片。该公司专门成立一个AI芯片部门,并将在2025年春季之前制造出原型产品,并于秋季开始大规模生产。

关键字: 软银 AGI ARM AI芯片

业内消息,近日日本软件银行集团(SoftBank Group)旗下安谋国际科技公司(Arm)计划研发人工智能(AI)芯片,先成立一个AI芯片部门,目标是明年春季建立AI芯片原型产品,然后将量产工作交由代工厂制造,预估20...

关键字: ARM AI芯片

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

业内消息,近日新加坡 RF GaN(射频氮化镓)芯片供应商 Gallium Semiconductor(加联赛半导体)突然终止业务并解雇所有员工,包括位于荷兰奈梅亨的研发中心。

关键字: 芯片 射频 氮化镓 Gallium RF GaN

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS
关闭
关闭