终于有人将TWI(串行通讯接口)给讲通了!

news2024/11/26 19:40:25

目录

TWI的特性

数据传输格式 

时钟同步 

数据仲裁

功能描述

 总线接口单元

频率生成单元

地址匹配单元

控制单元

传输模式

主机发送模式

 主机接收模式

 从机发送模式

 从机接收模式


TWI的特性

  • 两线模式,简单快捷;
  • 支持主机模式和从机模式;
  • 允许发送数据和接收数据;
  • 支持多主机通讯的仲裁功能;
  • 具有低电平总线超时判断;
  • 在空闲模式可唤醒系统;
  • 地址可编程;

    TWI串行总线采用两根线(SDA和SCL)在总线和装置之间传递信息。 一些芯片符合这个通讯协议的总线规范,自动对字节进行传输进行处理,并对串行通讯进行跟踪。TWI时钟为系统的时钟,典型TWI通讯如下图所示,最高可以支持128个不同的期间进行通讯。

数据传输格式 

    数据传输中数据线上的每一个位的传输均需要时钟线上的脉冲。在时钟高电平是数据线应该保持稳定,但是始发条件和终止条件时不需要遵守这个规定。
    和IIC通讯协议相似,TWI定义了两个特殊的波形:起始条件和终止条件。在时钟线为高电平的时候数据线的下降沿定义为起始条件和终止条件之间,总线定义为“busy”状态。其他主机不应该去试图发起传输。在“busy”状态下,如果主机再一次发送起始条件,那么就定义为“重复起始条件”,表示主机不放弃总线的情况下开始一次新的传输。发送重复起始条件后,总线仍处于“busy”状态,一直到总线出现终止条件。

   所有的数据包(包括地址包)均有9位组成,包括1个字节和一个应答位。主机负责发出时钟和起始以及终止条件,接收这负责给出应答信号。接收者通过在第九个时钟脉冲处将数据线拉低发出“应答”信号;或维持第九个脉冲处维持高电平表示“不应答”信号。当接收放接收到最后一个字节,或因为某种原因没有继续接收数据的时候,应回应“不应答”信号。TWI采用从高到低诸位进行传输。

   一次传输通常包括一个起始条件,地址+读写位,一个或者多个数据包和一个终止条件。仅仅包含起始条件和终止条件的数据格式是不合通讯规则的。值得注意的是“线与”结构给主机和从机之间的握手信号提供了方便。当主机相对太快或者从机需要处理其他事物的时候,从既可以通过拉低时钟线的低电平时间,从而降低通讯频率。从机可以拉低时钟线的低电平周期但不会影响到时钟线高电平的周期。

当产生应答信号的时候,拉低SDA信号线。中断标志位置起期间,拉低SCL信号线,释放SDA信号线。中断处理完毕 后清楚TWINT标志,释放SCL信号线。

时钟同步 

   当多个主机同时希望控制总线的时候,总线将一句“线与”原则决定时钟线高低电平。对于所有参与传输的主机来说,定义清楚每一个时钟脉冲的起始是相当重要的。

   时钟线电平的由高到低跳变导致所有参与传输的钱开始低电平计时。每一个期间及时到达自己低电平要求释放时钟线,早时钟线变为高电平之前进入高电平等待期;当所有期间均计满低电平周期,时钟线才变为高电平。之后所有期间开始对高电平进行计时,第一个计满高电平周期的期间将拉低时钟线,进入下一个时钟周期。

数据仲裁

   主机只有在总线处于空闲状态的时候才能开始一次传输。两个或者多个主机可能在最小保持时间内同时发送起始条件,从而在总线上只看到一个起始条件。

   由于发送起始条件的主机无法知道是否有其他主机在竞争总线,只能靠时钟高电平是读数据先的仲裁判断哪个主机占用总线。当有主机传输低电平的时候,传输高电平的主机将失去仲裁必须放弃总裁。

    失去仲裁的主机将继续发送时钟,直到当前传输字节发送完毕。当两个主机同时访问一个从机的时候,可能会顺利通过地址阶段,在传输数据的时候将继续进行仲裁。这种机制要求所有的TWI器件在进行数据传输的时候可以检测数据线上的真实状态。

    如果这个主机同时开启了从机模式,在发送地址阶段失去仲裁后应检测线上的地址是否与自己相匹配;如果是对自己的访问,应立即切换到从机模式,接收信息。

    每次传输中,仍要检测线上的“重复起始条件”,当检测到并非自己发出的“重复起始条件”时,应立即退出当前传输。

