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

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

3天内不再提示

如何使用PIC16 MSSP模块进行从机 I2C 通信

454398 来源:eeweb 作者:eeweb 2021-06-20 18:03 次阅读

一些中档增强型内核 PIC16 单片机器件具有主同步串行端口(Master Synchronous Serial Port,MSSP)。MSSP 模块可用于实现 I2CTM 或 SPI 通信协议。在本应用笔记中,将介绍 I2C 从协议的基础知识。然后读者应该更好地了解 MSSP 模块以及它如何用于 I2C 总线上的从机通信。还将提供代码示例以帮助读者将模块实现到他们自己的设计中。

I2C 总线规范

内部集成电路 (I2C) 总线是由 Philips® Inc. 开发的广泛使用的行业标准,用于在集成电路(例如串行 EEPROM 或其他微控制器)之间传输数据。设备在主/从环境中通信,其中主设备始终发起通信,从设备通过寻址进行控制。I2C 总线可以有一个或多个主设备和一个或多个从设备。主设备是在总线上发起数据传输的设备,负责生成总线上使用的串行时钟。任何寻址的设备都被视为从设备。I2C 协议支持 7 位或 10 位寻址模式。从 MSb 开始,一次执行 8 位数据传输。

总线的物理接口由两条双向开漏线组成,一条线用于串行时钟(SCL),另一条线用于串行数据(SDA)。每条线路都需要一个上拉电阻来为线路提供电压。将线拉到地面被认为是逻辑低点,而让线浮动被认为是逻辑高点。当总线空闲时,SDA 和 SCL 均为逻辑高电平。数据传输速率在标准模式下高达 100 kbits/s,在快速模式下高达 400 kbits/s,在快速模式 Plus 下高达 1 Mbits/s,或在高速模式下高达 3.4 Mbits/s模式。在时钟的高电平期间,SDA 线上的数据必须是稳定的。SDA 线上的任何变化只能在 SCL 线上的时钟信号为低电平时发生。为每个传输的数据位生成一个时钟脉冲。

I2C 规范将启动条件定义为 SDA 线从高电平变为低电平状态,而 SCL 线为高电平。启动条件始终由主机生成,表示总线从空闲状态转换为活动状态。I2C 规范规定在开始时不会发生总线冲突;但是,如果 MSSP 模块在将 SDA 线置为低电平之前对其进行采样,则可能会发生总线冲突。

停止条件是 SDA 线从低到高状态的转换,而 SCL 线为高。在停止有效之前,必须至少出现一个 SCL 低电平时间。因此,如果 SDA 线变为低电平,然后再次变为高电平,而 SCL 线保持高电平,则仅检测到启动条件。

poYBAGDPEjaATH0AAABzdY8A3nE945.png

图 1 I2C 启动和停止条件

只要停止有效,重新启动或重复启动就有效。如果主机希望在终止当前传输后保持总线,它可以发出重新启动。Restart 对从机具有与 Start 相同的效果,重置所有从机逻辑并准备它在地址中计时。主站可能想要寻址同一个或另一个从站。这对于许多 I2C 外设很有用,例如非易失性 EEPROM 存储器,其中 I2C 写操作和读操作连续完成。在这种情况下,写操作指定要读取的地址,读操作获取数据字节。由于主设备在将内存地址写入设备后并没有释放总线,因此执行一个Restart序列来读取内存地址的内容。

pYYBAGDPEkCAPloyAABc3vsaifo630.png

图 2 I2C 重启条件

在 10 位寻址从机模式下,主机需要重启才能将数据从寻址的从机中取出。一旦从设备被完全寻址,匹配高地址字节和低地址字节,主设备就可以发出重启并发送设置了 R/W 位的高地址字节。然后从逻辑将保持时钟并准备输出数据。在 10 位模式下与 R/W 清除完全匹配后,设置并保持先前​​匹配标志。在停止条件之前,具有 R/W 清除或高地址匹配的高地址失败。

编辑:hfy

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

    关注

    6030

    文章

    44487

    浏览量

    631868
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1476

    浏览量

    123022
  • PIC16
    +关注

    关注

    2

    文章

    151

    浏览量

    34893
