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

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

3天内不再提示

用超低功耗MSP MCU开始一个I2C通信有关项目

电子设计 ? 来源:电子设计 ? 作者:电子设计 ? 2022-01-26 14:06 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这是一份介绍性指南,指导你如何用超低功耗MSP微控制器 (MCU) 开始一个与I2C通信有关的项目:

简介

I2C(或称为I2C,集成电路总线)是一种两线制通信形式,主要用来在短距离、电路板间的应用中,实现微控制器与外设IC之间的低速通信。由于其采用范围很广,所以学习使用I2C与MSP MCU之间的通信已经在帮助工程师开发应用方面变得十分必要。通过使用一个超低功耗MSP MCU来访问和控制IC器件,这份指南提供了理解I2C协议并执行这一协议所需的工具与资源。

器件术语

驱动SCL时钟线路的器件被称为主器件,而对其进行响应的器件被称为从器件。在大多数应用中,MSP MCU为主器件,而外设IC为从器件,虽然有时候MSP器件是其它MCU或处理器的从器件。

物理总线

I2C总线由两条线路组成,SCL和SDA。SCL是用来将所有数据传输同步的时钟线路,而SDA是实际的数据线路。还需要第三条线路,即普通接地,不过通常不被提及。由于两条线路都是“开漏”驱动器,它们都需要到电源线路的上拉电阻,这样的话,输出在无运行期间保持在高电平。对于MSP MCU应用来说,电源电压应该与MSP MCU的Vcc相匹配。传统上,上拉电阻器的值为4.7k?,不过这个值的范围可以在少于1k?到10k?之间,取决于所使用的从器件。要获得正确的上拉电阻值,请参考器件数据表。多个从器件可以共用一条I2C总线,单个上拉电阻器

I2C软件协议

不论何种应用,每个支持I2C器件都需要遵守针对全部I2C器件所定义的共同软件协议,其一般结构始终保持不变。通信从启动序列开始,并在一个停止序列中结束,两个序列之间有一个8位数据传输序列。启动位之后是从地址,通常为7位(虽然很少情况下也使用10位寻址)。这7个数据位被放置在一个字节的上7位,而LSB(最低有效位)被用来存储读/写 (R/W) 位。这个位让从器件知道是对其进行写入操作(位值为0),还是读取操作(位值为1)。对一个写入操作,操作序列如下:

发送启动序列

发送从地址,其中R/W位为低电平

发送寄存器

发送数据字节

发送停止序列

读取操作序列与写入操作十分相似,除了它不发送数据字节,而是重新发送启动序列(被称为一个重复启动)和从地址(不过此时,对于读取操作来说,R/W位为高电平),这样的话,它可以接收数据,而不是发送数据。这个操作在主器件发出典型停止序列后结束。下面是读取操作序列:

发送启动序列

发送从地址,其中R/W位为低电平

发送寄存器数

再次发出启动序列(重复启动)

发出从地址,其中R/W位为高电平

读取数据字节

发出停止序列

MSP MCU通信外设

为了实现串行通信,MSP器件上有可能提供4种不同的外设。其中只有一个外设会因器件的不同而不同。根据在MSP MCU上实现I2C通信的难易程度(从最难到最容易),将这些使用的外设列出如下:

UART:通用同步/异步接收器/发射器。这是最早出现的通信形式,并且存在于大多数MSP430F1xx MCU上。它不支持I2C,因此必须使用一个基于软件的位响应 (bit-bang) 解决方案来与I2C器件实现通信。

USI:通用串行接口。另外一个更加简单的通信形式,用于MSP430G2xx系列内的某些组件等成本有效或空间受限器件。器件上没有I2C状态机,必须在软件中实现。通常情况下,通过使用单独的函数来实现。

USCI:通用串行接口。一个针对ISR和标志用法进行优化的标准通信外设。这个外设常见于MSP430F5xx/F6xx系列中,其中包括一个基于硬件的I2C状态机,因此运行所需要的代码更少。

eUSCI:增强型通用串行通信接口。MSP器件上提供的最先进通信外设,它改进了现有USCI功能,并且包含于所有MSP430FRxx (FRAM) MCU中。

当考虑使用一个具有I2C应用的MSP器件时,用户应该明白,代码结构会随着特定MSP系列器件上存在的外设而变化。每个变量包括必须考虑在内的不同寄存器、ISR和函数。还需要澄清的一点是,并不是所有的器件系列都使用同样的外设(USCI和eUSCI存在于MSP430F5xx/6xx中,USI和USCI存在于MSP430G2xx系列中,等等),这一点在用户参考系列用户指南时会感到很困惑。因此,需要注意的一点是,在开始应用开发时,要根据实际情况来查看正确的材料,并选择合适的示例代码。德州仪器 (TI) 提供针对USI、USCI和eUSCI通信的基本I2C代码示例;这些代码示例可以在工具&软件->软件->示例 (Tools & software -> Software -> Examples) 下的MSP系列器件产品页面内找到(提供ZIP格式的文件,需要注意的是,这些软件包只包含与特定器件上存在的外设相关的代码示例)。对于那些使用USART,或者不包含一个通信外设的器件,我们在社区技术支持内提供在线I2C位响应解决方案。不论是否使用外设,始终需要上拉电阻器来实现I2C通信。某些MSP器件具有内部上拉电阻器,不过不建议使用这些电阻器,因为几个从器件需要特定的、无法在内部满足的电阻值。

