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

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

3天内不再提示

基于半双工机制实现3线制双向SPI模块的设计与应用

电子设计 来源:半导体技术 作者:汪永琳, 丁一 2021-06-10 14:58 次阅读

串行外围设备接口SPI(serial peripheralinterface)总线技术是Motorola公司推出的一种微处理器微控制器及其外设间的一种全/半双工同步串行数据接口标准,具有连接线少、传输效率高等特点,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。

SPI接口一般采用4条连接线:串行时钟线(SCK)、主机输出/从机输入数据线(MOSI)、主机输入/从机输出数据线(MISO)和低电平使能的从机选择线(SS),有的还带有中断信号线(INT),半双工或单向模式则不需要主机输出/从机输入数据线(MOSI)。为了在减少引脚的基础上完成主从机的双向通讯,本文采用半双工机制实现了一种3线制双向SPI总线模块,即通过使能信号实现数据传输的方向控制,因此将主机输出/从机输入(MOSI)线和主机输入/从机输出线(MISO)线合并为一条双向信号线。该模块是某射频芯片中的接口模块,其作用是实现基带芯片对射频芯片的控制以及数据交换,而且为了便于和射频电路集成,该模块最终以硬IP形式实现。

1 SPI总线协议

射频芯片的SPI接口具有两个主要特征:Slave工作模式和半双工方式通讯。

SPI接口信号描述如表1。

接口时序要求如下:

1)输出时序

当SEN为高电平时,SPI接口处于输出状态。每次数据传输开始于SCK信号的上升沿。数据传输过程中,数据由SCK信号控制,并遵循下列规则:数据传输时,低位在前,高位在后;每个输出数据位在SCK下降沿采样;当本帧数据输出达到24 bit时,结束数据输出;当本帧数据输出超过24 bit时,则多余位数全为高电平。

2)输入时序

当SEN为低电平时,SPI接口处于输入状态。每次数据传输开始于SEN信号的下降沿,结束于其上升沿。数据传输过程中命令和数据有SCK和SEN信号控制,并遵循下列规则:数据传输时,低位在前,高位在后;每个输入数据在SCK下降沿移入MOSI;当本帧数据输入为24 bit时,当SEN转为高电平时,将已输入的24 bit数据写入RF IC内部寄存器;当本帧数据输入不足24 bit或多于24 bit时,放弃本帧输入,等待下一帧。

射频SPI接口的最大特点就是采用半双工通讯机制,串行数据的输入/输出共用一条数据线,因此SPI接口数据通路的设计和普通的4线制SPI接口完全不同。

2 实现方案

2.1 总体结构

SPI接口电路主要由读/写控制器、串行寄存器组、输出寄存器组和内部定时器四部分构成,如图1所示。

在SPI接口模块中,数据交换的核心是串行寄存器组,读、写控制器根据外部方向选择信号SEN交替控制串行寄存器组的输人和输出。

2.2 串行寄存器组

串行寄存器的作用是接收射频芯片内部状态信息并转换成24 bit串行数据输出,以及接收外部串行控制字输入并转换成30 bit并行数据输入射频芯片,其基本结构如图2所示。串行寄存器组是半双工方式SPI接口设计的核心,输入和输出数据共享此数据通路,必须保证数据传输方向的正确切换。本文采用串行寄存器链+输入选择器方式实现输入和输出数据间的切换。

2.3 读控制器

读控制器的作用是在SEN为高电平的周期内,控制串行寄存器组在第一个SCK上升沿到来时接收指定的24 bit射频芯片内部信号,并将最低位串行输出,然后在剩下的23个时钟周期内将余下的23 bit数据串行输出,读控制器结构如图3所示。

2.4 写入寄存器组

写入寄存器的作用是在SEN信号的上升沿接收串行寄存器组的输出,并将结果写入射频芯片的内部模块。其中射频芯片比较特殊的要求是根据写入控制字第7位选择将串行输入数据的第0~6 bit数据写入两个不同的控制寄存器中的一个,这样,写入寄存器组的输出位数就变成了30 bit,输入为23 bit。输出寄存器的结构如图4所示。

2.5 写控制器

写控制器的作用是在SEN信号的低电平周期内,判断写入数据是否恰好满足24 bit以使能输出寄存器组,另外根据写入数据的第8位控制低7位数据的写入方向(寄存器A或寄存器B)。写控制器的结构如图5所示。

3 实现结果

图6是采用Verilos实现的SPI接口的部分功能仿真波形,测试激励首先将SPI接口置于发送模式下(SEN为高电平),SPI接口将从内部获得的信息码“24’hFFFFFE”正确地串行发出;测试激励再将SPI接口置于接收模式下(SEN为低电平),SPI接口正确接收外部发送的“24’hFFFFF8”,并转换成内部的“30’h3FFC078”。为了保证收发方向切换在一个时钟周期内完成,SEN信号的转换在接口时钟的下降沿完成。通过NC-Verilog仿真,SPI接口功能正确,工作时序符合设计要求。