收藏 人收藏

    评论

    相关推荐

    PIC18F I2C总线电容MSSP与Bit-Banging通信错误

    PIC18F25K40,我公司使用的主要I2C通信是很差的选择/设计,几年后,我试图解决由于噪声问题导致的I2C通信错误,所以很有趣。我们不
    发表于 11-19 10:19

    选择PIC18F45 50的MSSP模块作为I2C或SPI的困难

    嗨,我在选择PIC18F45 50的MSSP模块作为I2C或SPI时遇到了一些困难,哪个寄存器选择了这个?问候,Akshay 以上来自于百度翻译 以下为原文 Hi,
    发表于 12-21 15:37

    I2C Master到Master通信可能吗?

    嗨,我有一个项目,一个PIC24FJ256GB210是一个I2C主控器,一个PIC16F18326,一个I2C
    发表于 12-27 16:04

    pic16和gestic之间的I2c通信是否有可用的样本代码?

    嗨,我在一个手势板上使用一个pic16f1947主板和芯片mgc3130。我试着把一个pic18f14k50的狗和手势芯片连接起来,并且通信工作正常。但当我试着把pic16和mgc31
    发表于 07-26 12:13

    使用MSSPI2C通信LCD屏幕不工作

    我已经能够使用MSSPI2C通信到我的LCD屏幕,和EuSART蓝牙我的手机到HC-06。我通过切换LED来测试这个。当我把两个程序结合起来时,它就不再工作了。当我启用EUSAT的
    发表于 03-23 09:04

    使用MCC PIC24F进行I2C故障恢复

    你好!我有APIC24FV16KM204 I2C主控器,它通过通过滑环的导线与I2C通信
    发表于 04-21 09:31

    基于pic单片的模拟I2C通信

    基于pic单片的模拟I2C通信设计
    发表于 05-25 08:58 2440次阅读

    PIC单片I2C模式)实例讲解

    PIC单片I2C模式)实例讲解
    发表于 01-24 17:21 30次下载

    PIC单片I2C模式)详解

    I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。今天就来看看PIC单片使用MSSP
    发表于 11-14 17:24 1.3w次阅读
    <b class='flag-5'>PIC</b>单片<b class='flag-5'>机</b>之<b class='flag-5'>I2C</b>(<b class='flag-5'>从</b>模式)详解

    使用C18编译器和MSSP模块进行I2C™串行EEPROM与PIC18单片的接口设计

    本文主要介绍了使用C18编译器和MSSP模块进行I2C™串行EEPROM与PIC18单片
    发表于 06-28 08:25 11次下载
    使用<b class='flag-5'>C</b>18编译器和<b class='flag-5'>MSSP</b><b class='flag-5'>模块</b><b class='flag-5'>进行</b><b class='flag-5'>I2C</b>™串行EEPROM与<b class='flag-5'>PIC</b>18单片<b class='flag-5'>机</b>的接口设计

    使用MSSP模块进行Microwire串行行EEPROM与PIC16器件的接口设计

    本应用笔记提供了设计思路和源代码,以方便设计人员 进行 Microchip 中档 PIC16F877A 单片和 Microwire 串行 EEPROM 器件之间的通信设计。主控同步串
    发表于 06-28 09:25 10次下载
    使用<b class='flag-5'>MSSP</b><b class='flag-5'>模块</b><b class='flag-5'>进行</b>Microwire串行行EEPROM与<b class='flag-5'>PIC16</b>器件的接口设计

    使用MSSP模块进行I2C串行EEPROM与PIC16器件的接口设计说明

    Microchip Technology生产的24XXX系列串行EEPROM 兼容 I2C通信标准,最大时钟频率范围 100 kHz 到 1 MHz。许多PICmicro®单片机内置MS
    发表于 05-21 08:00 0次下载
    使用<b class='flag-5'>MSSP</b><b class='flag-5'>模块</b><b class='flag-5'>进行</b><b class='flag-5'>I2C</b>串行EEPROM与<b class='flag-5'>PIC16</b>器件的接口设计说明

    使用MSSP模块进行Microwire串行EEPROM与PIC16器件的接口设计

    使用MSSP模块进行Microwire串行EEPROM与PIC16器件的接口设计说明。
    发表于 05-11 10:13 11次下载

    使用MSSP模块进行I2C串行EEPROM与PIC16器件的接口设计

    使用MSSP模块进行I2C串行EEPROM与PIC16器件的接口设计说明。
    发表于 05-11 10:14 16次下载

    使用MSSP模块进行I2C串行EEPROM与PIC18器件的接口设计

    使用MSSP模块进行I2C串行EEPROM与PIC18器件的接口设计说明。
    发表于 05-11 10:23 11次下载