用MSP实现I2C的窍门

当试图用I2C在外设IC与MSP之间进行通信时,为了帮助避免常见的执行错误,以下的一些建议值得我们仔细地看一看:

从专门为你的MSP系列器件提供的示例I2C代码入手(产品页面-> Tools & software -> Software -> Examples)。查看根据系列用户指南对I2C寄存器的更改(一定要确保你查看的是正确的外设章节),这样的话,你就可以牢牢掌握实现通信所必须的更改。

使用从器件数据表中指定的上拉电阻和地址(有时会随着输入变量的不同而变化)。需牢记的一点是,从地址的7位被存储在这个字节的上7位,之后是由通信外设设定的一个R/W位,因此,在设置从地址寄存器时,这个值也许需要向左移动一位。

从写入一个寄存器开始,并且监视MSP器件中的ACK。利用故障标志和实验室设备来警告通信故障。使用CCS或IAR提供的调试工具来了解代码的运行方式,哪些寄存器被访问,何时访问函数/ISR,以及它们的访问方式。在完成了这些操作后,在添加寄存器读取功能性方面会变得更加容易。

USCI/eUSCI状态图表示,在接收到最后一个字节前,需要设定UCTXSTP位。在只接收到一个字节的应用中,UCTXSTP位与UCTXSTT位一同设置。如果接收到多个字节,那么应该在接收到第N-1字节后设定UCTXSTP。这样就确保了在接收到最后一个字节后,立即发送停止序列。

调试建议

在放弃那些看起来似乎无法正确运行的代码前,以下是调试这个系统时需要考虑的某些关键点:

确认上拉电阻值&从地址值,用从器件数据表对它们进行验证。

再次检查通信外设初始化,其中包括:寄存器设置、正确的引脚分配、已使能中断、针对运行的外设接通/释放等。

使用任何提供的工具(IDE调试器、逻辑分析器、示波器等)来确认MSP430和从器件严格遵循I2C软件协议。

查看针对已知I2C问题的勘误表,并且查看勘误表说明是否与应用的故障症状相匹配。

研究E2E论坛内的问题,看一看有没有相似的情况已经被解决。尝试不同的I2C相关关键字组合,并且充分利用搜索过滤器。

E2E支持

如果适当的调试和研究方法没有成功,TI E2E社区论坛可以成为与器件专家进行直接沟通的极佳资源。无论遇到何种问题,一定要掌握与之相关的详细信息,以帮助社区成员和TI工程师更好地为请求提供技术支持,其中包括:

MSP430系列器件

使用的LaunchPad或TI目标板,或者定制电路板的电路原理

从器件

所发现情况或问题的准确描述

使用调试器的同时,所观察到的运行方式(CCS或IAR)

I2C初始化和函数/ISR代码片段(并不是全部代码)

包含合适标签的逻辑分析器和示波器图像

