FM24C64无法读写数据问题,大神帮我!!!!!

2019-10-12 14:07发布

首先IIC.H里修改的内容,端口映射不会有错,检查了好几遍了

//IO方向设置
#define SDA_IN()  {GPIOD->CRL&=0X0FFFFFFF;GPIOD->CRL|=0X80000000;} 
#define SDA_OUT() {GPIOD->CRL&=0X0FFFFFFF;GPIOD->CRL|=0X30000000;} 

//IO操作函数  
#define IIC_SCL    Dout(6) //SCL
#define IIC_SDA    Dout(7) //SDA  
#define READ_SDA   PDin(7)  //输入SDA 

然后IIC.C里,我看有的人代码里是GPIO_Mode_Out_OD,不过换了也没啥意义。

//初始化IIC
void IIC_Init(void)
{     
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE );
  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_SetBits(GPIOD,GPIO_Pin_6|GPIO_Pin_7); //PB10,PB11 输出高
}

接着24CXX.H 的EE_TYPE改成AT24C64,不太清楚AT24C64和FM24CL64的差别

最后24CXX.C里面没有动,代码也是新的,不存在多一个ACK的问题,样例的在战舰开发板上跑没问题,修改后的在自己的板子上跑就没反应了,自己改了许多,也用了许多网上别人说成功的代码,都不行。


求大神帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
sakaun
1楼-- · 2019-10-12 19:15
回复【3楼】正点原子:
---------------------------------
把输出模式改成开漏之后,单字符发送接收成功了,连续多字符读写不行,我再自己写一个连续读写的函数好了!
styleno1
2楼-- · 2019-10-12 21:17
I2C原理上需要开漏模式。FM/AT的确实是有区别的,查阅手册。
正点原子
3楼-- · 2019-10-12 22:02
 精彩回答 2  元偷偷看……
hyf1100
4楼-- · 2019-10-13 03:51
这个驱动能发给我一下吗

一周热门 更多>