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

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

3天内不再提示

硬件TWI使用及案例说明

中颖电子 来源:中颖电子 2023-02-21 17:41 次阅读

I2C通讯协议具有运行可靠、成本低廉、占用IO资源少等优点,广泛应用于多级通讯中;中颖芯片硬件TWI(两线串行接口)接口完全兼容I2C总线协议。

中颖芯片硬件TWI支持功能:

开漏输出,通讯电平不受VDD影响;

支持主机模式和从机模式;

各个模式均支持发送和接受;

支持多级通讯的仲裁功能;

具有SCL低电平/高电平超时判断;

器件地址可编程,带多个地址屏蔽位,支持广播功能;

支持标准模式(100K)和快速模式(400K);

支持Clock Stretch功能

支持内部上拉电阻功能

中颖芯片硬件TWI注意事项:

硬件TWI在传输ACK/NACK响应信号时,在SCL由低跳高后产生TWI中断标志(TWINT),并在SCL由高跳低时拉低SCL,在TWI中断标志清除后释放SCL;

TWI中断标志(TWINT)在被清除前,TWI通讯会暂停,应用程序必须在TWI中断标志(TWINT)清除前决定后续的动作;

硬件TWI规定通讯过程中SCL总线维持高电平超过TFREE定义的时钟个数时为“空闲”状态,释放总线;此功能无法关闭。

硬件TWI规定参与传输的所有器件,将时钟线SCL维持低电平超过CNT定义的时钟个数时为“总线超时”,释放总线;此功能无法关闭。

硬件TWI通讯注意事项:

TWI中断标志(TWINT)置起后,软件配置TWI即将执行的动作(如发送数据、回应ACK/NACK、发送STO/清除STA信号等)后方可清除TWI中断标志(TWINT);

硬件TWI作为从机时,在每次通讯开始前,提前将应答信号准备好(AA=1);

为了增强通讯抗干扰能力,程序中建议增加SCL高电平超时判断、总线超时判断、特殊状态机(00H)判断;

硬件TWI操作流程示意图:

9bb2ad56-b1cb-11ed-bfe3-dac502259ad0.png

硬件TWI出错案例:

硬件TWI通信错误(从机)

原因:外界存在干扰。

当从机TWI状态机为B8时,从机继续向主机发送数据,且准备NACK信号,此时若外接干扰造成从机识别主机回传的信号非正常信号,则从机状态机会跳到非正常状态机中,此时程序中未对应答信号做处理,造成当此轮通讯结束后,在开始下一轮通讯时,从机无ACK信号造成无法响应主机通讯。

TWI默认开启SCK高电平超时功能,待发送完最后一个字节,此时AA清零;此时若存在因主机通讯或干扰造成SCK高电平超时时,TWI模块会自动释放总线,此时AA仍然保持为之前的NACK状态,造成在下一轮通讯时无法响应主机通讯,通讯异常;

改善方案: 在传输完成最后一个字节数据后AA置位,这样即使发生异常情况,待下一组时序到来时,从机仍能够正常响应主机;在程序其他异常状态下置位AA,即使通信受到干扰,跳转到异常状态,仍能进行下一次的通讯响应。下图列出TWI中断代码改善前后的代码。

9bcd35ae-b1cb-11ed-bfe3-dac502259ad0.png

图1改善前

9be5d212-b1cb-11ed-bfe3-dac502259ad0.png

图2改善后





审核编辑:刘清

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

    关注

    0

    文章

    7

    浏览量

    8061
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    17038
  • I2C接口
    +关注

    关注

    1

    文章

    124

    浏览量

    25141
  • VDD
    VDD
    +关注

    关注

    1

    文章

    311

    浏览量

    33119

原文标题:硬件TWI使用说明及案例