4 结论

本SPI接口模块已成功应用在一个射频芯片中,以硬IP的形式集成进射频模块中。SPI接口电路在0.18 μm工艺下实现后的版图总尺寸约为240 μm×460 μm,最高工作频率原高于10 MHz的设计上限,相应在10 MHz下的功耗约为2 mW。

责任编辑:gt

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

    关注

    104

    文章

    5525

    浏览量

    167404
  • 微处理器
    +关注

    关注

    11

    文章

    2241

    浏览量

    82241
  • 总线
    +关注

    关注

    10

    文章

    2856

    浏览量

    87879
收藏 人收藏

    评论

    相关推荐

    SPI一根时钟线一根单向数据线可以实现读写从机数据吗?

    和一根双向数据线,在基本结构上是一样的,I2C可以实现半双工通信,SPI是否也能只使用两跟线
    发表于 05-06 06:04

    SPI半双工主从通信

    SPI半双工主从通信
    发表于 08-20 22:59

    nrf24L01 半双工双向传输

    各位大侠,有谁能提供基于nrf24L01的数据半双工双向传输的代码,单向传输我已写好,谢谢!
    发表于 05-19 22:03

    如何采用半双工机制设计3线双向SPI总线模块

    串行外围设备接口SPI(serial peripheralinterface)总线技术是Motorola公司推出的一种微处理器、微控制器及其外设间的一种全/半双工同步串行数据接口标准,具有连接线少、传输效率高等特点,因其硬件功能很强,与
    发表于 07-31 07:06

    请问半双工的485板子怎么下载程序?

    使能的,也支四线线双工,我的设计是将RX+和 TX+短接,RX-和TX-短接,实现线半双工
    发表于 09-27 07:16

    请教SPI半双工模式是如何工作的?

    请教SPI半双工模式是如何工作的?
    发表于 05-31 06:47

    CH573启动半双工模式是否支持硬件单线双向通讯模式?

    单线双向通讯模式?(TX一个引脚同时扮演发送和接收引脚,只用接一根线)还是仅仅内部硬件移位寄存器设置为半双工模式,收和发都还要分别接TX和RX引脚?
    发表于 08-24 07:41

    STM32F746如何实现半双工通信的SPI函数?

    如STM32F746的参考手册所述,发现利用SPI功能进行半双工通信,可以实现图中使用一根数据线(SDA信号)的双向通信。请告诉我具体的控制
    发表于 01-05 08:29

    SPI半双工模式有没有什么特别的技巧?

    我想知道SPI半双工模式有没有什么特别的技巧。据我所知,配置是正常完成的,只有 1 行的方向。谁能给我指出某种形式的示例,以半双工方式设置 SPI,然后通过所述端口
    发表于 01-30 08:06

    可以在Processor Expert上使用LPSPI组件进行半双工SPI吗?

    我需要 S32K142 处理器的 3 线 SPI 配置,我使用 S32 Design Studio v2.2 当前的 SDK(RTM 3.0.0) 是否适用于半双工通信? 我可以在 P
    发表于 05-09 08:46

    AT32F4xx SPI使用半双工模式通讯

    AT32F4xx SPI使用半双工模式通讯演示AT32F403Axx SPI使用半双工模式通讯,其余系列的使用方式与此类似
    发表于 10-27 06:22

    半双工,半双工是什么意思

    半双工,半双工是什么意思 概念及实例: 单工即Simplex Communication,指在通信过程的任意时刻,信息只能由一方A传
    发表于 03-17 16:19 3405次阅读
    <b class='flag-5'>半双工</b>,<b class='flag-5'>半双工</b>是什么意思

    基于MCP200x设计的LIN双向半双工通信方案

    基于MCP200x设计的LIN双向半双工通信方案 This device provides a bidirectional, half-duplex communication physical
    发表于 05-26 16:28 1233次阅读
    基于MCP200x设计的LIN<b class='flag-5'>双向</b><b class='flag-5'>半双工</b>通信方案

    3线半双工SPI接口解决方案

    SPI接口一般采用4条连接线:串行时钟线(SCK)、主机输出/从机输入数据线(MOSI)、主机输入/从机输出数据线(MISO)和低电平使能的从机选择
    发表于 06-08 15:32 1.3w次阅读
    <b class='flag-5'>3</b><b class='flag-5'>线</b>制<b class='flag-5'>半双工</b><b class='flag-5'>SPI</b>接口解决方案

    单工、双工半双工、全双工通信常识

    根据通信双方的分工和信号传输方向可将通信分为三种方式:单工、半双工与全双工。单工通信指通信双方设备中发送器与接收器分工明确,只能在由发送器向接收器的单一固定方向上传送数据,并且不能实现双向
    的头像 发表于 03-31 17:57 6898次阅读