欢迎来到球速体育·(中国)官方网站QIUSU SPORTS!

CSS

当前位置: 球速体育·(中国)官方网站 > 网页制作 > CSS

SPI协议详解(以ADS1118为例)

时间:2024-08-10 06:22:07|栏目:CSS|点击:

  球速体育最近要写一个协议,所以再复习一次SPI。(存草稿太久了,再不发就忘了)一开始先分析了SPI的协议特点,使用ADS1118这个器件作为承载物进行分析,后面用逻辑分析仪从位到字节进行解码,最后使用TI给的demo移植到STM32平台。SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。 各家的名字可能不一样,反正你就看传输方向就行。

  这个是时序图,因为是双向的传输,在主机发给从机这段时间,从机也是发数据的,但是相当于乱发无意义的:

  另外:密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。

  关于时间的标注,这也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。

  因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。

  外部12MHz晶振,指令周期就是一个时钟周期为(1/12MHz)us,所以至少确定了它执行一条指令的时间是us级别的。我们看到,以上给的时间参数全部是ns级别的,所以即便我们在程序里不加延时程序

  这个样子的意思是,数据有高有低,靠后的线是数据输出,前面是数据准备。或者是被锁定

  给MCU的数据中,一个大的时钟周期由32个小周期组成,两个字节来说明转换的结果,也就是本身的数据,MSB在前。后面两个是寄存器的回读,这里我理解是把输出的控制命令又回流一次。

  DIN是MCU给器件的信息,MSB+LSB发一次,剩下二分之一如果你不变化,就可以让这个DIN的引脚在后一个周期里面一直低或者高都可以。

  这个是输出16位值的寄存器的样子,0~15,上面每一位都是一个0或者1,一次16位。

  这个是配置的寄存器,从0开始写,一直配好到15,组成一个16位的序列,发送。

  数据手册里面的写法是倒着来,先15,说这个寄存器的位置在15,名字叫SS,可以读可以写,重启之后是0h,描述是断电的时候设置一次,在转换过程中换不了。

  扩展SPI还增加了SDR(Single Data Rate)和DDR(Double Data Rate)两种模式。在标准SPI 协议的SDR 模式下,只在SCK 的单边沿进行数据传输,即一个SCK 时钟只传输一位数据;而在DDR 模式下,会在SCK 的上升沿和下降沿都进行数据传输,即一个SCK 时钟能传输两位数据,传输速率提高一倍。

  没问题,可以看到时序图内在CLK的上下沿,数据线上的电平确实是稳定的,可以读取。

  1. 2-bit Dual SPI模式2-bit Dual SPI模式,也称为Dual SPI模式,是标准SPI的一个变体,它使用两条数据线(通常是MOSI和MISO)同时传输数据。在此模式下,数据在时钟信号的上升沿和下降沿同时被发送和接收,使得数据吞吐量相比单线SPI翻倍。它只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flash,全双工并不常用,因此扩展了mosi和miso的用法,让它们工作在半双工,用以加倍数据传输。也 就是对于Dual SPI Flash,可以发送一个命令字节进入dual mode,这样mosi变成SIO0(serial io 0),mosi变成SIO1(serial io 1),这样一个时钟周期内就能传输2个bit数据,加倍了数据传输。

  数据速率:相比于标准SPI,数据传输速率翻倍,因为它同时使用两条线传输数据。

  使用场景:适用于需要比标准SPI更高数据传输率但又不需要四线Quad SPI的场景。

  2. DDR SPI模式DDR SPI(双数据率SPI)模式在每个时钟周期的上升沿和下降沿都进行数据传输。这意味着在每个时钟脉冲上,都可以发送或接收数据,从而有效地加倍了数据传输速率。这种模式通常用于高速数据采集系统中。

  数据速率:数据速率是标准SPI的两倍,因为它在时钟的上升沿和下降沿都传输数据。

  区别 数据传输方式:Dual SPI利用两条数据线在时钟的每个边沿传输数据;而DDR SPI可能只使用一条数据线,但在每个时钟的上升沿和下降沿都传输数据。复杂性:DDR SPI通常在实现上更复杂,因为它要求在时钟的每个边缘精确控制数据的采样和输出,这对时钟同步提出了更高的要求。效率:尽管两者都提高了数据传输速率,但在具体实现和系统兼容性方面,它们各有优势和局限。如果你的设计对时钟同步的要求极高,可能会更倾向于使用Dual SPI而不是DDR SPI,因为后者需要更精确的控制和可能导致的时钟偏差问题。相反,如果需要极高的数据传输效率,DDR SPI可能是更好的选择。

  Hi-Z是数字电路常见术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。高阻态: 高阻态的实质电路分析时高阻态可做开路理解。

  手边还有一个ESP32-C3的单片机,这个是它的数据手册,有三个SPI,或者是一个SPI配六个CS线。

  外部焊盘,通过MUX,多路转换到接口上面,可以走DMA或者Cache到CPU,等等,之后再说。

  SPI 主机驱动允许总线上连接多个设备(共享单个 ESP32-C3 SPI 外设)。每个设备仅由一个任务访问时,驱动程序线程安全。反之,若多个任务尝试访问同一 SPI 设备,则驱动程序非线程安全。

  当传输事务数据等于或小于 32 位时,为数据分配一个缓冲区将是次优的选择。

  SPI 主机逐字节地将数据读入和写入内存。默认情况下,数据优先以最高有效位 (MSB) 发送,极少数情况下会优先使用最低有效位 (LSB)。如果需要发送一个小于 8 位的值,这些位应以 MSB 优先的方式写入内存。例如,如果需要发送 0b00010,则应将其写成 uint8_t 变量,读取长度设置为 5 位。此时,设备仍然会收到 8 位数据,并另有 3 个“随机”位,所以读取过程必须准确。传输速度主要有以下三个限制因素:

  影响大传输事务传输速度的主要参数是时钟频率。而多个小传输事务的传输速度主要由传输事务间隔时长决定。

  这里的解码有几个层级,首先是bit级别,就是0,1,接着是转换,就是0,1拼成别的进制数据。还有就是转换成数据。

  有八个上升沿,也就是8个0,也就是下面的00.是转换的层级,8个字节是一位-00.

  我们的工作是要在代码里面实现STM32的SPI接口移植,然后在线测量所有的参数来更加详细的学习SPI。

  NSS管脚及我们熟知的片选信号,作为主设备NSS管脚为高电平,从设备NSS管脚为低电平。当NSS管脚为低电平时,该spi设备被选中,可以和主设备进行通信。在stm32中,每个spi控制器的NSS信号引脚都具有两种功能,即输入和输出。所谓的输入就是NSS管脚的信号给自己。所谓的输出就是将NSS的信号送出去,给从机。对于NSS的输入,又分为软件输入和硬件输入。软件输入: NSS分为内部管脚和外部管脚,通过设置spi_cr1寄存器的ssm位和ssi位都为1可以设置NSS管脚为软件输入模式且内部管脚提供的电平为高电平,其中SSM位为使能软件输入位。SSI位为设置内部管脚电平位。同理通过设置SSM和SSI位1和0则此时的NSS管脚为软件输入模式但内部管脚提供的电平为0。若从设备是一个其他的带有spi接口的芯片,并不能选择NSS管脚的方式,则可以有两种办法,一种是将NSS管脚直接接低电平。另一种就是通过主设备的任何一个gpio口去输出低电平选中从设备。硬件输入: 主机接高电平,从机接低电平。

  操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上有用的内容提取,掌握。介于中国目前的芯片设计能力有限,所以大部分的器件都是外国几个IC巨头比如TI、AT、MAXIM这些公司生产的,器件资料自然也是英文的多,所以,英文的基础要在阅读这些数据手册时得到提高哦。即便有中文翻译版本,还是建议看英文原版,看不懂时不妨再参考中文版,这样比较利于提高。 我们首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装,所以器件手册只给出了引脚的功能数据表: 我们只需要关注以下几个管脚: 3脚:VL,液晶显示偏

  ? /

  简介: 串行外围设备接口 全双工三线同步,可以同时发出和接收串行数据 采用主从(Master Slave)架构,支持多Slave模式应用,一般仅支持单Slave 时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后 目前应用中可以达到几Mbps的水平 优点:与普通的串行设备相比,可以按位传输,甚至可以暂停。当没有时钟跳变时,从设备不采集和传送数据。不需要寻址操作。全双工通信。 缺点:没有应答机制确认。 特点: 提供频率可编程时钟 发送结束、中断标志;写冲突保护 总线竞争保护 SPI总线种工作方式中,使用最广泛的是SPI0和SPI3方式 - - - - - - - - - -

  与应用实例 /

  SPI主要有四根线,分别是信号线SCLK,主机输入从机输出MISO,主机输出从机输入MOSI,以及一个片选信号/CS。SPI通信还支持全双工通信,即可以同时接受和发送数据,因为MISO和MOSI是两条不同的线。 SPI同样支持连接多台设备,但是要分时操作,当操作某台设备时,将这个设备的片选引脚拉低表示选中,完成操作后再释放引脚。 所有设备的时钟线和两条数据线则是共用的,只是通过片选引脚来决定何时使用何设备。 SPI支持四种不同的传输模式,分别是SPI MODE0,1,2,3,我们经常使用的是MODE0和3,这是因为使用这两个模式时,都是在上升沿采样数据,可以不用过多的关注SCLK的电平。 SPI支持四种不同的传输模

  介绍_P /

  详解

  PADS VX2.7小白零基础入门PCB Layout设计52讲实战课程

  STM32H7R/S 高性能MCU 开启全新的创新机遇!答题好礼~还有开发板等你拿!

  下载MPS汽车电机控制技术干货,赢【Keep体脂秤、自动洗手机套装、小米保温杯】,开启汽车技术进阶之旅!

  下载信息娱乐系统精品文章,赢【米家台灯、小米保温杯、米家蓝牙温湿计】,开启MPS汽车技术进阶之旅!

  得捷第二季Follow me第2期来袭,一起解锁功能强大且灵活的【Arduino UNO R4 WiFi】

  ADI & WT ·世健 MCU 痛点问题探索季 ——第一站:征集 使用 MCU ,哪些问题最令你头大?

  有奖直播 电气隔离新势力:英飞凌新型SSI系列固态隔离器的创新技术与应用设计

  【下载】LAT1415 如何通过STM32CubeMX添加使用DSP库

  【下载】LAT1437 选择USBX模块生成USB CDC ACM无PD的项目

  【下载】LAT1421 如何在STM32U5 TF-M工程中添加自定义服务

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【方案】物链一体,构筑可信数字底座|摩联科技基于STM32H5/U5的区块链解决方案

  【应用】实现“单芯片”模式:TouchGFX 4.24 的创新特性解析

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

上一篇:智原与Arm合作提供基于Arm Neoverse CSS的设计服务

栏    目:CSS

下一篇:全方面盘点英国留学生必备的网站!

本文标题:SPI协议详解(以ADS1118为例)

本文地址:http://aihaoedu.com/wangyezhizuo/1195.html

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:88888888 | 邮箱:aihaoedu.com

Copyright © 球速体育·(中国)官方网站 版权所有