仲裁不应发生在如下的情况:

1、重复起始条件和数据;

2、终止条件和数据;

3、重复起始条件和终止条件.

 

功能描述

 总线接口单元

   总线接口单元包括数据和地址移位寄存器(TWIDAT),开始/终止条件控制器,仲裁和总线超时检 测单元。 寄存器TWIDAT存储了即将发送的数据或地址和接收到的数据和地址。 开始/终止条件控制器负责发送和检测总线上的开始条件,重复开始条件和终止条件。 如果SH79F6441已经作为主机开始一次传输,仲裁单元将始终检测是否有仲裁发生。当失去仲裁时,控制单元可以进行合 适的动作,并产生相应的状态码。 SH79F6441在传输数据/地址时,必须在SCL由低跳高前维持数据稳定。 SH79F6441在传输ACK/NACK时,在SCL由低跳高后产生TWINT中断,并在SCL由高跳低时拉低SCL,在TWINT中断清零 时释放SCL。 SH79F6441在传输ACK/NACK信号时,若TWINT已被清零,SCL仍为高电平时,SDA产生跳变,则重新产生TWINT中断, 状态为00H。SH79F6441当前通讯终止,该状态与普通00H状态处理一致。 SH79F6441在传输ACK/NACK信号时,若TWINT未被清零,SCL仍为高电平时,SDA产生跳变,则状态直接切换到00H, 不会再次产生中断。SH79F6441作为从机进入该状态,则当前通讯终止,可发生STA开始主机传输,或重新接受STA+ADR对 自己地址的访问。SH79F6441作为主机进入该状态,则当前通讯终止,可发生STA开始主机传输,或重新接受STA+ADR对自 己的访问。 SH79F6441在当前通讯终止后,不会再参与当前传输。SH79F6441若作为主机存在,请开启EFREE功能,防止进入逻辑 死区。 SH79F6441规定总线维持高电平超过TFREE = TSYS X TWTFREE X 256(必须保证TFREE大于tSCL/2(tSCL为时钟线的周期)) 所定义的系统时钟个数时为“空闲”状态,释放总线。该功能仅适用于一个数据包传输过程中(8+1个位)。SH79F6441处于 从机发送模式,且所传输的第一个字节为低电平时适用该功能。起始条件(STA、RSTA)不适用于该功能。SH79F6441产生 中断,寄存器TWICON中的TFREE会被置位(如果控制位EFREE已置位)。 如果时钟线SCL被从机拉低时,通讯会暂时中止;而主机也没有办法将时钟线拉高。为解决此问题,TWI协议规定参与传 输的所有器件,将时钟线维持低电平超过N X TSYS(N值由TWITOUT寄存器决定)所定义的时钟个数时为“总线超时”,寄存 器TWICON中的TOUT会被置位(如果控制位ETOT已置位)。

频率生成单元

   在主机模式下,可以通过寄存器TWICON的CR[1:0]分频系数以及TWIBR寄存器来设定通讯的频率。

地址匹配单元

  地址匹配单元检验所收到的地址是否与寄存器TWIADR中的七位地址相匹配。如果通用地址使能拉GC被置位,也将检测是否与通用地址00H相匹配。当地址匹配的时候,控制单元将产生·1合适的动作以及相应的状态码。

控制单元

    控制单元监视TWI总线,并依据控制寄存器TWICON的设置进行相应的回应。当TWI总线有需要应用层注意的事件时,TWI 中断标志被置起,标明当前事件的状态码会被写入状态寄存器TWISTA。状态寄存器TWISTA只表示TWI通讯中断产生时的通讯 状态信息;其它情况下状态寄存器内是一个用于表示没有有效状态码的状态码。在中断清除之前,时钟线将维持低电平。应用 软件可在处理完任务后才允许TWI通讯继续。

