diff --git a/AGENTS.md b/AGENTS.md
index 601442e..1951199 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -13,6 +13,8 @@ STM32CubeMX 生成的项目,使用 **Keil MDK-ARM V5.32** 工具链。
- `lcd.c/h` — 绘图模块(字符/字符串、线条、矩形、圆形)
- `lcd_data.c/h` — ASCII 8×16 字库
- `hz16_data.c/h` — CJK 16×16 字库
+- `STM32F103C8T6/Drivers/BSP/AT24C02/` — AT24C02 EEPROM 驱动
+ - `at24c02.c/h` — I2C 读写(字节/页/连续,自动跨页)
## 硬件配置
- **MCU**: STM32F103C8T6 (LQFP48, 72MHz, 64KB Flash, 20KB RAM)
@@ -20,18 +22,20 @@ STM32CubeMX 生成的项目,使用 **Keil MDK-ARM V5.32** 工具链。
- **外设**:
- USART1: PA9 (TX), PA10 (RX) — 异步模式
- SPI2: PB13 (SCK), PB15 (MOSI) — 18MHz, DMA1_Channel5
+ - I2C1: PB8 (SCL), PB9 (SDA) — AT24C02 EEPROM
- LED: PC13 (低电平有效,上拉)
- 按键: PB3 (KEY1), PB4 (KEY2), PB5 (KEY3), PC14 (KEY4), PC15 (KEY5) — 下拉
- LCD: PB10 (DC), PB11 (CS), PB12 (RST), PB13 (SCK), PB15 (SDA) — ST7735S 128x160
- - TIM4: PB6~9 四路 1kHz PWM
- - TIM3: CH4 内部触发 ADC1 注入组
- - ADC1: IN0~IN3 (PA0~PA3), 注入组, TIM3_CH4 触发
+ - TIM3: PA6~PB1 四路 1kHz PWM(PA6 CH1, PA7 CH2, PB0 CH3, PB1 CH4)
+ - TIM4: 仅做 ADC 触发源,TRGO=Update 输出至 ADC1(1kHz,无引脚占用)
+ - ADC1: IN0~IN3 (PA0~PA3), 注入组, TIM4_TRGO 触发
## 初始化顺序(main.c)
```
HAL_Init → SystemClock_Config → MX_GPIO → MX_DMA → MX_USART1 → MX_SPI2
→ MX_TIM4 → MX_ADC1 → MX_TIM3
-→ button_driver_init() → st7735s_init() → lcd_* draw → PWM start → ADC start
+→ button_driver_init() → st7735s_init() → lcd_* draw
+→ TIM3 PWM start (PA6~PB1) → TIM4 Base start (TRGO→ADC) → ADC injected start
```
## ADC 采坑记录(不可从 CubeMX 重新生成时光靠设置)
@@ -39,10 +43,15 @@ HAL_Init → SystemClock_Config → MX_GPIO → MX_DMA → MX_USART1 → MX_SPI2
```c
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_ADCPRE) | RCC_CFGR_ADCPRE_DIV6;
```
-- **TIM3_CH4 触发 ADC**: CubeMX 默认生成 `TIM_OCMODE_TIMING`,这不会产生 OC4REF 上升沿 → ADC 收不到触发。必须在 `tim.c` 中手动改为 `TIM_OCMODE_PWM1` + `Pulse = 500`。CubeMX 需选 CH4 为 "PWM Generation4 No Output" 并设 Pulse=500。
+- **TIM4_TRGO 触发 ADC(当前方案)**: CubeMX 中 TIM4 无任何 PWM 通道,生成的 `MasterOutputTrigger` 为 `TIM_TRGO_RESET` → TRGO 无脉冲。必须在 `USER CODE TIM4_Init 2` 中写寄存器:
+ ```c
+ TIM4->CR2 = (TIM4->CR2 & ~TIM_CR2_MMS) | TIM_CR2_MMS_1; /* TRGO = Update */
+ ```
+ 启动时用 `HAL_TIM_Base_Start(&htim4)` 即可。
+- **旧方案(已废弃)**: TIM3_CH4 触发 ADC 已废弃(PB8/PB9 改为 I2C)。
## printf 无 MicroLIB
-在 `usart.c` 中通过 `#pragma import(__use_no_semihosting)` + 提供 `_sys_exit()` + `struct __FILE` + `FILE __stdout` 实现。Keil 取消勾选 Use MicroLIB 即可。
+在 `usart.c` 的 USER CODE 区通过 `#pragma import(__use_no_semihosting)` + `_sys_exit()` + `_ttywrch()` + `struct __FILE` + `FILE __stdout` 实现。Keil 取消勾选 Use MicroLIB 即可。
## SPI 注意事项
- LCD (ST7735S) 使用**硬件SPI2**(PB13 SCK, PB15 MOSI),18MHz,**Mode 3**(CPOL=HIGH, CPHA=2EDGE)
diff --git a/AT24C02.md b/AT24C02.md
new file mode 100644
index 0000000..fd9573b
--- /dev/null
+++ b/AT24C02.md
@@ -0,0 +1,620 @@
+## 1. 描述
+
+24C02/04/08/16/32/64是电可擦除PROM,分别采用256/512/1024/2048/4096/8192×8-bit的组织结构以及两线串行接口。电压可允许低至1.8V,待机电流和工作电流分别为1μA和1mA。24C02/04/08/16/32/64具有页写能力,每页分别为8/16/16/16/32/32字节。24C02/04/08/16/32/64具有8-pin PDIP和8-pin SOP和5-pin SOT 23-5三种封装形式
+
+## 2. 特点
+
+- 宽范围的工作电压1.8V\~5.5V
+- 低电压技术
+
+- 1mA典型工作电流
+- 1μA 典型待机电流
+
+\- 存储器组织结构
+
+- 24C02, 256 X 8 (2K bits)
+- 24C04, 512 X 8 (4K bits)
+- 24C08, 1024 X 8 (8K bits)
+- 24C16, 2048 X 8 (16K bits)
+- 24C32, 4096 X 8 (32K bits)
+- 24C64, 8192 X 8 (64K bits)
+
+- 2线串行接口,完全兼容I²C总线
+- I²C时钟频率为1 MHz (5V), 400 kHz (1.8V, 2.5V, 2.7V)
+- 施密特触发输入噪声抑制
+- 硬件数据写保护
+- 内部写周期 (最大5 ms)
+- 可按字节写
+- 页写:8字节页(24C02),16字节页(24C04/08/16),32字节页(24C32/64)
+- 可按字节,随机和序列读
+- 自动递增地址
+- ESD保护大于2.5kV
+- 高可靠性
+
+- 擦写寿命:100万次
+- 数据保持时间:100年
+
+- 8-pin DIP和8-pin SOP封装
+- 无铅工艺,符合RoHS标准
+
+## 3. 应用领域
+
+- 智能仪器仪表
+- 计算机 笔记本电脑
+
+- 工业控制
+- 汽车电子
+
+- 家用电器
+- 通信设备
+
+引脚排列
+封装:5L SOT-23-5
+
+
+封装: SOP-8
+
+(顶视图)
+
+5. 框图
+
+
+
+flowchart
+
+```mermaid
+graph TD
+ WP["WP"] --> SERIAL["SERIAL CONTROL LOGIC"]
+ SCL["SCL"] --> START["START STOP LOGIC"]
+ SDA["SDA"] --> START
+ START --> SERIAL
+ SERIAL -->|"EN"| HIGH["HIGH VOLTAGE PUMP/TIMING"]
+ HIGH --> DATA_RECOVERY["DATA RECOVERY"]
+ DATA_RECOVERY --> EEPROM["EEPROM"]
+ DATA_RECOVERY --> X_Decoder["X DECODER"]
+ XDecoder["X Decoder"] --> EEPROM
+ DATA_Word["DATA WORD ADDRESS COUNTER"] --> Y_Decoder["Y DECODER"]
+ YDecoder["Y Decoder"] --> EEPROM
+ EEPROM --> SERIAL_MUX["SERIAL MUX"]
+ SERIAL_MUX --> DOUT["DOUT/ACKNOWLEDGE"]
+ DOUT -->|"DIN"| SERIAL
+ SERIAL -->|"COMP"| DEVICE["DEVICE ADDRESS COMPARATOR"]
+ DEVICE -->|"LOAD"| SERIAL
+ DEVICE -->|"LOAD"| DATA
+ DATA -->|"LOAD"| SERIAL
+ SERIAL -->|"LOAD"| DATA
+ DATA -->|"LOAD"| DEVICE
+ DEVICE -->|"LOAD"| SERIAL
+ SERIAL -->|"LOAD"| DATA
+ DATA -->|"LOAD"| DEVICE
+ DATA -->|"LOAD"| SERIAL
+ SERIAL -->|"LOAD"| DATA
+ DATA -->|"LOAD"| SERIAL
+ SERIAL -->|"LOAD"| DATA
+ DATA -->|"LOAD"| SERIAL
+```
+
+
+图1 框图
+
+## 6. 最大额定参数
+
+(超出最大额定参数可能会导致器件损坏)
+
+
| 参数 | 符号 | 值 | 单位 |
| 直流供电电压 | $V_{CC}$ | -0.3 ~ +6.5 | V |
| 直流输入电压 | $V_{IN}$ | -0.3 ~ $V_{CC}$ +0.3 | V |
| 直流输出电压 | $V_{OUT}$ | -0.3 ~ $V_{CC}$ +0.3 | V |
| 存储温度 | $T_{STG}$ | -65 ~ +150 | °C |
| ESD电压(人体模型) | $V_{ESD}$ | 2500 | V |
| ESD电压(机器模型) | 200 | V |
+
+## 推荐工作条件
+
+(7)应在推荐工作条件下实现功能)
+
+| 参数 | 符号 | 最小值 | 最大值 | 单位 |
| 直流供电电压 | $V_{CC}$ | 1.8 | 5.5 | V |
| 工作温度 | $T_{A}$ | -40 | +85 | °C |
+
+电话:0755-82568886 82568883
+
+邮箱:idchip@indreamchip.com
+
+传真:0755-82568886
+
+网址:www.idchip.cn
+
+公司地址:深圳市福田区滨河大道联合广场A座1308
+
+## 8. 引脚电容
+
+(条件: $T_{A}=25^{\circ}C$ , f=1.0 MHz, $V_{CC}=+1.8V$ )
+
+| 参数 | 符号 | 测试条件 | 最小值 | 最大值 | 单位 |
| 输入/输出电容(SDA) | $C_{I/O}$ | $V_{I/O} = 0V$ | | 8 | pF |
| 输入电容(A0, A1, A2, SCL) | $C_{IN}$ | $V_{IN} = 0V$ | | 6 | pF |
+
+## 9. 直流电气特性
+
+(条件: $T_{A}=0^{\circ}C\sim+70^{\circ}C,V_{CC}=+1.8V\sim+5.5V$ ,除非另有注释)
+
+| 参数 | 符号 | 测试条件 | 最小值 | 典型值 | 最大值 | 单位 |
| 供电电流 | $I_{CC}$ | $V_{CC}=5V$ | 100kHz读 | | 0.4 | 1.0 | mA |
| 100kHz写 | | 2.0 | 3.0 | mA |
| 待机电流 | $I_{SB}$ | $V_{IN}=V_{CC}$ 或GND | | | 1.0 | μA |
| 输入漏电流 | $I_{LI}$ | $V_{IN}=V_{CC}$ 或GND | | | 3.0 | μA |
| 输出漏电流 | $I_{LO}$ | $V_{OUT}=V_{CC}$ 或GND | | 0.05 | 3.0 | μA |
| 输入低电平电压 | $V_{IL}$ | | -0.6 | | $V_{CC} \times 0.3$ | V |
| 输入高电平电压 | $V_{IH}$ | | $V_{CC} \times 0.7$ | | $V_{CC}+0.5$ | V |
| 输出低电平电压 | $V_{OL3}$ | $V_{CC}=5.0V, I_{OL}=3.0mA$ | | | 0.4 | V |
| $V_{OL2}$ | $V_{CC}=3.0V, I_{OL}=2.1mA$ | | | 0.4 | V |
| $V_{OL1}$ | $V_{CC}=1.8V, I_{OL}=0.15mA$ | | | 0.2 | V |
+
+## 10. 交流电气特性
+
+(条件: $T_{A}=0^{\circ}C\sim+70^{\circ}C,V_{CC}=+1.8V\sim+5.5V,C_{L}=100pF$ ,除非另有注释)
+
+| 参数 | 符号 | 测试条件 | 最小值 | 典型值 | 最大值 | 单位 |
| 时钟频率, SCL | $f_{SCL}$ | $V_{CC}=1.8V$ | | | 400 | kHz |
| $V_{CC}=5V$ | | | 1000 |
| 时钟低电平宽度 | $t_{LOW}$ | $V_{CC}=1.8V$ | 1.2 | | | μs |
| $V_{CC}=5V$ | 0.6 | | |
| 时钟高电平宽度 | $t_{HIGH}$ | $V_{CC}=1.8V$ | 0.6 | | | μs |
| $V_{CC}=5V$ | 0.4 | | |
| 噪声消除时间 | $t_{I}$ | $V_{CC}=1.8V$ | | | 50 | ns |
| $V_{CC}=5V$ | | | 40 |
| 时钟下降沿到数据有效输出间隔时间 | $t_{AA}$ | $V_{CC}=1.8V$ | 0.05 | | 0.9 | μs |
| $V_{CC}=5V$ | 0.05 | | 0.55 |
| 总线释放时间 | $t_{BUF}$ | $V_{CC}=1.8V$ | 1.2 | | | μs |
| $V_{CC}=5V$ | 0.5 | | |
+
+## 交流电气特性
+
+## 10. (续)
+
+| 参数 | 符号 | 测试条件 | 最小值 | 典型值 | 最大值 | 单位 |
| 起始条件保持时间 | $t_{HD.STA}$ | $V_{CC}=1.8V$ | 0.6 | | | μs |
| $V_{CC}=5V$ | 0.25 | | |
| 起始条件建立时间 | $t_{SU.STA}$ | $V_{CC}=1.8V$ | 0.6 | | | μs |
| $V_{CC}=5V$ | 0.25 | | |
| 数据输入保持时间 | $t_{HD.DAT}$ | | 0 | | | μs |
| 数据输入建立时间 | $t_{SU.DAT}$ | | 100 | | | ns |
| 输入上升时间 | $t_R$ | | | | 300 | ns |
| 输入下降时间 | $t_F$ | $V_{CC}=1.8V$ | | | 300 | ns |
| $V_{CC}=5V$ | | | 100 |
| 停止条件建立时间 | $t_{SU.STO}$ | $V_{CC}=1.8V$ | 0.6 | | | μs |
| $V_{CC}=5V$ | 0.25 | | |
| 数据输出保持时间 | $t_{DH}$ | | 50 | | | ns |
| 写周期 | $t_{WR}$ | | | | 5 | ms |
+
+
+
+
+flowchart
+
+```mermaid
+graph LR
+ subgraph SCL
+ SCL -->|tF| SCL
+ SCL -->|tLOW| SCL
+ SCL -->|tHIGH| SCL
+ SCL -->|tLOW| SCL
+ SCL -->|tR| SCL
+ end
+
+ subgraph SDA_IN
+ SDA_IN -->|tSU.STO| SDA_OUT
+ SDA_IN -->|tHD.DAT| SDA_OUT
+ SDA_IN -->|tHD.DAT| SDA_OUT
+ SDA_IN -->|tSU.DAT| SDA_OUT
+ SDA_IN -->|tAA| SDA_OUT
+ SDA_OUT -->|tBUF| SDA_OUT
+ end
+
+ SCL -.->|tSU.STA| SDA_IN
+ SCL -.->|tHD.STA| SDA_IN
+ SCL -.->|tSU.DAT| SDA_IN
+ SCL -.->|tSU.DAT| SDA_OUT
+```
+
+
+图2 总线时序
+
+
+
+text_image
+
+SCL
+SDA
+8th BIT ACK
+STOP CONDITION
+tWR(1)
+START CONDITION
+
+
+注1. 写周期时间 $t_{WR}$ 是指从一个写序列的有效停止条件开始至内部写周期结束的时间。
+
+电话:0755-82568886 82568883
+
+图3 写周期时序
+
+邮箱:idchip@indreamchip.com
+
+传真:0755-82568886
+
+网址:www.idchip.cn
+
+公司地址:深圳市福田区滨河大道联合广场A座1308
+
+11. 引脚说明
+
+| 引脚号 | 引脚名称 | 功能说明 |
| 1 | A0 | 地址输入。A2、A1和A0是器件地址输入引脚。24C02/32/64使用A2、A1和A0输入引脚作为硬件地址,总线上可同时级联8个24C02/32/64器件(详见器件寻址)。24C04使用A2和A1输入引脚作为硬件地址,总线上可同时级联4个24C04器件,A0为空脚,可接地。24C08使用A2输入引脚作为硬件地址,总线上可同时级联2个24C08器件,A0和A1为空脚,可接地。24C16未使用器件地址引脚,总线上最多只可连接一个16K器件,A2、A1和A0为空脚,可接地。 |
| 2 | A1 |
| 3 | A2 |
| 5 | SDA | 串行地址和数据输入/输出。SDA是双向串行数据传输引脚,漏极开路,需外接上拉电阻到Vcc(典型值10kΩ)。 |
| 6 | SCL | 串行时钟输入。SCL同步数据传输,上升沿数据写入,下降沿数据读出。 |
| 7 | WP | 写保护。WP引脚提供硬件数据保护。当WP接地时,允许数据正常读写操作;当WP接Vcc时,写保护,只读。 |
| 4 | GND | 地 |
| 8 | Vcc | 正电源 |
+
+12. 存储结构
+
+| 器件 | 总容量(位) | 总页数 | 字节/页 | 字地址长度 |
| 24C02 | 2K | 32 | 8 | 8位 |
| 24C04 | 4K | 32 | 16 | 9位 |
| 24C08 | 8K | 64 | 16 | 10位 |
| 24C16 | 16K | 128 | 16 | 11位 |
| 24C32 | 32K | 128 | 32 | 12位 |
| 24C64 | 64K | 256 | 32 | 13位 |
+
+24CXX支持I²C总线传输协议。I²C是一种双向、两线串行通讯接口,分别是串行数据线SDA和串行时钟线SCL。两根线都必须通过一个上拉电阻接到电源。典型的总线配置如图4所示
+
+
+
+
+text_image
+
+SDA
+SCL
+MPU
+24Cxx
+其他外围
+RP
+RP
+Vcc
+两线串行
+数据总线
+
+
+图4 典型两线总线配置
+
+总线上发送数据的器件被称作发送器,接收数据的器件被称作接收器。控制信息交换的器件被称作主器件,受主器件控制的器件则被称作从器件。主器件产生串行时钟SCL,控制总线的访问状态、产生START和STOP条件。24CXX在I²C总线中作为从器件工作。
+
+只有当总线处于空闲状态时才可以启动数据传输。每次数据传输均开始于START条件,结束于STOP条件,二者之间的数据字节数是没有限制的,由总线上的主器件决定。信息以字节(8位)为单位传输,第9位时由接收器产生应答。
+
+## 起始和停止条件
+
+数据和时钟线都为高则称总线处在空闲状态。当SCL为高电平时SDA的下降沿(高到低叫做起始条件(START,简写为S),SDA的上升沿(低到高)则叫做停止条件(STOP,简写为P)。参见图5。
+
+
+
+
+text_image
+
+S S
+
+
+起始条件
+
+图5 起始条件和停止条件的定义
+
+## 13. 详细操作说明(续)
+
+## 位传输
+
+每个时钟脉冲传送一位数据。SCL为高时SDA必须保持稳定,因为此时SDA的改变被认为是控制信号。位传输参见图6。
+
+
+
+
+flowchart
+
+This diagram illustrates the signal processing logic for SDA and SCL channels, showing how data lines are optimized based on data validity and data reform.
+
+
+图6 位传输
+
+## 应答
+
+总线上的接收器每接收到一个字节就产生一个应答,主器件必须产生一个对应的额外的时钟脉冲,见图7。
+
+
+
+
+flowchart
+
+```mermaid
+graph LR
+ subgraph Sender_Data
+ A["发送器输出的数据"] --> B{"信号波形"}
+ B --> C["接收器输出的数据"]
+ C --> D["非应答"]
+ D --> E["应答"]
+ E --> F["应答时钟脉冲"]
+ end
+
+ subgraph Main_Device
+ G["主器件发出的SCL"] --> H{"脉冲大小"}
+ H --> I["1"]
+ H --> J["2"]
+ H --> K["8"]
+ H --> L["9"]
+ I --> M["起始条件"]
+ J --> M
+ K --> M
+ L --> M
+ end
+```
+
+
+图7 I²C总线的应答
+
+接收器拉低SDA线表示应答,并在应答脉冲期间保持稳定的低电平。当主器件作接收器时,必须发出数据传输结束的信号给发送器,即它在最后一个字节之后的应答脉冲期间不会产生应答信号(不拉低SDA)。这种情况下,发送器必须释放SDA线为高以便主器件产生停止条件。
+
+## 器件寻址
+
+起始条件使能芯片读写操作后,EEPROM都要求有8位的器件地址信息(见图8)。
+
+器件地址信息由"1"、"0"序列组成,前4位如图中所示,对于所有串行EEPROM都是一样的。
+
+对于24C02/32/64,随后3位A2、A1和A0为器件地址位,必须与硬件输入引脚保持一致。
+
+对于24C04,随后2位A2和A1为器件地址位,另1位为页地址位。A2和A1必须与硬件输入引脚保持一致,而A0是空脚。
+
+对于24C08,随后1位A2为器件地址位,另2位为页地址位。A2必须与硬件输入引脚保持一致,而A1和A0是空脚。
+
+对于24C16,无器件地址位,3位都为页地址位,而A2、A1和A0是空脚。
+
+器件地址信息的LSB为读/写操作选择位,高为读操作,低为写操作。
+
+若比较器件地址一致,EEPROM将输出应答"0"。如果不一致,则返回到待机状态。
+
+
+图8 器件地址
+
+## 器件操作
+
+## 待机模式
+
+EEPROM具有低功耗待机的特点,条件为:(1)电源上电;(2)接收停止条件及完成任何内部操作后。
+
+## 存储复位
+
+当协议中产生中断、掉电或系统复位后, $I^{2}C$ 总线可通过以下步骤复位:
+
+(1)产生9个时钟周期。
+(2) 当SCL为高时,SDA也为高。
+(3) 产生一个起始条件。
+
+## 写操作
+
+## 1. 字节写
+
+写操作要求在接收器件地址和ACK应答后,接收8位的字地址。接收到这个地址后EEPROM应答"0",然后是一个8位数据。在接收8位数据后,EEPROM应答"0",接着必须由主器件发送停止条件来终止写序列。
+
+此时EEPROM进入内部写周期tWR,数据写入非易失性存储器中,在此期间所有输入都无效。直到写周期完成,EEPROM才会有应答(见图9)。
+
+
+图9 字节写
+
+电话:0755-82568886 82568883
+
+邮箱:idchip@indreamchip.com
+
+传真:0755-82568886
+
+网址:www.idchip.cn
+
+公司地址:深圳市福田区滨河大道联合广场A座1308
+
+## 13. 详细操作说明(续)
+
+## 2. 页写
+
+24C02器件按8字节/页执行页写,24C04/08/16器件按16字节/页执行页写,24C32/64器件按32字节/页执行页写。
+
+页写初始化与字节写相同,只是主器件不会在第一个数据后发送停止条件,而是在EEPROM EEPROM收到每个数据后都应答“0”。最后仍需由主器件发送停止条件,终止写序列(见图10)。
+
+接收到每个数据后,字地址的低3位(24C02)或4位(24C04/08/16)或5位(24C32/64)内部自动加1,高位地址位不变,维持在当前页内。当内部产生的字地址达到该页边界地址时,随后的数据将写入该页的页首。如果超过8个(24C02)或16个(24C04/08/16)或32个(24C32/64)数据传送给了EEPROM,字地址将回转到该页的首字节,先前的字节将会被覆盖。
+
+
+图10页写
+
+## 3. 应答查询
+
+一旦内部写周期启动,EEPROM输入无效,此时即可启动应答查询:发送起始条件和器件地址(读/写位为期望的操作)。只有内部写周期完成,EEPROM才应答"0"。之后可继续读/写操作。
+
+应答查询流程见图11。
+
+
+
+
+flowchart
+
+```mermaid
+graph TD
+ A["发送写命令"] --> B["发送停止条件\n启动写周期"]
+ B --> C["发送起始条件"]
+ C --> D["发送控制字节\nR/W = 0"]
+ D --> E{"器件是否应答\n(ACK = 0)?"}
+ E -->|否| C
+ E -->|是| F["下一操作"]
+```
+
+
+图11 应答查询流程
+
+电话:0755-82568886 82568883
+
+邮箱:idchip@indreamchip.com
+
+传真:0755-82568886
+
+网址:www.idchip.cn
+
+公司地址:深圳市福田区滨河大道联合广场A座1308
+
+## 读操作
+
+读操作与写操作初始化相同,只是器件地址中的读/写选择位应为"1"。有三种不同的读操作方式:当前地址读,随机读和顺序读。
+
+## 1. 当前地址读
+
+内部地址计数器保存着上次访问时最后一个地址加1的值。只要芯片有电,该地址就一直保存。当读到最后页的最后字节,地址会回转到0;当写到某页尾的最后一个字节,地址会回转到该页的首字节。
+
+接收器件地址(读/写选择位为"1")、EEPROM应答ACK后,当前地址的数据就随时钟送出。主器件无需应答"0",但需发送停止条件(见图12)。
+
+
+图12 当前地址读
+
+## 2. 随机读
+
+随机读需先写一个目标字地址,一旦EEPROM接收器件地址和字地址并应答了ACK,主器件就产生一个重复的起始条件。
+
+然后,主器件发送器件地址(读/写选择位为"1"),EEPROM应答ACK,并随时钟送出数据。主器件无需应答"0",但需发送停止条件(见图13)。
+
+
+图13 随机读
+
+## 3. 顺序读
+
+顺序读可以通过“当前地址读”或“随机读”启动。主器件接收到一个数据后,应答ACK。只要EEPROM接收到ACK,将自动增加字地址并继续随时钟发送后面的数据。若达到存储器地址末尾,地址自动回转到0,仍可继续顺序读取数据。
+
+主器件不应答"0",而发送停止条件,即可结束顺序读操作(见图14)。
+
+
+图14 顺序读
+
+电话:0755-82568886 82568883
+
+邮箱:idchip@indreamchip.com
+
+传真:0755-82568886
+
+网址:www.idchip.cn
+
+公司地址:深圳市福田区滨河大道联合广场A座1308
+
+## 14. 典型应用
+
+
+
+
+text_image
+
+U1 24C02
+A0 VCC
+1
+A1 SCL
+2
+A2 SDA
+3
+GND WP
+4
+器件地址: 0xA2
+U2 24C02
+A0 VCC
+1
+A1 SCL
+2
+A2 SDA
+3
+GND WP
+4
+器件地址: 0xA0
+Vcc
+R1
+10K
+R2
+10K
+SCL
+SDA
+7
+7
+8
+6
+5
+5
+7
+Vcc
+
+
+图15 EEPROM的级联
+
+## 15. 封装尺寸
+
+## SOP8L
+
+
+
+
+text_image
+
+A3
+A1
+A2
+B1
+B
+A
+
+
+
+
+
+text_image
+
+C1
+C2
+C
+C3
+
+
+
+
+
+text_image
+
+R2
+θ4
+θ1
+θ2
+θ3
+R1
+B2
+D1
+D
+
+
+| 符号 | 尺寸(mm) | 符号 | 尺寸(mm) |
| 最小值 | 最大值 | 最小值 | 最大值 |
| A | 4.95 | 5.15 | C3 | 0.05 | 0.20 |
| A1 | 0.37 | 0.47 | C4 | 0.20(典型值) |
| A2 | 1.27(典型值) | D | 1.05(典型值) |
| A3 | 0.41(典型值) | D1 | 0.40 | 0.60 |
| B | 5.80 | 6.20 | R1 | 0.07(典型值) |
| B1 | 3.80 | 4.00 | R2 | 0.07(典型值) |
| B2 | 5.0(典型值) | θ1 | 17°(典型值) |
| C | 1.30 | 1.50 | θ2 | 13°(典型值) |
| C1 | 0.55 | 0.65 | θ3 | 4°(典型值) |
| C2 | 0.55 | 0.65 | θ4 | 12°(典型值) |
+
+DIP8L
+
+
+
+text_image
+
+A
+B
+
+
+
+
+
+text_image
+
+D2
+θ1
+θ2
+θ3
+D1
+D
+
+
+
+
+
+text_image
+
+C
+C1
+C2
+C3
+A5
+A3
+A1
+A4
+A2
+C4
+
+
+| 符号 | 尺寸(mm) | 符号 | 尺寸(mm) |
| 最小值 | 最大值 | 最小值 | 最大值 |
| A | 9.30 | 9.50 | C2 | 0.5(典型值) |
| A1 | 1.524(典型值) | C3 | 3.3(典型值) |
| A2 | 0.39 | 0.53 | C4 | 1.57(典型值) |
| A3 | 2.54(典型值) | D | 8.20 | 8.80 |
| A4 | 0.66(典型值) | D1 | 0.20 | 0.35 |
| A5 | 0.99(典型值) | D2 | 7.62 | 7.87 |
| B | 6.3 | 6.5 | θ1 | 8°(典型值) |
| C | 7.20(典型值) | θ2 | 8°(典型值) |
| C1 | 3.30 | 3.50 | θ3 | 5°(典型值) |
+
+TSOT-23-5 PACKAGE OUTLINE DIMENSIONS
+
+
+
+text_image
+
+D
+b
+E
+E1
+e
+e1
+
+
+
+
+
+text_image
+
+θ
+0.2
+L
+c
+
+
+
+
+
+text_image
+
+A1
+A2
+A
+
+
+| Symbol | Dimensions In Millimeters | Dimensions In Inches |
| Min | Max | Min | Max |
| A | 0.700 | 0.900 | 0.028 | 0.035 |
| A1 | 0.000 | 0.100 | 0.000 | 0.004 |
| A2 | 0.700 | 0.800 | 0.028 | 0.031 |
| b | 0.350 | 0.500 | 0.014 | 0.020 |
| c | 0.080 | 0.200 | 0.003 | 0.008 |
| D | 2.820 | 3.020 | 0.111 | 0.119 |
| E | 1.600 | 1.700 | 0.063 | 0.067 |
| E1 | 2.650 | 2.950 | 0.104 | 0.116 |
| e | 0.95 (BSC) | 0.037 (BSC) |
| e1 | 1.90 (BSC) | 0.075 (BSC) |
| L | 0.300 | 0.600 | 0.012 | 0.024 |
| θ | 0° | 8° | 0° | 8° |
\ No newline at end of file
diff --git a/AT24C02.pdf b/AT24C02.pdf
new file mode 100644
index 0000000..ce9ef64
--- /dev/null
+++ b/AT24C02.pdf
@@ -0,0 +1,115340 @@
+%PDF-1.4
+%
+1 0 obj
+<>/Font<>/ProcSet[/PDF/Text]/ExtGState<>/XObject<>>>/Type/Page>>
+endobj
+2 0 obj
+<>stream
+xMKvd;IY-AH2}Jʀ^7mڷc-eYɍN_Gi"F2$X`D,E Rj=ZU߷DzmCjժo^Oم"too|ᓟwOzN_}7ɝ|bm_?>s
9ӛ~e:^]m?iRG6UϩB9*a=':D2㎕NA}ϥ#0s9;m%~t"pn(l{㹦d%w, I
+^ N{WP<@>K^BmE=&A_Scgi'ٱu$,;ZZ;kΪ{rtFV,TJϗ>Fkotؚ;GdWrq0%+ocmCS8]BN{WP8@K^@mW{]1̟S-SUL3fKey`>okJPlM rQ4CgjkY^$*|,JQߴvC~K톼B'nWz70b*3g;T ET Y]LZozi/2lp~>g}p.%Q;G3?v3_~ }2ʧ>|4)yW?}3?"&C#?{|?g&Աy
+(FMh]:>~(:nwnyŮ
8DcC^ORv*dx[c݃?/ě[}(sakoj-Kэ}Mgd7ustȑXwO7\s;ݤ܈O?Be8e/2ب
+&'N,JY]0{:&c\Ǥ溅6|nOv061X#u怼Goإͨ&s{Ӻx5}=/ib8X
\.m03r$Cm?S\moٙCZˡ۹/{¿~s?7>wu_NF\A!{
W
]7yӿ篮Sg|˯_jF_!˃uͭ;1݀L} 7]?+|~/~VأN90M*
+T-ճN Y ݾscQKhw[QWfw_*SCUmx`j
+WW0QFpAl|ԉX|M
+-`jJwvͿR5żz?q\WgicW!ҿNLC2|7ŗV{Ƨ"H_-^)ɡG(/|ԩ./?8c:ƛ1ƈKko֪d9'1]h9@(_[-y(>+Kz,%Ptb}xVBCn,˯ǖ9cKnJ//_>N2TbȅBIlAgtKyatu5!E$-s;kLnehIV# t]ڵC)lJxI2^G{g-s^9 iaOTVnDJJA7+lHE/6s(Ms4)
~\7HH+ҭzfZ3:|BjgʿҾZcŰc-t!
+3z3O2tT4bX
+L;F$SH NQ'1))Qa%'
v7ˤQ(-,mT_!PEd+
@SGWZTٰ-@8cϖJour*\*Z3ZPmeo=,lȔ%4E`ʔ~LEYrCYr1˔)ΞPk2I)Ket\eߝ\F:,"(36d,,TiOlwxD
CY4JXy?Z2e5eZ(-"B5etb4e7{RcBn\ 6GrDVigFns/k11mum=XA5.DfXΆHMP:YycJqg֘8aFȠH'6g-F.}w[+4jn
|U1RӆQQyҤz|sS P=yV8s=: ٚWL;J[Y{c}R3!{f#$:=1C[sBNw[,??_+|/[|/_U/?k^~> =ǵEq1ìjἵ\X -oe(.W [^X AK^@uY}51XO 몝8zTe-[$džu_Gݮ$*ZPeۑ+9NA"@2w_F"֮kޝdv^Pv$C
+# IyaWP^_AW-nvGSWާ<)h@+ԩ?p$wZiKBײp#wy9ЯN0'Rt"w䆑6UE5UcSoNu`s""Nk87Bv0ShMB{p-
7{ͩH7 7CH?>]H?Hmz<с2nP{E7'nMH@>4=FÏbRv8=y\Hh@(Cgd>jΦDK/$D5B@z8C\Xc5H
+D{pLȒ帥-
/4͉H7TFT(*F9rZiy3ﰙ4c®MRvdرا= L{hLK?b(̲V\B]wnL)3:%YzR4v)0hvOwY\pPR\ -oe큮.me>B,I iZ 35לowa۠xMg:5;H@jw*{;g_-%6.4H\ӡ
+vRqT@
+Q ,ɖcj9Vt-ǴJ.w+iٵLsb=^M=)uϫmMixt{W UlW,\#X}Y:~_$d 'rlq,pz%VlrϻzMv3t#Q
+ardG$uG
*eF+R Nb8KgbFOx H9/qfc/rJ9K-$$p䤓M@4'Jb䯊eQbf%
Ⱥɳ@yS10l+;mK]kNڐ'<;Nm;߾XaFGr"dͥ#Bz-֞`cb^+XqӛӧAV5<c;@5!8@Zr]Q %^tNnJHג(LawܻW]}( Sǟ_~_^_,cF+oHZFD Y$1
+Y}+k K^@ڷ?yE%HZg#ha-EQ",L/E'C5&ly܀[K|-!( Yy{5 %E@ŜGݮј>o_JOO×/%<
hǿbr vW}bLd{r_rpCh7OG?zT#OjēZuF!
!#ѶL,y9/6`iZ;yΡ]ou