文章出处:【微信号:SINO_25181447,微信公众号:中颖电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    全志R128 SDK HAL 模块开发指南——TWI

    /hal_twi.c /* hal层接口代码 */ |‑‑include/hal/sunxi_hal_twi.h /* 头文件 */ 模块接口说明 头文件: #include <
    发表于 04-10 16:58

    【LeMaker Guitar试用体验】9.Lemuntu系统twi接口分析1

    没有类似下图这样明确的开始和停止条件说明。也没有下面很明确的地址寻址说明.数据传输的时序图倒是有一个下面是3个twi接口的地址和每个twi内部寄存器
    发表于 02-24 13:37

    TWI为什么会分出800KHz的工作频率呢

    修改了uart的时钟源为50M,twi也会被修改为50M。dts中给某一条twi总线设置的时钟频率为400k,但是实际测得该twi的时钟频率为833kHz。twi的工作频率会根据时钟源
    发表于 12-29 06:25

    Arduino/8266 I2C无法找到与twi.h一起使用的twi.cpp怎么解决?

    我正在尝试深入了解 Arduino/8266 I2C 通信的核心,我发现了 8266 的特定版本: Wire.h Wire.ccp twi.h 但一直无法找到与 twi.h 一起使用的 twi.cpp。通常它与 .h 文件位
    发表于 05-04 06:29

    AVR TWI读写范例程序(AT24C02)

    本程序简单的示范了如何使用ATMEGA16的TWI 读写AT24C02 IIC EEPROM    TWI协议      (即IIC协议,请认真参考IIC协议的内容,否则根本就不能掌握)&nb
    发表于 10-31 21:21 257次下载

    MN1872432TWI 微处理器

    MN1872432TWI 微处理器
    发表于 04-12 14:06 26次下载
    MN1872432<b class='flag-5'>TWI</b> 微处理器

    AVR单片机的TWI总线的原理及应用

      AVR系列的单片机内部集成了TWI(Two-wire SerialInterface)总线。该总线具有I2C总线的特点,即接线简单,外部硬件只需两个上拉电阻,使用时钟线SCL和数据线SDA就可以将128个不同的设
    发表于 07-29 10:40 2965次阅读
    AVR单片机的<b class='flag-5'>TWI</b>总线的原理及应用

    基于AVR单片机的TWI总线原理分析(下)

    AVR单片机片内TWI总线的原理和使用
    的头像 发表于 07-04 10:51 3616次阅读

    AVR单片机:关于片内TWI总线的原理和使用介绍(1)

    AVR单片机片内TWI总线的原理和使用
    的头像 发表于 07-11 00:27 3264次阅读
    AVR单片机:关于片内<b class='flag-5'>TWI</b>总线的原理和使用介绍(1)

    AVR单片机的TWI总线的原理是怎样的有什么样的应用

    在简要对比TWI 总线与I2C 总线的基础上,详细介绍TWI 总线的内部模块、工作时序和工作模式,并给出一个编程实例加以说明,对TWI 总线和传统的I2C 总线的正确区分及使用具有现实
    发表于 10-26 14:34 1次下载
    AVR单片机的<b class='flag-5'>TWI</b>总线的原理是怎样的有什么样的应用

    TWI模块作为I2C主器件

    在于它可以使用相同的总线和仲裁来寻址最多 128 个器件,并且总线上可以有多个主器件。  大多数Microchip AVR器件中都包含一个硬件 TWI 模块。  今天推荐的应用笔记以全功能驱动程序的形式
    的头像 发表于 02-08 09:50 2297次阅读

    AVR315:将TWI模块作为I2C主器件

    双线串行接口(Two-Wire Interface,TWI)兼容 Philips I2C 协议。该总线能够在电子设备中的集成电路之间实现简单、可靠且经济高效的通信。TWI 总线的优势在于它可以使用相同的总线和仲裁来寻址最多 128 个器件,并且总线上可以有多个主器件。
    发表于 03-31 10:38 4次下载
    AVR315:将<b class='flag-5'>TWI</b>模块作为I2C主器件

    中颖芯片硬件TWI支持功能

    硬件TWI在传输ACK/NACK响应信号时,在SCL由低跳高后产生TWI中断标志(TWINT),并在SCL由高跳低时拉低SCL,在TWI中断标志清除后释放SCL;
    发表于 07-14 16:12 1529次阅读

    Linux TWI开发指南

    介绍 Sunxi 平台上 TWI 驱动接口与调试方法,为 TWI 模块开发提供参考。
    的头像 发表于 03-06 10:24 1509次阅读
    Linux <b class='flag-5'>TWI</b>开发指南

    什么是TWI 如何为I2C通信配置TWI

    电子发烧友网站提供《什么是TWI 如何为I2C通信配置TWI.pdf》资料免费下载
    发表于 09-25 10:07 0次下载
    什么是<b class='flag-5'>TWI</b> 如何为I2C通信配置<b class='flag-5'>TWI</b>