at24c16读出为0的问题

2019-03-23 17:13发布

我用STM32F030F4P6读写AT24C16,可是写入0x55,读出为0.
我第一次用STM32F030,不知道跟F1有什么不同。
贴出部分代码:

//I2C??????
#define SDA     GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)
//I2C??????
#define SDA_0        GPIO_ResetBits(GPIOA, GPIO_Pin_6)
#define SDA_1   GPIO_SetBits(GPIOA, GPIO_Pin_6)
#define SCL_0   GPIO_ResetBits(GPIOA, GPIO_Pin_5)
#define SCL_1          GPIO_SetBits(GPIOA, GPIO_Pin_5)



        void GPIOForEEPROMInit(void)
{        
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//??
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//??
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6);
}

主程序
GPIOForEEPROMInit();
        WriteByteToEEROM(0,0x55);
        ms_delay(1000);
        temp=ReadByteFromEEROM(0);

请高手指教,谢谢!


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
chenbingjy
2019-03-24 02:17
/ void ack()//′ó»úÏìó|DÅoÅ£¬±íê¾òѽóêüêy¾Y
{        
        SDA_1;
        SCL_0;i2c_delay();
        SCL_1;i2c_delay();
        
        while(SDA);        
        SCL_0;        
}
我一开始初始化为输出,请问运行这句while(SDA);之前,还用不用初始化为输入

一周热门 更多>