这个也是iic总线结构!
在此总结一下iic的程序结构
在同一个函数内读、写操作(以读eeprom为例)
(1)开启总线
(2)写地址字,等待回应(写命令)
(3)写要读的地址,等待回应
(4)再次开启总线
(5)写地址字,等待回应(读命令)
(6)读要读的地址
(7)发出回应
(8)结束总线
放上代码:
unsigned char read_eeprom(unsigned char add)
{
unsigned char dat;
IIC_Start(); //(1)开启总线
IIC_SendByte(SlaveAddrW); //(2)写地址字,等待回应(写命令)
IIC_WaitAck();
IIC_SendByte(add); //(3)写要读的地址,等待回应
IIC_WaitAck();
IIC_Start(); //(4)再次开启总线
IIC_SendByte(SlaveAddrR); //(5)写地址字,等待回应(读命令)
IIC_WaitAck();
dat = IIC_RecByte(); //(6)读要读的地址
IIC_Ack(0); //(7)发出回应
IIC_Stop(); //(8)结束总线
return dat;
}
写eeprom的过程与PCF8591一样
void write_eeprom(unsigned char add,unsigned char dat)
{
IIC_Start();
IIC_SendByte(SlaveAddrW); //地址字
IIC_WaitAck();
IIC_SendByte(add); //传要写的地址
IIC_WaitAck();
IIC_SendByte(dat); //要写的数字
IIC_WaitAck();
IIC_Stop(); //结束
somedelay(10); //适当延时
}
现在总结一下I2C官方驱动中的坑:
(1)需要改延时为33个nop
(2)读数据后的主机发出的回应是ack(0)
上一篇:【蓝桥杯单片机组】PCF8591 关于蓝桥杯坑爹I2C的吐槽
下一篇:【蓝桥杯单片机组】(3)键盘
推荐阅读最新更新时间:2024-11-06 10:52
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- DC2157A,用于 LTM4630EY-1 双路 18A/单路 36A 降压模块稳压器的演示板,4.5V = VIN = 15V,Vout1 = 1.5V @ 18A,Vout2 = 1V @ 18A
- 基于S2-LP的1 GHz以下收发器开发套件
- LT1764AMPQ SCR 预稳压器的典型应用可提供跨线路变化的效率
- CleO35A,基于 CleO35 模块的开发板,带有 FPC/FFC 50 LCD 连接器 + 3.5 英寸 TFT LCD 显示面板,预装电阻式触摸屏
- KIT_XC886_DC_V1,XC878CM MCU 板,用于 PMSM 电机的无传感器 FOC + 数字 PFC
- AOZ1282CI-1 EZBuck 600mA 简易降压稳压器的典型应用
- LT6656ACS6-3.3、3.3V 升压输出电流电压基准的典型应用
- LT8570IDD-1 1.5MHz、5 至 12V 输出升压转换器的典型应用
- AM2G-2415DH30Z ±15V 2 瓦 DC-DC 转换器的典型应用
- SI5338-EVB,使用 SI5335 系列任意频率、任意输出时钟发生器和时钟合成器的评估板
- 下载赢礼|雅特生 PMBus 接口非隔离数字 DC-DC 转换器
- 共模滤波器标注的额定电压为250VAC,能用于直流电路吗
- 请教一个关于嵌入式,硬盘名字的问题 急啊!到现在还没找到解决方法
- EEWORLD大学堂----电源设计小贴士18:稳压器的输出电压精度
- 关于DIY数控电源外壳及面板背板的一点想法
- 调节三色LED的亮度问题
- 小白求STM32定时器触发多路ADC指导程序,之前找到的都触发不了
- TO92S封闭的3引脚 直插元件,引脚间距只有0.45mm,焊接后偶尔会出现两引脚间短路
- 【二哈识图人工智能视觉传感器】3:二哈识图视觉传感器与STM32通信实现颜色识别实验
- WINCE 60下怎么写SPI的驱动?