请教下,使用rt1176 硬件 i2c1 死活都不行 ?
请教下,使用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, &masterConfig, LPI2C_CLOCK_FREQUENCY); // 第一次初始化便于打开时钟
我单独吧 sda 管脚配置为普通的io 输出高低电平也不行,不知道是不是这个 i2c-sda 的管脚坏了还是这么回事呀 ??
论逻辑分析仪解决问题的好处 lb0857 发表于 2023-5-2 14:52
论逻辑分析仪解决问题的好处
(引用自2楼)
现在的问题是 这个 i2c1 的 sda 管脚始终都没有输出呀,一直都是高电平状态
我把他设置为普通的 io 口 进行测试输出 高低电平也是没有反应,也是一直都是高电平的,
nxp的 sdk 里面的例程下载进去也不行,管脚配置都是一样的,估计是不是这个芯片的 sda 口已经坏了 呀 ?
但是我测量 此脚的 对地电阻与正常的 管脚的 对地地址也基本一致,所以现在是有些迷糊了呀
其他 的 i2c5, i2c6 随便配置一下就可以正常工作,就唯独这个 i2c1 不行 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 也不工作,有些犯迷糊了呀 上原理图吧
嵌入式走得远 走的深
硬件少不了滴{:lol:} lb0857 发表于 2023-5-7 15:05
上原理图吧
嵌入式走得远 走的深
硬件少不了滴
(引用自5楼)
请笑纳帮忙分析分析看看
I2C单元总时钟有没有使能?
SDA引脚有没有配置为I2C功能?
SDA引脚有没有上拉/电阻?
I2C的时钟分频、占空比、转换速度等参数有没有配置好?
I2C总线初始化完毕后运行:
while(1){
向 I2C总线写一个字节;
延时100ms;
}
然后用示波器或者逻辑分析仪看SCL、SDA有没有正确波形与数据;
本帖最后由 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_tclockHz = 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, &masterConfig, LPI2C_CLOCK_FREQUENCY); // 第一次初始化便于打开时钟
EEPROM_INFO("bsp_init_bus_i2c1 clockHz = %d\r\n", clockHz);
}
这个板子国内没有厂家做,所以也没法玩 honami520 发表于 2023-5-19 13:00
这个板子国内没有厂家做,所以也没法玩
(引用自10楼)
我也是无意间在闲鱼购得的, 刚开始我以为有很多,后来才发现也只有一片而已,
{:cry:} {:lol:}
页:
[1]