传输模式

     TWI通讯是以字节为基础和中断驱动的通讯总线。诸如接收到一个字节或发送一个开始条件的所有总线事件均会产生一个 中断。所以在字节传输期间,应用软件可以进行其它的操作。需注意的是,控制寄存器TWICON中的TWI使能位ENTWI和中断 控制寄存器IEN0中的所有中断控制位EA和TWI中断控制位ETWI将共同决定TWI中断标志TWINT被置位时是否会产生中断。如 果ETWI或EA未置位,应用软件必须对TWINT标志进行枚举检测才能知道是否有TWI事件发生。 当TWINT位置起时,表示一次TWI传输已完成,等待应用软件的回应,此时状态寄存器TWISTA包含了当前的状态。应用 软件可通过寄存器TWICON和TWISTA决定TWI进行哪种通讯。 下面将分别介绍TWI通讯的四种主要模式,并对所有可能的状态码进行了描述。下图中有如下缩写:

   

 圆形用于表示中断标志已被置起。其中的数字表示当前状态寄存器TWISTA中被掩去低三位的状态码。在TWINT被清除之 前,TWI通讯会暂停,应用软件必须决定是继续通讯还是终止当前传输。对每一个状态码,所需要的软件动作和随后的传输细 节均有描述。

主机发送模式

   主机发送模式中,主机发送一系列数据到从机。为进入主机发送模式,一个开始条件,随后一个从机地址+写控制字(SLA+W) 地址包表示进入主机发送模式(MT)。 通过设置控制寄存器TWICON中的ENTWI和STA,清除STO和TWINT,TWI逻辑将检测TWI总线并在允许时发出一个开始 条件(STA)。当开始条件(STA)传输完毕,通讯中断(TWINT)被置起,状态寄存器(TWISTA)为08H,中断服务程序 应将从机地址和写控制字(SLA+W)写入数据寄存器TWIDAT。在开启下一个传输前清除TWINT标志。 当从机地址和写控制字传输完毕并收到一个“应答”信息时,中断(TWINT)被置起,状态寄存器TWISTA中有几个可能 的状态:对主机模式有18H,20H和38H,对从机模式有68H,78H和B0H。

 

 主机接收模式

   主机接收模式中,主机从从机接收一系列数据。为进入主机接收模式,一个开始条件,随后一个从机地址+读控制字(SLA+R) 地址包表示进入主机接受模式(MR)。 通过设置控制寄存器TWICON中的ENTWI和STA,清除STO和TWINT,TWI逻辑将检测TWI总线并在允许时发出一个开始 条件(STA)。当开始条件(STA)传输完毕,通讯中断(TWINT)被置起,状态寄存器(TWISTA)为08H,中断服务程序 应将从机地址和读控制字(SLA+R)写入数据寄存器TWIDAT。在开启下一个传输前清除TWINT标志。 当从机地址和写控制字传输完毕并收到一个“应答”信息时,中断(TWINT)被置起,状态寄存器TWISTA中有几个可能 的状态:对主机模式有40H,48H和38H,对从机模式有68H,78H和B0H。

 

 从机发送模式

   从机发送模式中,从机发送一系列数据到主机。为初始化从机发送模式,必须对控制寄存器TWICON和地址寄存器TWIADR 进行初始化:置位控制寄存器TWICON中的ENTWI和AA,清除STA、STO和TWINT;地址寄存器TWIADR中高7位为SH79F6441 准备相应的地址。如果GC置位,SH79F6441也将响应通用地址(00H);否则将不响应通用地址。 在TWIADR和TWICON初始化后,SH79F6441将等待总线对自己地址或通用地址(如果GC被置位)的响应。如果方向标 志位是“读”,则TWI进入从机发送模式,否则将进入从机接收模式。在地址和读标志位接收完毕后,中断标志(TWINT)置 位,状态寄存器TWISTA有效。 在传输中,如果将应答使能位“AA”清零,TWI将传送最后一个字节,并依据主机接收方发送的应答或不应答信息位进入 C0H或C8H状态。总线将切换到非地址从机模式,不在响应主机传输。从而主机接收方将接收到一串“1”。最后一个字节发送 完毕后,如果主机仍需额外的数据(传输“应答”信号),则进入C8H状态。

 

 从机接收模式

   从机接收模式中,从机从主机接收一系列数据。为初始化从机接收模式,必须对控制寄存器TWICON和地址寄存器TWIADR 进行初始化:置位控制寄存器TWICON中的ENTWI和AA,清除STA、STO和TWINT;地址寄存器TWIADR中高7位为SH79F6441 准备相应的地址。如果GC置位,SH79F6441也将响应通用地址(00H);否则将不响应通用地址。 在TWIADR和TWICON初始化后,SH79F6441将等待总线对自己地址或通用地址(如果GC被置位)的响应。如果方向标 志位是“写”,则TWI进入从机接收模式,否则将进入从机发送模式。在地址和写标志位接收完毕后,中断标志(TWINT)置 位,状态寄存器TWISTA有效。 在传输中,如果将应答使能位“AA”清零,TWI将接收最后一个字节并回应“不应答”信息。回应“不应答”可以表示当 前从机无法接收更多字节。当AA = 0时,SH79F6441无法回应对自己地址的访问;但仍然监视总线状态,并可以通过AA = 1恢 复对自己地址的相应。可以通过AA = 0暂时将SH79F6441从总线隔离。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「科普」如何评价供应商的MES系统

