搜索
bottom↓
回复: 10

请教下,使用rt1176 硬件 i2c1 死活都不行 ?

[复制链接]

出0入0汤圆

发表于 2023-5-2 13:31:05 | 显示全部楼层 |阅读模式
请教下,使用rt1176 硬件 i2c1 死活都不行 ?

硬件 i2c1 使用管脚 R15, R16 编号

i2c1-sda 管脚始终都是出于高电平状态,

/*
lpi2c_polling_b2b_master_cm4 / lpi2c_polling_b2b_master_cm7 例程
方向:没有配置
software input on: enabled
pull up/down config: pull down
pull/keeper select: keeper
开漏:enable
驱动强度:normal
转换速度:slow
*/
  IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_08_LPI2C1_SCL,           /* GPIO_AD_08 is configured as LPI2C1_SCL */
      1U);                                    /* Software Input On Field: Force input path of pad GPIO_AD_08 */
  IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_09_LPI2C1_SDA,           /* GPIO_AD_09 is configured as LPI2C1_SDA */
      1U);                                    /* Software Input On Field: Force input path of pad GPIO_AD_09 */

  IOMUXC_SetPinConfig(
      IOMUXC_GPIO_AD_08_LPI2C1_SCL,           /* GPIO_AD_08 PAD functional properties : */
      0x22U);                                 /* Slew Rate Field: Slow Slew Rate
                                                 Drive Strength Field: normal drive strength
                                                 Pull / Keep Select Field: Pull Disable, Highz
                                                 Pull Up / Down Config. Field: Weak pull down
                                                 Open Drain Field: Enabled
                                                 Domain write protection: Both cores are allowed
                                                 Domain write protection lock: Neither of DWP bits is locked */
  IOMUXC_SetPinConfig(
      IOMUXC_GPIO_AD_09_LPI2C1_SDA,           /* GPIO_AD_09 PAD functional properties : */
      0x22U);                                 /* Slew Rate Field: Slow Slew Rate
                                                 Drive Strength Field: normal drive strength
                                                 Pull / Keep Select Field: Pull Disable, Highz
                                                 Pull Up / Down Config. Field: Weak pull down
                                                 Open Drain Field: Enabled
                                                 Domain write protection: Both cores are allowed
                                                 Domain write protection lock: Neither of DWP bits is locked */

       
    /*
     * masterConfig.debugEnable = false;
     * masterConfig.ignoreAck = false;
     * masterConfig.pinConfig = kLPI2C_2PinOpenDrain;
     * masterConfig.baudRate_Hz = 100000U;
     * masterConfig.busIdleTimeout_ns = 0;
     * masterConfig.pinLowTimeout_ns = 0;
     * masterConfig.sdaGlitchFilterWidth_ns = 0;
     * masterConfig.sclGlitchFilterWidth_ns = 0;
     */
    LPI2C_MasterGetDefaultConfig(&masterConfig);
       
    /* Change the default baudrate configuration */
    masterConfig.baudRate_Hz = LPI2C_BAUDRATE;

    /* Initialize the LPI2C master peripheral */       
    LPI2C_MasterInit(iic_index[IIC_1], &masterConfig, LPI2C_CLOCK_FREQUENCY);   // 第一次初始化便于打开时钟


我单独吧 sda 管脚配置为普通的io 输出高低电平也不行,  不知道是不是这个 i2c-sda 的管脚坏了还是这么回事呀 ??




阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出1325入193汤圆

发表于 2023-5-2 14:52:14 来自手机 | 显示全部楼层
论逻辑分析仪解决问题的好处

出0入0汤圆

 楼主| 发表于 2023-5-6 12:23:59 | 显示全部楼层
lb0857 发表于 2023-5-2 14:52
论逻辑分析仪解决问题的好处
(引用自2楼)

现在的问题是 这个 i2c1 的 sda 管脚始终都没有输出呀,一直都是高电平状态

我把他设置为普通的 io 口 进行测试输出 高低电平也是没有反应,也是一直都是高电平的,

nxp的 sdk 里面的例程下载进去也不行,管脚配置都是一样的,估计是不是这个芯片的 sda 口已经坏了 呀 ?

但是我测量 此脚的 对地电阻与正常的 管脚的 对地地址也基本一致,所以现在是有些迷糊了呀

其他 的 i2c5, i2c6 随便配置一下就可以正常工作,就唯独这个 i2c1 不行

出0入0汤圆

 楼主| 发表于 2023-5-7 15:00:26 | 显示全部楼层
lb0857 发表于 2023-5-2 14:52
论逻辑分析仪解决问题的好处
(引用自2楼)

我测量这个 sda 管脚对地 的电阻值,与 scl 的基本一致,应该可以确定焊接是没有问题的吧

