华大HC32L136软仿I2C
本帖最后由 zy16816888 于 2020-11-18 14:45 编辑有没有人用过华大HC32L136软I2C的,可以发个例程吗?
我在用这块芯片,想设置SDA_IN和SDA_OUT的时候总发生错误
用的引脚:
IIC_SDA PB11
IIC_SCL PB10
其中IO口方向设置为:
//IO方向设置
void SDA_IN()
{
M0P_GPIO->PBDIR &= ~(1<<11);
}
void SDA_OUT()
{
M0P_GPIO->PBDIR|=(1<<11);
}
需要先设置引脚方向,然后进行引脚的操作才可以。 看别人照片 发表于 2020-11-19 08:53
需要先设置引脚方向,然后进行引脚的操作才可以。
//IO方向设置
void SDA_IN()
{
M0P_GPIO->PBDIR &= ~(1<<11);
}
void SDA_OUT()
{
M0P_GPIO->PBDIR|=(1<<11);
}
我就是这个代码设置引脚方向,但是不对! 将IO口设置为一般的IO口,然后按照时序进行仿真就可以了。
IO口直接设置开漏输出就可以了不用切换输出和输入
stc_gpio_cfg_t stcGpioCfg;
DDL_ZERO_STRUCT(stcGpioCfg); ///< 初始化结构体变量的值为0
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE); ///< 开启GPIO时钟门控
stcGpioCfg.enDir = GpioDirOut; ///< 端口方向配置->输出
stcGpioCfg.enOD = GpioOdEnable; ///< 端口开漏输出配置->开漏输出使能
stcGpioCfg.enPu = GpioPuEnable; ///< 端口上拉配置->使能
stcGpioCfg.enPd = GpioPdDisable; ///< 端口下拉配置->禁止
Gpio_Init(AT_PORT, AT_SCL_PIN, &stcGpioCfg); ///< 初始化PB8
Gpio_Init(AT_PORT, AT_SDA_PIN, &stcGpioCfg); ///< 初始化PB9
#define I2C0_SCL_L() HC_GPIORESET(AT_PORT, AT_SCL_PIN)
#define I2C0_SCL_H() HC_GPIOSET(AT_PORT, AT_SCL_PIN)
#define I2C0_SDA_L() HC_GPIORESET(AT_PORT, AT_SDA_PIN)
#define I2C0_SDA_H() HC_GPIOSET(AT_PORT, AT_SDA_PIN)
#define SDA_READ() (Gpio_GetInputIO(AT_PORT, AT_SDA_PIN)) 迷惘186 发表于 2020-11-19 09:42
IO口直接设置开漏输出就可以了不用切换输出和输入
stc_gpio_cfg_t stcGpioCfg;
你这个我没试过呢,谢谢咯! 迷惘186 发表于 2020-11-19 09:42
IO口直接设置开漏输出就可以了不用切换输出和输入
stc_gpio_cfg_t stcGpioCfg;
你这个我没试过呢,谢谢咯,我试下! 你的IO口是如何初始化的?没有看见代码。 设置为一般的IO口
页:
[1]