查看: 3002|回复: 6

[其他] SDK 2.2 的fsl_i2c.h文件中,结构体i2c_master_transfer_t成员变的作用

[复制链接]
  • TA的每日心情
    开心
    2020-4-30 08:32
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    79

    主题

    239

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1095
    最后登录
    2025-6-7
    发表于 2017-10-22 13:11:36 | 显示全部楼层 |阅读模式
    MCUXpresso SDK 2.2 的fsl_i2c.h文件中定义了下列结构体, 请问结构体成员变量subaddress和subaddressSize是干什么用的 , 看例程都赋值为0,subaddress = 0, subaddressSize = 0,注释和手册描述比较简单,不太明白其作用,有人能详细解释下吗?

    typedef struct _i2c_master_transfer
    {
        uint32_t flags;            /*!< A transfer flag which controls the transfer. */
        uint8_t slaveAddress;      /*!< 7-bit slave address. */
        i2c_direction_t direction; /*!< A transfer direction, read or write. */
        uint32_t subaddress;       /*!< A sub address. Transferred MSB first. */
        uint8_t subaddressSize;    /*!< A size of the command buffer. */
        uint8_t *volatile data;    /*!< A transfer buffer. */
        volatile size_t dataSize;  /*!< A transfer size. */
    } i2c_master_transfer_t;


    最佳答案

    不知道你用的是哪个芯片的,有些芯片的I2C的从机地址是10位地址,所以会有subaddress.
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-10-23 10:48:33 | 显示全部楼层
    不知道你用的是哪个芯片的,有些芯片的I2C的从机地址是10位地址,所以会有subaddress.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-10-23 10:48:47 | 显示全部楼层
    建议你可以看下你芯片的参考手册,I2C章节,如果没有10位地址,那么subaddress 和长度当然都配置为0.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-30 08:32
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    79

    主题

    239

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1095
    最后登录
    2025-6-7
     楼主| 发表于 2017-10-23 12:21:16 | 显示全部楼层
    小恩GG 发表于 2017-10-23 10:48
    不知道你用的是哪个芯片的,有些芯片的I2C的从机地址是10位地址,所以会有subaddress. ...

    从机 NXP的 PCA9555 IO口扩展芯片
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-10-23 15:11:22 | 显示全部楼层
    xxs-133546 发表于 2017-10-23 12:21
    从机 NXP的 PCA9555 IO口扩展芯片

    我是kinetis和LPC的工程师。
    所以只能帮你解决这两类芯片的问题。
    如果是使用kinetis芯片作为主机,无法和PCA9555 通信,你可以检查下I2C波形,看看是否满足从机波形了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-30 08:32
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    79

    主题

    239

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1095
    最后登录
    2025-6-7
     楼主| 发表于 2017-10-23 16:38:19 | 显示全部楼层
    小恩GG 发表于 2017-10-23 15:11
    我是kinetis和LPC的工程师。
    所以只能帮你解决这两类芯片的问题。
    如果是使用kinetis芯片作为主机,无法 ...

    主机用k64,  从机用PCA9555, 通讯没问题,只是对sdk 中 typedef struct _i2c_master_transfer 结构体有不明的地方,故而一问,否则只是照葫芦画瓢,并不能灵活运用。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    61

    主题

    233

    帖子

    7

    高级会员

    Rank: 4

    积分
    750
    最后登录
    2021-1-25
    发表于 2017-11-14 15:05:48 | 显示全部楼层
    小恩GG 发表于 2017-10-23 10:48
    建议你可以看下你芯片的参考手册,I2C章节,如果没有10位地址,那么subaddress 和长度当然都配置为0. ...

    不是吧,应该是从机内部的寄存器或者存储单元地址吧。 。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 20:28 , Processed in 0.101827 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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