完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用原子的IIC程序移植的,读取FM24C64的读和写操作都是正常的,但是写入蓝牙模块的EEPROM就不对了,蓝牙模块的EEPROM和铁电存储不一样嘛?!请高手指点一下,以下是写操作和主函数:
u8 AT24CXX_ReadOneByte(u16 ReadAddr) { u8 temp=0; IIC_Start(); if(EE_TYPE>AT24C16)//160 { IIC_Send_Byte(0XA0); //发送写命令 IIC_Wait_Ack(); IIC_Send_Byte(ReadAddr>>8);//发送高地址 IIC_Wait_Ack(); } else { IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据 IIC_Wait_Ack(); } IIC_Send_Byte(ReadAddr%256); //发送低地址 IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(0XA1); //进入接收模式 IIC_Wait_Ack(); temp=IIC_Read_Byte(0); IIC_Stop();//产生一个停止条件 return temp; } void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite) { u8 num=0; IIC_Start(); if(EE_TYPE>AT24C16) { IIC_Send_Byte(0XA0); //发送写命令 IIC_Wait_Ack(); IIC_Send_Byte(WriteAddr>>8);//发送高地址 IIC_Wait_Ack(); }else { IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //发送器件地址0XA0,写数据 IIC_Wait_Ack(); } IIC_Send_Byte(WriteAddr%256); //发送低地址 IIC_Wait_Ack(); IIC_Send_Byte(DataToWrite); //发送字节 IIC_Wait_Ack(); IIC_Stop();//产生一个停止条件 delay_ms(10); } int main(void) { uint16_t i=0,j=0,k=0,n=0,m=0,t=0; RCC_cfg(); Sys_init(); delay_init(72); while(1) { AT24CXX_WriteOneByte(0xC2,0x50); k++; if(k>100) { k=0; AT24CXX_Read(0xC0,IIC_buf_Read,10);// } } } |
|
相关推荐
8个回答
|
|
|
|
|
|
我用的蓝牙里面有些参数需要改变EEPROM中的数据的 ,可是写不进去数据!
|
|
|
|
哦,没玩过这样的蓝牙,呵呵.
|
|
|
|
读写的操作应该和铁电存储是不是一样的原理啊?!
|
|
|
|
|
|
|
|
铁电速度快,可以不加任何延时.
|
|
|
|
但是EEPROM就不行了,每次写入之后得等待10ms左右
|
|
|
|
各位 谁有原子哥最新的IIC 读写FM24CXX的驱动呀?
|
|
|
|
只有小组成员才能发言,加入小组>>
362浏览 1评论
482浏览 1评论
602浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
491浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
467浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 22:26 , Processed in 0.772349 second(s), Total 91, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号