找回密码
 立即注册
查看: 69|回复: 3

AI8051中DMA_I2CT_AMT/DONE和DMA_I2C_ST什么区别?

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:455
  • 最近打卡:2025-05-01 08:13:06
已绑定手机

27

主题

341

回帖

1687

积分

金牌会员

机长

积分
1687
发表于 2025-4-3 12:03:57 | 显示全部楼层 |阅读模式

截图202504031203168144.jpg 截图202504031203257490.jpg
如题所示。我认为AI8051中DMA_I2C_ST寄存器所干的事情,
貌似在发送时完全可以用DMA_I2CT_AMT/DMA_I2CT_DONE取代,
而在接收时完全可以用DMA_I2CR_AMT/DMA_I2CR_DONE取代。

不知理解是否有误?或者说DMA_I2C_ST还有其它更高级用法?

业余撸代码,专业开飞机
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-3 12:08:00 | 显示全部楼层
在AI8051微控制器中,DMAI2CST、DMAI2CTAMT/DMAI2CTDONE以及DMAI2CRAMT/DMAI2CRDONE寄存器各自承担着不同的功能,尽管它们在某些场景下可能看似可以相互替代,但实际上它们的设计初衷和使用场景存在显著差异。

DMAI2CST寄存器
DMAI2CST(DMA I2C Status Register)主要用于监控和报告I2C DMA传输的当前状态。它通常包含以下信息:
传输状态:指示当前DMA传输是否正在进行、已完成或遇到错误。
错误标志:如ACK错误、总线错误等。
中断状态:指示是否触发了DMA传输完成中断。

DMAI2CST的主要作用是提供全局的DMA传输状态信息,便于开发者进行错误处理和状态监控。它并不直接参与数据传输的控制,而是作为一个状态反馈机制。

DMAI2CTAMT/DMAI2CTDONE寄存器
DMAI2CTAMT(DMA I2C Transmit Amount Register)和DMAI2CTDONE(DMA I2C Transmit Done Register)主要用于控制和管理I2C DMA发送操作。
DMAI2CTAMT:指定要发送的数据量(字节数)。
DMAI2CTDONE:指示已发送的数据量,通常用于检查发送进度或确认发送完成。

这两个寄存器直接参与发送过程的控制,确保数据按预期发送,并提供发送进度的反馈。

DMAI2CRAMT/DMAI2CRDONE寄存器
DMAI2CRAMT(DMA I2C Receive Amount Register)和DMAI2CRDONE(DMA I2C Receive Done Register)则用于控制和管理I2C DMA接收操作。
DMAI2CRAMT:指定要接收的数据量(字节数)。
DMAI2CRDONE:指示已接收的数据量,通常用于检查接收进度或确认接收完成。

这两个寄存器直接参与接收过程的控制,确保数据按预期接收,并提供接收进度的反馈。

区别与高级用法
1. 功能定位:
DMAI2CST是一个状态寄存器,主要用于监控和报告DMA传输的全局状态。
DMAI2CTAMT/DMAI2CTDONE和DMAI2CRAMT/DMAI2CRDONE是控制寄存器,直接参与发送和接收过程的控制。

2. 使用场景:
DMAI2CST适用于需要全局状态监控和错误处理的场景。
DMAI2CTAMT/DMAI2CTDONE和DMAI2CRAMT/DMAI2CRDONE适用于需要精确控制发送和接收过程的场景。

3. 高级用法:
DMAI2CST可以与其他中断和错误处理机制结合使用,实现更复杂的DMA传输管理。
DMAI2CTAMT/DMAI2CTDONE和DMAI2CRAMT/DMAI2CRDONE可以与DMAI2CST结合使用,实现更精细的传输控制和状态监控。

结论
虽然在某些简单场景下,DMAI2CTAMT/DMAI2CTDONE和DMAI2CRAMT/DMAI2CRDONE可以部分替代DMAI2CST的功能,但DMAI2CST在全局状态监控和错误处理方面具有不可替代的作用。因此,理解这些寄存器的区别和各自的应用场景,对于高效利用AI8051的DMA功能至关重要。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-4-3 12:22:25 | 显示全部楼层
DMA_I2CT_AMT用于设置,DMA_I2C_ST一般用于状态反馈

DMA_I2CT_AMT与DMA_I2C_ST的区别1. ​功能定义
  • DMA_I2CT_AMT(I2C发送DMA传输总字节寄存器)​

    • 作用:设置I2C发送DMA通道需要传输的总字节数。
    • 操作流程:用户需预先写入需要传输的数据总量,DMA控制器会根据此值执行传输,完成后该寄存器值归零。
    • 应用场景:配置DMA发送数据量时使用,例如批量发送缓冲区数据。
  • DMA_I2C_ST(I2C DMA状态寄存器)​

    • 作用:反映DMA传输的实时状态,包括传输完成标志、错误标志及剩余字节数等信息。
    • 操作流程:通过读取该寄存器可判断传输是否完成、是否存在错误,或获取当前已传输/剩余字节数。
    • 应用场景:监控DMA传输进度或处理传输异常时使用。
2. ​寄存器属性
  • DMA_I2CT_AMT

    • 类型:控制寄存器(可读写)。
    • 位定义:通常为16位或32位,直接对应传输数据的总字节数。
  • DMA_I2C_ST

    • 类型:状态寄存器(只读)。
    • 位定义:包含多个状态位,例如:
      • 完成标志位​(传输结束时置位)。
      • 错误标志位​(如超时、总线冲突等)。
      • 剩余字节计数器​(动态显示未传输的字节数)。
3. ​在DMA传输流程中的角色
  • DMA_I2CT_AMT

    • 初始化阶段:用户需设置此寄存器以启动传输。
    • 传输阶段:DMA控制器递减该值直至归零,表示传输完成。
  • DMA_I2C_ST

    • 传输监控阶段:用户通过轮询或中断方式读取状态,判断传输是否成功。
    • 错误处理阶段:检测到错误标志后,需清除错误并重新配置DMA。
4. ​文档依据
  • DMA_I2CT_AMT:参考文档第34.10.5节,明确其为I2C发送通道的传输总量配置寄存器。
  • DMA_I2C_ST:参考文档第34.10.16节,描述其作为状态寄存器,提供传输进度和异常信息。
5. ​总结
  • 核心区别
    • DMA_I2CT_AMT用于配置传输规模,属于主动控制部分。
    • DMA_I2C_ST用于反馈传输状态,属于被动监控部分。
  • 协作关系:两者共同确保DMA传输的可靠性和可控性,前者设定目标,后者提供实时反馈。
通过区分功能、属性和应用场景,用户可以更高效地利用这两个寄存器优化I2C DMA传输流程。

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:455
  • 最近打卡:2025-05-01 08:13:06
已绑定手机

27

主题

341

回帖

1687

积分

金牌会员

机长

积分
1687
发表于 2025-4-3 15:08:27 | 显示全部楼层
Debu*** 发表于 2025-4-3 12:22
DMA_I2CT_AMT用于设置,DMA_I2C_ST一般用于状态反馈

DMA_I2CT_AMT与DMA_I2C_ST的区别1. ​功能定义

大致懂了。也就是这些寄存器设计的目的各有侧重,在某些简单应用中确实可以互相替代,但复杂应用中分开的优势可能就明显了。谢谢~~
业余撸代码,专业开飞机
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:24 , Processed in 0.122628 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表