MES综合性很强,涉及到多个业务领域、多种技术和多专业,如何写好最难的投标技术方案呢?简搭(jabdp)根据多年经验,为大家进行梳理和分解,帮助发愁的你写出好方案! MES是一个综合性很强的系统: 生…

68 - 令人迷惑的写法

---- 整理自狄泰软件唐佐林老师课程 1. 写法一 下面的程序想要表达什么意思? 1.1 历史原因 早期的C直接复用class关键字来定义模板 但是泛型编程针对的不只是类类型 class关键字的复用使得代码出现二义性 1.2 typename诞生的直接诱因 自定义类类型内部的嵌套…

猿如意|手把手教你下载、安装和配置PyCharm社区版

手把手教你使用猿如意下载、安装和配置PyCharm社区版,希望能帮助到有需要的童鞋。 文章目录前言一、下载安装猿如意二、安装PyCharm社区版1.通过猿如意找到PyCharm下载位置2.安装PyCharm三、对PyCharm社区版进行简单设置1.设置PyCharm社区版为中文2.安装第三方Pytho…

数据同步,还看Canal

一个系统最重要的是数据,有时对于一个业务场景,不单单是把数据保存在数据库中,还需要同步保存在ES,Redis等等中。这时阿里开源组件Canal由此而生,它可以同步数据库中的增量数据保存到其它存储应用中。 一、介绍 canal…

航空专场 | 无人机设计仿真流程讲解与案例实操

一、CFD在无人机上的应用 1、静、动气动系数计算以上介绍的无人机的流动状态一般为中低雷诺数,不可压缩流动。这些计算一般用S-A模型或者KW-SST模型进行计算,能够获得不错的工程精度。静、动气动力系数主要用于无人机操纵性和稳定性的分析,评…

串口 COM口,并口 LPT口,RS232、RS485、CAN

RS232 和 RS485 的区别 工作模式:RS232 为全双工,RS485 为半双工。 传输方式:RS485和RS232只是物理协议的通信(即接口标准),RS485是差分传输方式,RS232是单端传输方式,但通信程序没有…

RabbitMQ_五种模式

1.Simple("Hello World") 构成:生产者、消费者、消息队列 配置类 构造函数参数:name durable exclusive autoDelete 仅创建队列,不创建交换机,也不进行队列和交换机的绑定 注:配置类置于生产者端或消费者…

如何处理 Angular 单页面应用里的 a 标签,避免点击后重新加载整个应用

问题描述 客户已经实现了一些“free html”组件&#xff0c;它是 HTML 的标题和包装器&#xff0c;与 OCC 响应一起作为内容。 <div [innerHTML]"data?.content | safeHtml"></div>这个 HTML 里包含了 anchor element&#xff1a; <div class&quo…

Linux源码——目录作用

Linux Linux是啥&#xff0c;不用多说&#xff0c;其源码结构也非常清晰。有以下理解&#xff1a; arch 每个系列的CPU都有一个对应的文件夹&#xff0c;里面包含每种CPU具体的操作&#xff0c;单独具体粗来每种CPU独有的管理或者操作。其他的文件夹都是通用的操作。 arch (…

