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

这篇具有很好参考价值的文章主要介绍了终于有人将TWI(串行通讯接口)给讲通了!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

TWI的特性

数据传输格式 

时钟同步 

数据仲裁

功能描述

 总线接口单元

频率生成单元

地址匹配单元

控制单元

传输模式

主机发送模式

 主机接收模式

 从机发送模式

 从机接收模式


TWI的特性

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

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

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

数据传输格式 

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

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

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

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

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

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

时钟同步 

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

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

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

数据仲裁

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

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

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

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

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

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

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

2、终止条件和数据;

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

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 文章来源地址https://www.toymoban.com/news/detail-637899.html

功能描述

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 总线接口单元

   总线接口单元包括数据和地址移位寄存器(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通讯的四种主要模式,并对所有可能的状态码进行了描述。下图中有如下缩写:

   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。

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 主机接收模式

   主机接收模式中,主机从从机接收一系列数据。为进入主机接收模式,一个开始条件,随后一个从机地址+读控制字(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。

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 从机发送模式

   从机发送模式中,从机发送一系列数据到主机。为初始化从机发送模式,必须对控制寄存器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状态。

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 从机接收模式

   从机接收模式中,从机从主机接收一系列数据。为初始化从机接收模式,必须对控制寄存器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从总线隔离。

twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 twi通讯,嵌入式,单片机,通讯模式,单片机,嵌入式硬件

 

到了这里,关于终于有人将TWI(串行通讯接口)给讲通了!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算与数字化转型的关系,终于有人讲明白了

    导读: 云计算与数字化转型是相辅相成的关系。 作者:阿里云智能-全球技术服务部 来源:大数据DT(ID:hzdashuju) 01 云计算带来的重大变化 通过数据提升效率、降低成本、进行业务创新,这个想法不是第一天出现,在大型机、小型机时代就已经出现了这种观点。那个时候,

    2024年01月25日
    浏览(39)
  • 终于有人把腾讯云轻量服务器“月流量”说明白了

    腾讯云轻量服务器月流量什么意思? 月流量是指轻量服务器限制每月流量的意思,不能肆无忌惮地使用公网,流量超额需要另外支付流量费,上海/广州/北京等地域的轻量服务器月流量不够用超额部分按照0.8元/GB的价格支付流量费 。阿腾云atengyun.com来详细说下腾讯云轻量应用

    2024年02月07日
    浏览(46)
  • 什么是AB实验?能解决什么问题?终于有人讲明白了

    导读: 走向身边的AB实验。 作者:木羊同学 来源:大数据DT(ID:hzdashuju) “AB实验”是一个从统计学中借来的工具。我和大家一样,每次只要看到“统计学”这三个字,下意识就觉得这事和我没啥关系,然后手就忍不住想要点击下一条文章。不过且慢,开篇我说AB实验是一

    2024年02月10日
    浏览(42)
  • 终于有人把VMware虚拟机三种网络模式讲清楚了!

    你们好,我的网工朋友。 前段时间 VMware 更新了,你用上最新版了吗? 有几个网工朋友留言说,在操作中遇到过各种各样的问题。比如说由于公司服务器重启导致出现下面的问题: 在Xshell里连接虚拟机映射时连接失败;能够连接上虚拟机的映射地址,但git pull时报错无法解析

    2024年02月06日
    浏览(40)
  • 终于有人把大数据、云计算技术架构与实践技术讲明白了

    大数据云计算正在快速发展,相关技术热点也呈现百花齐放的局面,业界各大厂商纷纷制定相应的战略,新的概念、观点和产品不断涌现。 大数据和云计算作为新一代IT技术变革的核心,必将成为广大学生、科技工作者构建自身IT核心竞争能力的战略机遇。因而作为高层次IT人才,学

    2024年04月11日
    浏览(54)
  • GPT现状终于有人讲清楚了!OpenAI大牛最新演讲爆火,还得是马斯克钦点的天才

    量子位 | 公众号 QbitAI 继Windows Copilot发布后,微软Build大会热度又被 一场演讲 引爆。 前特斯拉AI总监Andrej Karpathy在演讲中认为 思维树(tree of thoughts) 与AlphaGo的 蒙特卡洛树搜索(MCTS) 有异曲同工之妙! 网友高呼:这是关于如何使用大语言模型和GPT-4模型的最详尽有趣的指南

    2024年02月07日
    浏览(63)
  • JAVA各种系统架构图及其简介,终于有人把Java程序员必学知识点全整理出来了

    1.spring架构图 Spring是一个 开源 框架,是为了解决 企业 应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受

    2024年04月29日
    浏览(61)
  • 动画图解常见串行通讯协议:SPI、I²C、UART、红外分析

    一、 SPI传输                                                          图1:SPI 数据传输                                                      图1.2:SPI数据传输(2) ​                                                 图1.3: SPI时序信号 二、 I²C传输 图

    2024年02月03日
    浏览(31)
  • 【OpenCV+Tkinter项目】同学,你要的OpenCV图像处理小系统已安排,终于有人把OpenCV那些必备的知识点讲透彻了~(太厉害了,已跪)

    OpenCV – 开源计算机视觉 。它是计算机视觉和图像处理任务中使用最广泛的工具之一。它被 用于各种应用,如面部检测、视频捕捉、跟踪移动物体、对象公开。如今应用在 Covid 中,如 口罩检测、社交距离等等。 今天让我们从零开始学习 OpenCV的入门小知识吧!🙌 粉丝白嫖源

    2024年02月01日
    浏览(31)
  • 为什么串行接口速率比并行接口快?

    串行接口的速率会比并行快,可以从下面四个方面考虑: ①高速串口不需要时钟信号来同步数据流,也就没有时钟周期性的边沿,频谱不会集中,所以噪声干扰少很多。 以PCIE和SATA为例,时钟信息通过8b/10b编码已经集成在数据流里面,数据本身经过加扰,绝对不可能有多于

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包