一、上拉电阻 1.定义:将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。 如下图所示,
2.上拉电阻的作用 a.让引脚在悬空的状态下(开漏)有确定的电平。 b.增加驱动电流。 二、EEPROM 1.定义:电可擦除可编程只读程序存储器。 2.特点:内存小,只能存储简单数据,掉电非易失。 3.时序图 a》AT24C02写入一个字节
b》AT24C02写入多个字节
c》AT24C02按地址读取字节
d》AT24C02随机读取字节
e》AT24C02顺序读取字节
4.寻址字节的位定义 从机地址(7位) + 传输方向位(1位)。 从机地址 = 地址码1010 + 3位可编写 --> 1 0 1 0 A2 A1 A0 R/W 传输方向位 = 0(主机 -> 从机)、1(从机 -> 主机) 5.传输数据时,从高位向低位传输。AT24C02最多一次写入16个字节,读的时候是可以继续读。当写入的数据过多时,会覆盖前面的数据。因此向AT24C02写入数据时,不能超过16个字节。 6.AT24C02的内存大小为2K(256*8bit),为2线串行接口。 7.AT24C02相关代码,仅供参考。 #define Uchar unsigned char
a.写入数据 [plain] view plain copy
- Uchar AT24C02_send_str(Uchar devaddr, Uchar romaddr, Uchar *s, Uchar num)
- {
- Uchar i;
-
- iic_start();
- iic_send_byte(devaddr);
- if(0 == ack)
- {
- return ERR;
- }
- iic_send_byte(romaddr);
- if(0 == ack)
- {
- return ERR;
- }
- for(i = 0; i < num; i++)
- {
- iic_send_byte(*s);
- if(0 == ack)
- {
- return ERR;
- }
- s++;
- }
- iic_stop();
-
- return SUCC;
- }
b.读出数据
[plain] view plain copy
- Uchar AT24C02_rcv_str(Uchar devaddr, Uchar romaddr, Uchar *s, Uchar num)
- {
- Uchar i;
-
- iic_start();
- iic_send_byte(devaddr);
- if(0 == ack)
- {
- return ERR;
- }
- iic_send_byte(romaddr);
- if(0 == ack)
- {
- return ERR;
- }
- iic_start();
- iic_send_byte(devaddr + 1);
- if(0 == ack)
- {
- return ERR;
- }
- for(i = 0; i < num - 1; i++)
- {
- *s = iic_rcv_byte();
- iic_ack();
- s++;
- }
- *s = iic_rcv_byte();
- iic_noack();
- iic_stop();
-
- return SUCC;
- }
|