审核编辑:何安

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

    关注

    0

    文章

    341

    浏览量

    10328
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Analog Devices / Maxim Integrated MAX31331超低功耗I2C实时时钟数据手册

    Analog Devices MAX31331超低功耗^I2C^实时时钟的标称计时电流为65nA,可延长电池寿命。Analog Devices MAX31331支持各种32.768kHz晶体。可以
    的头像 发表于 06-22 11:32 ?365次阅读
    Analog Devices / Maxim Integrated MAX31331<b class='flag-5'>超低功耗</b><b class='flag-5'>I2C</b>实时时钟数据手册

    第十八章 I2C通信测试

    本章介绍了I2C协议,其物理层SDA和SCL双线,支持多设备:协议层含起始/停止信号、应答机制等。还讲解W55MH32的I2C外设及初始化,并进行了通信测试代码的分析。
    的头像 发表于 06-19 17:07 ?669次阅读
    第十八章 <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>测试

    瑞萨全新RA2L2 MCU 搭载48MHz ArmCortex-M23内核 超低功耗、支持CAN及USB-C

    ? ? ? ? ? ? RA家族推出全新 RA2L2 MCU 超低功耗,支持CAN及USB-C,拓展工业及便携式应用。 ? RA2L2系列是
    的头像 发表于 06-11 15:22 ?804次阅读
    瑞萨全新RA<b class='flag-5'>2L2</b> <b class='flag-5'>MCU</b> 搭载48MHz ArmCortex-M23内核 <b class='flag-5'>超低功耗</b>、支持CAN及USB-<b class='flag-5'>C</b>

    Analog Devices Inc. ADuM1253超低功耗I2C数字隔离器数据手册

    Analog Devices Inc. ADuM1253超低功耗I2C数字隔离器具有两开漏通道,单向、
    的头像 发表于 06-07 10:58 ?438次阅读
    Analog Devices Inc. ADuM1253<b class='flag-5'>超低功耗</b><b class='flag-5'>I2C</b>数字隔离器数据手册

    超低功耗MCU软件设计技巧与选型

    超低功耗MCU(微控制器)凭借其极低的功耗和高效的能量管理能力,正在快速渗透到多个新兴领域,尤其在物联网(IoT)、可穿戴设备、智能家居和医疗电子等领域展现出巨大的应用潜力,国内超低功耗
    的头像 发表于 04-12 17:19 ?750次阅读
    <b class='flag-5'>超低功耗</b><b class='flag-5'>MCU</b>软件设计技巧与选型

    I2C总线通信原理 如何设计I2C总线电路

    I2C总线通信原理 I2C(Inter-Integrated Circuit)总线是种用于集成电路之间进行通信的串行
    的头像 发表于 01-31 15:01 ?1281次阅读

    笙泉科技超低功耗、高性价比MCU(M0+ : MG32L00)

    笙泉科技超低功耗、高性价比MCU(M0+ : MG32L00) 超低功耗M0+ (MG32L003系列) MG32L003系列是笙泉科技新推出的低功耗
    发表于 01-20 10:51

    I2C总线与单片机的连接

    在现代电子系统中,单片机(MCU)是核心控制单元,而I2C总线作为种多主机、多从机的串行通信协议,因其简单、高效和节省引脚的特性而被广泛应用于各种电子设备中。
    的头像 发表于 01-17 15:18 ?1356次阅读

    I2C总线应用实例分析

    I2C总线使用两条线进行通信:数据线(SDA)和时钟线(SCL)。这种双线制设计使得I2C总线能够在多个设备之间共享,而不需要为每个设备单独布线。 应用实例:温湿度传感器 假设我们正在设计
    的头像 发表于 01-17 15:09 ?878次阅读

    ISO154xEVM低功耗双向I2C隔离器评估模块

    电子发烧友网站提供《ISO154xEVM低功耗双向I2C隔离器评估模块.pdf》资料免费下载
    发表于 11-18 14:46 ?0次下载
    ISO154xEVM<b class='flag-5'>低功耗</b>双向<b class='flag-5'>I2C</b>隔离器评估模块

    使用MSP430 MCU通过I2C实现低功耗Windows 8 HID应用

    电子发烧友网站提供《使用MSP430 MCU通过I2C实现低功耗Windows 8 HID应用.pdf》资料免费下载
    发表于 10-17 09:19 ?0次下载
    使用<b class='flag-5'>MSP</b>430 <b class='flag-5'>MCU</b>通过<b class='flag-5'>I2C</b>实现<b class='flag-5'>低功耗</b>Windows 8 HID应用

    在低成本MSP430 MCU中集成I2C I/O扩展器

    电子发烧友网站提供《在低成本MSP430 MCU中集成I2C I/O扩展器.pdf》资料免费下载
    发表于 09-24 10:56 ?1次下载
    在低成本<b class='flag-5'>MSP</b>430 <b class='flag-5'>MCU</b>中集成<b class='flag-5'>I2C</b> <b class='flag-5'>I</b>/O扩展器

    使用MSP430 MCU简化温度、湿度和光学I2C传感器

    电子发烧友网站提供《使用MSP430 MCU简化温度、湿度和光学I2C传感器.pdf》资料免费下载
    发表于 09-14 11:03 ?0次下载
    使用<b class='flag-5'>MSP</b>430 <b class='flag-5'>MCU</b>简化温度、湿度和光学<b class='flag-5'>I2C</b>传感器

    使用低内存MSP430?MCU的UART到I2C桥应用说明

    电子发烧友网站提供《使用低内存MSP430?MCU的UART到I2C桥应用说明.pdf》资料免费下载
    发表于 09-14 10:45 ?0次下载
    使用低内存<b class='flag-5'>MSP</b>430?<b class='flag-5'>MCU</b>的UART到<b class='flag-5'>I2C</b>桥应用说明

    ISO154x低功耗双向I2C隔离器数据表

    电子发烧友网站提供《ISO154x低功耗双向I2C隔离器数据表.pdf》资料免费下载
    发表于 08-19 11:35 ?0次下载
    ISO154x<b class='flag-5'>低功耗</b>双向<b class='flag-5'>I2C</b>隔离器数据表