if (EE_TYPE > AT24C16) /* 24C16以上的型号, 分2个字节发送地址 */
{
iic_send_byte(0XA0); /* 发送写命令, IIC规定最低位是0, 表示写入 */
iic_wait_ack(); /* 每次发送完一个字节,都要等待ACK */
iic_send_byte(addr >> 8);/* 发送高字节地址 */
}
else
{
iic_send_byte(0XA0 + ((addr >> 8) << 1)); /* 发送器件 0XA0 + 高位a8/a9/a10地址,写数据 */
}
iic_wait_ack(); /* 每次发送完一个字节,都要等待ACK */
iic_send_byte(addr % 256); /* 发送低位地址 */
iic_wait_ack(); /* 等待ACK, 此时地址发送完成了 */
EETYPE为宏定义,具体如下
#define AT24C0

文章详细解释了在使用IIC通信协议与24C系列EEPROM交互时,如何根据器件型号(如24C01到24C16)正确发送地址。对于不同型号,地址格式和发送方式有所不同,例如24C16以下的型号需要考虑高位地址的处理,而24C16及以上则直接分两次发送。文中提到了位移操作在组合器件地址和控制位中的应用。
&spm=1001.2101.3001.5002&articleId=130833208&d=1&t=3&u=77d62236843b484690466dc891c21c3e)
5646

被折叠的 条评论
为什么被折叠?



