LP 读操作流程

本文通过具体示例介绍了MIPI LP读操作的过程,包括master(SSD2828)向slave(ICN9605C)发起读取0x0B寄存器请求,及随后slave返回错误包的情况。详细解释了每个步骤的信号波形变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍MIPI读操作:masterDCS0x0B寄存器,然后slave返回error包。

本示例masterSSD2828slaveICN9605C,为解ICN9605C mipi lp read bug时量测的信号波形,用此来说明mipi lp读操作。其中SSD2828在发送读指令时会先发送最大返回数据然后再发送要读的寄存器数据,本例中采用DCS short packet方式来读。

 

STEP1master发送值解析示例如下:

LP11->LP10->LP00->LP01->LP00,进入escapemode

Byte 0 is 0x87  (escape mode 8-bit entry command)

Byte 1 is 0x37 (short packet DI, 0x37 meansset maximum return packet size)

Byte 2, Byte3 are 0x01,0x00 (they are shortpacket data)

Byte 4 is ECC

Byte 5 is 0x06 ((short packet DI, 0x06means DCS read , no parameters)

Byte 6, Byte7 are 0x0B,0x00(they are short packet data. they mean the register read by master in thisexample)

Byte 8 is ECC

LP00->LP11退出escape mode

波形图如下:

此过程连续发了两个short packet,也可以每发送一个short packet退出escape mode一次。

 

Step 2: master控制总线进入Turnaround然后交出总线控制权:

LP11->LP10->LP00->LP10->LP00

然后退出Turnaround模式

LP00->LP10->LP11

此时master交出总线控制权,mipi总线转由slave控制

波形图如下:

 

Step3: slave返回值解析如下:

LP11->LP10->LP00->LP01->LP00,进入escapemode

Byte 0 is 0x87  (escape mode 8-bit entry command)

Byte 1 is 0x02 (short packet DI, 0x02 meanserror report)

Byte 2, Byte3 are 0x00,0x02 (they are shortpacket data, they mean the error type)

Byte 4 is 0x39 (ECC)

Byte 5, Byte6, Byte7, Byte8 are 0x08, 0x0f,0x0f, 0x01(they are EOT)

LP00->LP11退出escape mode

波形图如下:

 

Step 4: Slave控制总线进入Turnaround然后交出总线控制权:

LP11->LP10->LP00->LP10->LP00

然后退出Turnaround模式

LP00->LP10->LP11

此时slave交出总线控制权,mipi总线转由master控制

波形图如下:

 

整个过程的波形图如下:

<think>好的,我现在需要处理用户关于IS25LP016D芯片的写时序的问题。首先,用户明确提到了SPI Flash,所以我要先确认这个芯片的基本信息。IS25LP016D是ISSI公司生产的SPI接口的Flash存储器,容量应该是16Mb,也就是2MB。接下来,我需要查找它的数据手册,但可能手头没有,所以得依靠已有的知识或者参考之前提到的其他类似芯片的信息,比如用户提供的引用内容中提到的IS25WP和IS25LP系列,特别是引用[3]中提到的IS25LP064A的数据手册,可能设计类似。 用户的问题集中在写时序上,所以需要分两部分回答:时序和写时序。首先,SPI模式方面,常见的SPI模式有0到3,根据大多数Flash芯片的惯例,IS25LP016D可能支持模式0和3,需要确认。然后是时钟极性(CPOL)和相位(CPHA),通常在SPI通信中,模式0是CPOL=0,CPHA=0,即时钟空闲低电平,数据在上升沿采样。 接下来是指令操作数据通常使用READ指令(例如0x03),后面跟着24位地址,然后连续取数据。可能需要考虑Dummy Cycle,特别是高速取时,比如引用[3]提到的Dummy Cycle设置,IS25LP系列可能需要类似的处理。另外,用户提到的IS25WP系列可能设置不同的Dummy Cycle,所以需要确认IS25LP016D是否需要类似的配置,比如在Quad SPI模式下是否需要更多的Dummy Cycle。 写时序方面,需要涉及写使能指令(WREN,0x06),页编程指令(PP,0x02),以及状态寄存器检查。写操作前必须先发送WREN,然后发送PP指令和地址,接着写入数据。要注意页大小,通常为256字节,跨页写入需要分多次。此外,写入前必须确保存储区域已经被擦除(块擦除或扇区擦除),擦除指令比如SE(Sector Erase)或BE(Block Erase)。 状态寄存器轮询也很重要,在写入或擦除操作后,需要检查状态寄存器的BUSY位,直到操作完成。此外,还需要注意最大时钟频率,例如在标准SPI模式下可能支持较高的频率,但需要参考具体规格。 可能用户还会关心不同的SPI模式,比如标准SPI、Dual SPI或Quad SPI,这些模式会影响数据传输的速度和引脚的使用情况。例如,Quad SPI可能使用更多的I/O线来提升速度,但需要对应的指令和时序支持。 最后,根据用户提供的引用内容,特别是引用[2]提到的W25Q128的SPI和QSPI接口,104MHz时钟频率,页编程和块擦除功能,这些可能与IS25LP016D有相似之处,但需要具体确认。因此,在回答时需要指出这些可能的共性和差异,并建议用户查阅官方数据手册以获取准确信息。 总结来说,回答的结构应包括SPI模式配置、时序步骤、写时序步骤,以及注意事项如Dummy Cycle、页大小限制、状态寄存器轮询等。同时,需要引用已有资料中的相关信息,比如引用[3]提到的Dummy Cycle设置,引用[2]提到的页编程和擦除周期,以增强回答的可信度。</think>### IS25LP016D芯片写时序解析 IS25LP016D是ISSI公司推出的SPI接口NOR Flash芯片,容量为16Mb(2MB)。其操作遵循SPI协议标准,并支持多种操作模式。以下为关键时序说明: #### 一、SPI模式配置 1. **工作模式**:支持SPI模式0(CPOL=0, CPHA=0)和模式3(CPOL=1, CPHA=1)[^3]。 2. **时钟频率**:标准SPI模式下最高支持104MHz(需参考具体规格)[^2]。 #### 二、时序 1. **标准指令(0x03)**: - 操作流程:发送指令`0x03` → 发送24位地址(3字节)→ 连续取数据。 - 时序示例: ``` CS拉低 → 发送0x03 → 发送地址A23-A0 → 连续取数据 → CS拉高 ``` 2. **高速指令(0x0B)**: - 增加Dummy Cycle(通常1-8个时钟周期),提升取效率。 - 示例:发送`0x0B` → 地址 → 1个Dummy Cycle → 取数据。 #### 三、写时序 1. **写使能(WREN, 0x06)**: - 每次写入前需发送`0x06`使能写操作。 2. **页编程(PP, 0x02)**: - 操作流程: ``` CS拉低 → 发送0x06(WREN)→ CS拉高 CS拉低 → 发送0x02 → 地址 → 写入数据(最多256字节/页)→ CS拉高 ``` - 注意:跨页写入需分多次操作[^2]。 3. **擦除操作**: - 扇区擦除(4KB):指令`0x20` + 24位地址。 - 块擦除(64KB):指令`0xD8` + 24位地址。 #### 四、状态寄存器轮询 - 发送`0x05`取状态寄存器,检查BUSY位(Bit 0): - BUSY=1:芯片忙(正在写入/擦除)。 - BUSY=0:操作完成。 #### 五、注意事项 1. **Dummy Cycle设置**:Quad SPI模式下可能需要调整Dummy Cycle数量以匹配时序。 2. **电压与频率**:高频操作需确保供电电压符合要求(如104MHz需≥2.7V)。 3. **数据保持**:擦写周期典型值为10万次,数据保留时间20年[^2]。 ```c // 示例:SPI页编程代码片段 void flash_page_program(uint32_t addr, uint8_t *data, uint16_t len) { spi_cs_low(); // CS拉低 spi_tx_byte(0x06); // 发送WREN指令 spi_cs_high(); spi_cs_low(); spi_tx_byte(0x02); // 发送页编程指令 spi_tx_byte((addr >> 16) & 0xFF); // 地址高8位 spi_tx_byte((addr >> 8) & 0xFF); // 地址中8位 spi_tx_byte(addr & 0xFF); // 地址低8位 for (int i=0; i<len; i++) spi_tx_byte(data[i]); // 写入数据 spi_cs_high(); } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值