NXP MCU 技术论坛
直播中

欲望都市

10年用户 953经验值
擅长:可编程逻辑
私信 关注
[问答]

使用MIMXRT685-EVK将WM8904连接到RT685的I3C总线,并通过I2C进行控制遇到的几个问题求解

我使用 MIMXRT685-EVK 将 WM8904 连接到 RT685 的 I3C 总线,并通过 I2C 进行控制。 请告诉我在这种情况下 PUR 的设置和处理。[问题] 1) 是否可以仅使用 I3CSDA 和 SCL 来控制 WM8904 P2_31并使用 PUR 作为 SWO?似乎可以设置它,但可以这样设置它吗?2) 当将 P2_31 用作 PUR 时,只要 SDA 上拉(例如 2.2kΩ),就可以保持 P2_31 未连接状态,这是否正确?
                                                         

回帖(1)

贾伟刚

2025-4-16 18:02:25

在将WM8904通过I3C总线(以I2C模式)连接到MIMXRT685-EVK时,以下是针对您提出的PUR设置问题的分析和建议:




问题1:是否可以使用I3C的SDA/SCL(P2_31作为PUR/SWO)控制WM8904?




  1. 引脚复用冲突分析  



    • P2_31的功能:在RT685中,P2_31可能被复用于I3C的SDA信号线。而SWO(Serial Wire Output)通常属于调试接口(如ARM SWD),需占用独立引脚(如PIO2_31可能不支持同时作为SWO和I3C_SDA)。

    • 关键结论:若将P2_31配置为I3C_SDA,则不能同时用作SWO。需检查芯片手册确认SWO的引脚分配,避免复用冲突。




  2. PUR的配置  



    • PUR的作用:PUR(Pull-Up Resistor)可能是内部上拉使能控制。若I3C总线需外接上拉电阻(如2.2kΩ),需通过软件禁用内部上拉(避免并联导致总电阻过小)。

    • 操作建议:  

      • 配置I3C模块为I2C兼容模式(通过寄存器I3CMODE设置为Legacy I2C)。  

      • 关闭P2_31的内部上拉(通过IOCON或GPIO配置),依赖外部上拉电阻。







问题2:当P2_31用作PUR时,外部上拉是否可替代?




  1. 外部上拉的优先级  



    • 若已在SDA/SCL线上连接外部上拉电阻(如2.2kΩ至3.3V),则无需启用内部PUR。否则,总线电平可能因过强上拉而无法正确翻转。

    • 验证方法:测量总线空闲时的电压。若接近VDD(如3.3V),则上拉正常;若偏低,需检查电阻值或连接。




  2. P2_31的物理连接  



    • 若P2_31仅作为内部PUR控制引脚(而非实际提供上拉路径),则无需连接外部电路,只需通过软件禁用内部上拉。  

    • 若P2_31需提供物理上拉路径(如作为上拉电阻的使能端),则需根据硬件设计连接,但此情况较罕见。






配置步骤总结




  1. 引脚复用配置  



    • 将P2_30/P2_31配置为I3C_SCL/I3C_SDA,并关闭SWO功能(选择其他引脚用于调试)。  

    • 代码示例(基于SDK):  
      CLOCK_EnableClock(kCLOCK_I3c);
      IOPCTL->FCON_I3C_SCL = IOCON_FUNC_ALT7 | IOCON_MODE_INACTIVE; // P2_30为I3C_SCL
      IOPCTL->FCON_I3C_SDA = IOCON_FUNC_ALT7 | IOCON_MODE_INACTIVE; // P2_31为I3C_SDA




  2. 上拉电阻处理  



    • 在SDA/SCL线上连接外部2.2kΩ上拉电阻至3.3V。  

    • 禁用内部上拉(参考寄存器I3C_PURGPIO_PIN_CNF):  
      I3C0->PUR = 0x00; // 禁用内部上拉(具体寄存器名称需查手册)




  3. I2C控制器初始化  



    • 配置I3C模块为I2C模式,设置时钟频率(如100kHz):  
      I3C_Init(I3C0, &i3cConfig); // 使用SDK提供的初始化函数






常见问题排查



  • 通信失败:检查I3C模块是否处于I2C模式、引脚复用是否正确、上拉电阻是否焊接良好。  

  • 信号波形畸变:用示波器观察SDA/SCL波形,确保上升时间符合I2C标准(通常需≤1µs@100kHz)。  

  • 地址冲突:确认WM8904的I2C地址(默认0x1A或0x1B)与软件配置一致。




通过以上配置,WM8904应能通过I3C总线(I2C模式)正常通信。若需进一步调试SWO,建议选择非I3C相关引脚(如P0_1或P1_0)。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分