一些中档增强型内核 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 线保持高电平,则仅检测到启动条件。
图 1 i2c 启动和停止条件
只要停止有效,重新启动或重复启动就有效。如果主机希望在终止当前传输后保持总线,它可以发出重新启动。restart 对从机具有与 start 相同的效果,重置所有从机逻辑并准备它在地址中计时。主站可能想要寻址同一个或另一个从站。这对于许多 i2c 外设很有用,例如非易失性 eeprom 存储器,其中 i2c 写操作和读操作连续完成。在这种情况下,写操作指定要读取的地址,读操作获取数据字节。由于主设备在将内存地址写入设备后并没有释放总线,因此执行一个restart序列来读取内存地址的内容。
图 2 i2c 重启条件
在 10 位寻址从机模式下,主机需要重启才能将数据从寻址的从机中取出。一旦从设备被完全寻址,匹配高地址字节和低地址字节,主设备就可以发出重启并发送设置了 r/w 位的高地址字节。然后从逻辑将保持时钟并准备输出数据。在 10 位模式下与 r/w 清除完全匹配后,设置并保持先前匹配标志。在停止条件之前,具有 r/w 清除或高地址匹配的高地址失败。
美国XNUO心诺专注医疗也能转型升级,生命科技如此亲近
通过边缘计算网关打造物联网云平台监控系统
特斯拉电池材料将去中国化
几百元的电动车,到底靠不靠谱!
AI战略成效哪家强?财报业绩看是更多注目中国科技老大哥联想
如何使用PIC16 MSSP模块进行从机 I2C 通信
德国GMC-I手持式多参数过程校验仪的测试方法
WiFi6技术将开拓出怎样的新市场空间?
双十二哪个无线充电宝值得入手?高性价比无线充电宝推荐
电容元件和电感元件详解
区块链在物流领域的应用
GPU如何加速人工智能或机器学习的计算速度
RAM为相变存储器提供无缝架构途径
众麦通信智能语音解决方案助力企业持续业务发展
无人机技术各模块详解与技术分析
便携式储能市场爆发式增长,主要玩家都有谁?
中国电信云计算内蒙古信息园已完成投资近22亿元 50多家单位已入驻
选购高压风机的两大要点
Facebook将推出一款可以用人脑控制电脑的手环
智原科技针对网络摄影机和网络电视推出SoC设计平台