HC32F460 IIC
HC32F460JETA-LQFP48 配置IIC,PB12\PB13可以正常运行,换PA10\PA11就不行了,时钟和数据都监测不到,为啥吖?已确认PA10\PA11未被占用,且支持IIC输出,各位大佬,救救孩子{:cry:}//宏定义
#define ADC_ADDRESS (0x48U) //01001000<<1 = 1001000
#define I2C_ADC_SCL_PORT (GPIO_PORT_B)
#define I2C_ADC_SCL_PIN (GPIO_PIN_12)
#define I2C_ADC_SDA_PORT (GPIO_PORT_B)
#define I2C_ADC_SDA_PIN (GPIO_PIN_13)
#define I2C_ADC_GPIO_SCL_FUNC (GPIO_FUNC_49)
#define I2C_ADC_GPIO_SDA_FUNC (GPIO_FUNC_48)
#define I2C_ADC_UNIT (CM_I2C3)
#define I2C_ADC_FCG_USE (FCG1_PERIPH_I2C3)
//初始化部分
int32_t ADC_POT_Initialize(void)
{
LL_PERIPH_WE(LL_PERIPH_ALL);
//ADC
/* Initialize I2C port*/
GPIO_SetFunc(I2C_ADC_SCL_PORT, I2C_ADC_SCL_PIN, I2C_ADC_GPIO_SCL_FUNC);
GPIO_SetFunc(I2C_ADC_SDA_PORT, I2C_ADC_SDA_PIN, I2C_ADC_GPIO_SDA_FUNC);
//GPIO_SetFunc(I2C_PTT_SCL_PORT, I2C_PTT_SCL_PIN, I2C_PTT_GPIO_SCL_FUNC);
//GPIO_SetFunc(I2C_PTT_SDA_PORT, I2C_PTT_SDA_PIN, I2C_PTT_GPIO_SDA_FUNC);
/* Enable I2C Peripheral*/
FCG_Fcg1PeriphClockCmd(I2C_ADC_FCG_USE, ENABLE);
// FCG_Fcg1PeriphClockCmd(I2C_PTT_FCG_USE, ENABLE);
int32_t i32Ret;
stc_i2c_init_t stcI2cInit;
float32_t fErr;
I2C_DeInit(I2C_ADC_UNIT);
//I2C_DeInit(I2C_PTT_UNIT);
(void)I2C_StructInit(&stcI2cInit);
stcI2cInit.u32ClockDiv = I2C_CLK_DIV8;
stcI2cInit.u32Baudrate = I2C_ADC_BAUDRATE;
stcI2cInit.u32SclTime = 3UL;
i32Ret = I2C_Init(I2C_ADC_UNIT, &stcI2cInit, &fErr);
if(i32Ret != LL_OK){
while(1);
}
/*stcI2cInit.u32Baudrate = I2C_PTT_BAUDRATE;
i32Ret = I2C_Init(I2C_PTT_UNIT, &stcI2cInit, &fErr);
if(i32Ret != LL_OK){
while(1);
}*/
I2C_BusWaitCmd(I2C_ADC_UNIT, ENABLE);
//I2C_BusWaitCmd(I2C_PTT_UNIT, ENABLE);
/* Peripheral registers write protected */
LL_PERIPH_WP(LL_PERIPH_ALL);
uint8_t data;
i32Ret = I2C_Master_Receive(I2C_ADC_UNIT, ADC_ADDRESS | 0x01, data, 3);
if(i32Ret == LL_OK){
memcpy(&adc_config ,&data, 1);
}
return i32Ret;
}
//不能正常运行的宏,我就改了针脚配置
#define ADC_ADDRESS (0x48U)
#define I2C_ADC_SCL_PORT (GPIO_PORT_A)
#define I2C_ADC_SCL_PIN (GPIO_PIN_10)
#define I2C_ADC_SDA_PORT (GPIO_PORT_A)
#define I2C_ADC_SDA_PIN (GPIO_PIN_11)
#define I2C_ADC_GPIO_SCL_FUNC (GPIO_FUNC_49)
#define I2C_ADC_GPIO_SDA_FUNC (GPIO_FUNC_48)
#define I2C_ADC_UNIT (CM_I2C1)
#define I2C_ADC_FCG_USE (FCG1_PERIPH_I2C1)
有没有可能是你板子有问题,也就是你PA10/PA11的引脚上有电容,或者没有上拉电阻,或者上拉电阻太大? wubangmi 发表于 2024-3-15 09:21
有没有可能是你板子有问题,也就是你PA10/PA11的引脚上有电容,或者没有上拉电阻,或者上拉电阻太大? ...
昨天已经解决了,就是你说的这个问题,没有上拉电阻,我太依赖开发板了{:cry:}{:cry:} 呵呵,IIC必须要加上啦电阻才得行。 wubangmi 发表于 2024-3-15 09:21
有没有可能是你板子有问题,也就是你PA10/PA11的引脚上有电容,或者没有上拉电阻,或者上拉电阻太大? ...
上拉电阻是必须的嘛?IIC通讯电气设计 Luxuff 发表于 2024-3-15 13:17
昨天已经解决了,就是你说的这个问题,没有上拉电阻,我太依赖开发板了 ...
开发板一般情况下IIC有相关的跳线吧? 在配置 HC32F460JETA-LQFP48 的 I2C 时,如果 PB12 和 PB13 可以正常工作,但 PA10 和 PA11 不能工作,这可能涉及多个因素,包括引脚配置、外设设置、或者其他硬件问题。
页:
[1]