孤核函数-isolation kernel

1.孤立核 一看到核函数&#xff0c;我们第一时间想到的就是核函数通过升维或者降维的方式来计算数据之间的相似度。他在SVM和聚类算法中应用广泛。 我们就直入主题来看一下孤核函数的数学推导。 在d维的空间分布着n个点。数学表达式为. 如图&#xff1a;一共20个点分布在2维空间…

浅析linux内核网络协议栈--linux bridge

1 . 前言 本文是参考附录上的资料整理而成&#xff0c;以帮助读者更好的理解kernel中brdige 模块代码。 2. 网桥的原理 2.1 桥接的概念 简单来说&#xff0c;桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是&#xff0c;其中一个网口收到的报文会被复制给其他…

深入了解BLE(Bluetooth 5.3)持续更新...

目录 1 BLE的优点和局限性 1.1 BLE与经典蓝牙的区别 1.2 局限性 1.2.1 数据吞吐量 1.2.2 范围 1.3 BLE优势及应用 1.4 BLE的角色 1.5 BLE的层次结构 1.5.1 物理层&#xff08;PHY&#xff09; 1.5.2 链路层 1.5.2.1 数据包格式 1.5.2.2 状态机 1.5.2.3 设备地址 …

PTA_1164 Good in C_模拟

PTA_1164 Good in C_模拟 1164 Good in C 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 When your interviewer asks you to write "Hello World" using C, can you do as the following figure shows? Input Specification: Each input file conta…

STM32实战总结:HAL之FSMC控制TFT-LCD

什么是FSMC&#xff1f; FSMC(Flexible Static Memory Controller&#xff0c;可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势&#xff0c;可根据系统的应用需要&#xff0c;方便地进行不同类型大容量静态存储器的扩展。 …

计算机网络 HTTP

概念 Web 基础 HTTP &#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;。WWW &#xff08;World Wide Web&#xff09;的三种技术&#xff1a;HTML、HTTP、URL。RFC&#xff08;Request for Comments&#xff0c;征求意见书&#xff09;&#…

HTTP DDOS攻击有什么类型和特点?

一、攻击类型 1、 HTTP floods 该攻击类型分为HTTP GET request floods和HTTP POST request floods两种形式&#xff0c;第一种攻击者通过构造HTTP GET请求报文&#xff0c;向目标服务器发送针对特定资源的大量请求&#xff1b;一条HTTP请求的成本很低&#xff0c;但是目标服…

力扣(LeetCode)124. 二叉树中的最大路径和(C++)

深度优先遍历 自底向上的递归。 对于二叉树&#xff0c;我们令每个结点作为 LCALCALCA (最近公共祖先)&#xff0c; 结点 uuu 作为 LCALCALCA &#xff0c; 经过它的最大路径 往左子树的最大路径 往右子树的最大路径 它自己的路径 。 有 ansmax(ans,vulrans max(ans,v_ul…

MobPush 厂商通道SDK集成指南

开发工具&#xff1a;Android Studio 集成方式&#xff1a;Gradle在线集成 安卓版本支持&#xff1a;minSdkVersion 19 集成准备 MobPush快速集成 在使用厂商通道之前&#xff0c;请确保您已申请MobTech开发者账号并已按照MobPush快速集成文档进行集成&#xff0c;本篇文档将…

POI实现Excel导入和导出(源码测试)

因为实际开发中很多需求都需要实现Excel批量导入和导出&#xff0c;所以今天就来写一个后端demo实现Excel的导入和导出。 需求&#xff1a; Excel的导入 1对文件路径为D:\Users\Mixi\IdeaProjects\javapoi-anli\product-test.xlsx 的Excel文件导入到数据库&#xff1b; Excel的…

SAP 采购订单免费标识自动勾选的判断依据

SAP采购订单的免费标识没有专门的字段存储,是根据发票收据和项目类别计算出来的 写程序的时候折磨判断呢? 1.EKPO-REPOS <> ‘X’ AND EKPO-PSTYP <> ‘2’ AND EKPO-PSTYP <> ‘7’ &#xff0c;则系统会自动勾选上这个免费项目 2.如果要求不是很精密&…