跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT SDK
  4. I2C 主机最大接收长度限制说明

I2C 主机最大接收长度限制说明

已定时 已固定 已锁定 已移动 未解决 YT SDK
1 帖子 1 发布者 17 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • KirkK 离线
    KirkK 离线
    Kirk YunTu
    编写于 最后由 编辑
    #1

    1. 问题背景

    1. 软件:MD24 SDK 1_4_0_HF001 I2c_Master_Demo
    2. 硬件:MD24 EVB
    3. 背景描述:
    • 客户反馈 MD24 I2C1 Master 接收超过 256 Byte 数据后出现接收异常的情况
    • 实际测试最大只能接收 256 Byte,如果设置 rxSize 是 259 Byte,理论上 i2c master SCL 应该发送 259 Byte 的时钟波形,但实际只发送 3 byte 就结束了,259 Byte - 256 Byte = 3 Byte
    • I2C_DRV_MasterReceiveData 断言判断对 rxSize 要求不大于 256 Byte

    2e2776f2-6a05-4e37-b8d2-cd7ae47f2306-image.png

    2. 原因分析

    1. 关于 I2C Master、Slave 一次性可以收发多少 Data 取决于 MDATA、SDATA 和 Functional Description。

    be539550-ff81-4792-a710-ac955704274d-image.png
    83821aca-9259-4c00-99f0-4fee7afbf05b-image.png

    1. I2C Master Receive 的命令需要告知接收数据长度,即 I2C_DRV_MasterReceiveData API 的第三个参数 rxSize
    2. Receive(DATA + 1) 对应的就是 MDATA 寄存器的 RXDATA 位(7bit,最大值为 255),所以 I2C Master Receive 最大一次只能接收 256 Byte。

    3. 结论

    1. I2C 的操作命令只有对 Master Receive 的命令需要提前传入 MDATA.RXDATA
    2. Master Transfer、Slave Receive 和 Slave Transfer 都对 MDATA.TXDATA、SDATA.TXDATA 和 SDATA.RXDATA 无要求
    3. 综上所述,I2C Master Receive 一次性最大接收长度为 256 Byte。属于 IP 硬件限制,若需要 I2C Master Receive 超过 256 Byte,可以使用 GPIO 软解模拟 I2C 实现。
    /* rxSize 的值,最大不能超过 256 */
    I2C_DRV_MasterReceiveData(INST_I2C, rxBuff, rxSize, true);
    
    1 条回复 最后回复
    0

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • can
    28
    demo
    26
    uds
    14
    lin stack
    13
    md14
    6
    yt-link
    6
    fbl
    5
    adc模块
    4
    Online Users
    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门