I2C通信中自动与软件控制的时钟延长机制
需积分: 7 3 浏览量
更新于2024-08-10
收藏 3.37MB PDF 举报
"自动时钟延长-chroma language_manual"
在I2C通信中,自动时钟延长是一种关键功能,尤其在dsPIC30F系列微控制器中。这一特性允许从设备根据需要延长SCL(时钟)线的低电平状态,以确保数据传输的正确同步。17.5章节详细介绍了这个机制。
17.5.1 发送时钟延长:
在10位和7位发送模式下,如果TBF(传输缓冲区空)位为0,表示缓冲区为空,系统会在第9个时钟的下降沿后自动清零SCLREL位,从而延长时钟。在从设备发送模式下,无论STREN(时钟强度)位设置如何,都会进行时钟延长。一旦SCLREL被清零,SCL线会被拉低。用户中断服务程序需要在继续发送前将SCLREL设回1,以便有时间处理新的数据。
17.5.2 接收时钟延长:
在从接收模式下,STREN位决定是否启用时钟延长。如果STREN设为1,SCL线会在每次数据接收序列结束后保持低电平。对于7位和10位寻址模式,延长SCL的方法相同。当接收缓冲区满(RBF位为1)且在第9个时钟的下降沿后,SCLREL会自动清零,强制SCL保持低电平。中断服务程序需要将SCLREL设回1以防止数据丢失。
17.5.3 7位寻址时的时钟延长(STREN = 1):
在7位寻址模式下,如果STREN置1,SCL线会在缓冲区满时保持低电平。第9个时钟的下降沿后,如果RBF位为1,SCLREL将被清零,SCL线保持低电平,允许用户有时间读取I2CRCV内容,防止缓冲区溢出。
17.5.4 10位寻址时的时钟延长(STREN = 1):
10位寻址时,时钟延长也会自动进行。寻址过程结束后,后续的数据接收或发送序列会按照之前的方式进行时钟延长。
17.6 软件控制的时钟延长(STREN = 1):
当STREN位设为1时,通过软件清零SCLREL可以实现对时钟延长的软件控制。SCLREL的写操作会与SCL时钟同步。清零SCLREL不会立即拉低SCL输出,而是等待检测到SCL的下降沿且采样到SCL为低电平时才会执行。SCL输出会保持低电平直到SCLREL被重新置1,且I2C总线上所有其他设备都释放了SCL。这样做是为了满足SCL最小高电平时间的要求。
需要注意的是,如果在第9个时钟下降沿前设置了TBF位,或者在RBF位清零前就完成了读取操作,SCLREL将不会被自动清零,也不会进行时钟延长。而不论TBF或RBF位状态如何,SCLREL都可以通过软件设置为1。
总结来说,自动时钟延长是dsPIC30F系列微控制器在I2C通信中确保数据完整性和同步的重要机制。它允许设备根据需要扩展时钟周期,以便有足够的时间处理数据或响应。用户可以通过配置STREN位以及适时地读写SCLREL位来控制这个功能,以适应不同的应用需求。
2020-01-19 上传
2019-12-09 上传
2021-10-02 上传
2023-05-22 上传
2023-06-11 上传
2023-06-10 上传
2023-05-11 上传
2023-04-29 上传
2024-08-16 上传
![](https://profile-avatar.csdnimg.cn/034ef030c08f401fb2492375e2e23164_weixin_26720479.jpg!1)
Matthew_牛
- 粉丝: 40
- 资源: 3872
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景