当测量 sda(r16) 对低电压时貌似发现了问题, 电压只有 1.8v, 而 scl 是 3.3v  , sda 电平 怎么会低那么多呀 ?

我看例程使用 i2c1 的配置也没有什么特别的地方啊,而且 sdk 例程使用的也是这 r15, r16 这 2个管脚,

我吧 sdk 里的 i2c1 例程直接下载到板子,貌似 i2c1 也不工作,有些犯迷糊了呀

出1325入193汤圆

发表于 2023-5-7 15:05:25 | 显示全部楼层
上原理图吧
嵌入式走得远 走的深
硬件少不了滴

出0入0汤圆

 楼主| 发表于 2023-5-17 16:27:05 | 显示全部楼层
lb0857 发表于 2023-5-7 15:05
上原理图吧
嵌入式走得远 走的深
硬件少不了滴
(引用自5楼)



请笑纳帮忙分析分析看看




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入45汤圆

发表于 2023-5-17 17:01:51 | 显示全部楼层
I2C单元总时钟有没有使能?
SDA引脚有没有配置为I2C功能?
SDA引脚有没有上拉/电阻?
I2C的时钟分频、占空比、转换速度等参数有没有配置好?

I2C总线初始化完毕后运行:
while(1){
  向 I2C总线写一个字节;
  延时100ms;
}

然后用示波器或者逻辑分析仪看SCL、SDA有没有正确波形与数据;

出0入0汤圆

 楼主| 发表于 2023-5-19 11:15:27 | 显示全部楼层
本帖最后由 hpdell 于 2023-5-19 11:36 编辑
Arm2048 发表于 2023-5-17 17:01
I2C单元总时钟有没有使能?
SDA引脚有没有配置为I2C功能?
SDA引脚有没有上拉/电阻?
(引用自7楼)


i2c1 外设有上啦电阻 4.7k, 使能了 i2c1, i2c 总时钟启用了

i2c1 的 sda 管脚我配置为普通的 io 口模式,仅输出高低电平测试时,这个 sda 管脚的电平也是保持高电平不变的??

而 scl 管脚配置为 普通 io 口模式测试输出 高低电平 是可以正常 变化的,

/*
* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
BOARD_InitPins:
- options: {callFromInitBoot: 'true', coreID: cm7, enableClock: 'true'}
- pin_list:
  - {pin_num: M15, peripheral: LPUART1, signal: RXD, pin_signal: GPIO_AD_25, software_input_on: Disable, pull_up_down_config: Pull_Down, pull_keeper_select: Keeper,
    open_drain: Disable, drive_strength: High, slew_rate: Slow}
  - {pin_num: L13, peripheral: LPUART1, signal: TXD, pin_signal: GPIO_AD_24, software_input_on: Disable, pull_up_down_config: Pull_Down, pull_keeper_select: Keeper,
    open_drain: Disable, drive_strength: High, slew_rate: Slow}
  - {pin_num: R15, peripheral: LPI2C1, signal: SCL, pin_signal: GPIO_AD_08, software_input_on: Enable, pull_up_down_config: Pull_Down, pull_keeper_select: Keeper,
    open_drain: Enable, drive_strength: Normal, slew_rate: Slow}
  - {pin_num: R16, peripheral: LPI2C1, signal: SDA, pin_signal: GPIO_AD_09, software_input_on: Enable, pull_up_down_config: Pull_Down, pull_keeper_select: Keeper,
    open_drain: Enable, drive_strength: Normal, slew_rate: Slow}
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
*/

/* FUNCTION ************************************************************************************************************
*
* Function Name : BOARD_InitPins, assigned for the Cortex-M7F core.
* Description   : Configures pin routing and optionally pin electrical features.
*
* END ****************************************************************************************************************/
void BOARD_InitPins(void) {
  CLOCK_EnableClock(kCLOCK_Iomuxc);           /* LPCG on: LPCG is ON. */

  IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_08_LPI2C1_SCL,           /* GPIO_AD_08 is configured as LPI2C1_SCL */
      1U);                                    /* Software Input On Field: Force input path of pad GPIO_AD_08 */

  IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_09_LPI2C1_SDA,           /* GPIO_AD_09 is configured as LPI2C1_SDA */
      1U);                                    /* Software Input On Field: Force input path of pad GPIO_AD_09 */

  IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_24_LPUART1_TXD,          /* GPIO_AD_24 is configured as LPUART1_TXD */
      0U);                                    /* Software Input On Field: Input Path is determined by functionality */

  IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_25_LPUART1_RXD,          /* GPIO_AD_25 is configured as LPUART1_RXD */
      0U);                                    /* Software Input On Field: Input Path is determined by functionality */

  IOMUXC_SetPinConfig(
      IOMUXC_GPIO_AD_08_LPI2C1_SCL,           /* GPIO_AD_08 PAD functional properties : */
      0x10U);                                 /* Slew Rate Field: Slow Slew Rate
                                                 Drive Strength Field: normal drive strength
                                                 Pull / Keep Select Field: Pull Disable, Highz
                                                 Pull Up / Down Config. Field: Weak pull down
                                                 Open Drain Field: Enabled
                                                 Domain write protection: Both cores are allowed
                                                 Domain write protection lock: Neither of DWP bits is locked */

  IOMUXC_SetPinConfig(
      IOMUXC_GPIO_AD_09_LPI2C1_SDA,           /* GPIO_AD_09 PAD functional properties : */
      0x10U);                                 /* Slew Rate Field: Slow Slew Rate
                                                 Drive Strength Field: normal drive strength
                                                 Pull / Keep Select Field: Pull Disable, Highz
                                                 Pull Up / Down Config. Field: Weak pull down
                                                 Open Drain Field: Enabled
                                                 Domain write protection: Both cores are allowed
                                                 Domain write protection lock: Neither of DWP bits is locked */
  IOMUXC_SetPinConfig(
      IOMUXC_GPIO_AD_24_LPUART1_TXD,          /* GPIO_AD_24 PAD functional properties : */
      0x02U);                                 /* Slew Rate Field: Slow Slew Rate
                                                 Drive Strength Field: high drive strength
                                                 Pull / Keep Select Field: Pull Disable, Highz
                                                 Pull Up / Down Config. Field: Weak pull down
                                                 Open Drain Field: Disabled
                                                 Domain write protection: Both cores are allowed
                                                 Domain write protection lock: Neither of DWP bits is locked */

  IOMUXC_SetPinConfig(
      IOMUXC_GPIO_AD_25_LPUART1_RXD,          /* GPIO_AD_25 PAD functional properties : */
      0x02U);                                 /* Slew Rate Field: Slow Slew Rate
                                                 Drive Strength Field: high drive strength
                                                 Pull / Keep Select Field: Pull Disable, Highz
                                                 Pull Up / Down Config. Field: Weak pull down
                                                 Open Drain Field: Disabled
                                                 Domain write protection: Both cores are allowed
                                                 Domain write protection lock: Neither of DWP bits is locked */
}



/****************************************************************************************************

****************************************************************************************************/

#define LPI2C_CLOCK_FREQUENCY (CLOCK_GetRootClockFreq(kCLOCK_Root_Lpi2c1))                                       

#define LPI2C_BAUDRATE       (uint32_t)(400 * 1000U)     // 400KHz

void bsp_init_bus_i2c1(void)
{
        CLOCK_EnableClock(kCLOCK_Iomuxc);           /* LPCG on: LPCG is ON. */
       
        uint32_t  clockHz = LPI2C_CLOCK_FREQUENCY;
        lpi2c_master_config_t masterConfig;

//        clock_root_config_t rootCfg = {0};
//        rootCfg.mux =  kCLOCK_LPI2C1_ClockRoot_MuxOsc24MOut;
//        rootCfg.div = 1;
//        CLOCK_SetRootClock(kCLOCK_Root_Lpi2c1, &rootCfg);
       
        BOARD_InitPinsI2C1();

    /*
     * masterConfig.debugEnable = false;
     * masterConfig.ignoreAck = false;
     * masterConfig.pinConfig = kLPI2C_2PinOpenDrain;
     * masterConfig.baudRate_Hz = 100000U;
     * masterConfig.busIdleTimeout_ns = 0;
     * masterConfig.pinLowTimeout_ns = 0;
     * masterConfig.sdaGlitchFilterWidth_ns = 0;
     * masterConfig.sclGlitchFilterWidth_ns = 0;
     */
    LPI2C_MasterGetDefaultConfig(&masterConfig);
       
    /* Change the default baudrate configuration */
    masterConfig.baudRate_Hz = LPI2C_BAUDRATE;

    /* Initialize the LPI2C master peripheral */       
    LPI2C_MasterInit(iic_index[IIC_1], &masterConfig, LPI2C_CLOCK_FREQUENCY);   // 第一次初始化便于打开时钟

        EEPROM_INFO("bsp_init_bus_i2c1 clockHz = %d\r\n", clockHz);
}





















出0入90汤圆

发表于 2023-5-19 13:00:30 | 显示全部楼层
这个板子国内没有厂家做,所以也没法玩

出0入0汤圆

 楼主| 发表于 2023-5-20 15:03:21 | 显示全部楼层
honami520 发表于 2023-5-19 13:00
这个板子国内没有厂家做,所以也没法玩
(引用自10楼)

我也是无意间在闲鱼购得的, 刚开始我以为有很多,后来才发现也只有一片而已,

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-15 18:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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