深山老妖 发表于 2025-7-6 23:27:42

能不能用AI8H8K64U芯片的硬件SPI操作93C66的读写

研究了一下93C66,它的SPI格式好像不是固定的8位格式,用8H8K的硬件SPI如何操作对它的读和写?

DebugLab 发表于 2025-7-7 09:46:00

没有使用过93C66,以下内容来自人工智能生成:

使用AI8H8K64U芯片硬件SPI操作93C66存储器
93C66存储器SPI接口特性分析
93C66是一款4Kbit(512×8)的串行EEPROM存储器,采用SPI接口进行通信6,7。根据规格书,93C66的SPI接口有以下特点:

[*]​非标准SPI格式​:93C66的指令格式不是固定的8位格式,而是采用9位指令结构4。指令格式通常为:

[*]起始位(1)
[*]操作码(2位)
[*]地址(6位或7位,取决于存储器组织方式)
[*]​存储器组织​:93C66可以配置为x8或x16组织方式,通过ORG引脚设置6。在x8模式下,地址为7位;在x16模式下,地址为6位。
[*]​时钟频率​:最大支持2MHz时钟频率6。
[*]​工作电压​:4.5V~5.5V6。
[*]​写保护​:具有写保护功能,需要通过特定指令序列才能进行写操作4。
AI8H8K64U硬件SPI适配方案
根据搜索结果,AI8H8K64U芯片的SPI接口在使用时需要注意时钟频率设置。测试表明,当SPI时钟频率设置为系统时钟的一半时,可能无法正确读写外设,需要降低到系统时钟的四分之一以下才能稳定工作9。
硬件SPI配置要点
[*]​时钟频率设置​:

[*]系统时钟为45MHz时,SPI时钟应设置为≤11.25MHz(45MHz/4)
[*]考虑到93C66最大支持2MHz,建议初始设置为1MHz左右6,9
[*]​数据位宽设置​:

[*]虽然93C66使用9位指令格式,但AI8H8K64U的SPI硬件支持3-16位可配置数据位宽10
[*]可以采用8位传输模式,分多次传输完成9位指令
[*]​模式设置​:

[*]需要根据93C66的时序要求设置CPOL和CPHA
[*]通常93C66在时钟上升沿采样数据,下降沿输出数据4
[*]​片选控制​:

[*]需要使用单独的GPIO控制93C66的CS引脚
[*]在每次传输前拉低CS,传输完成后拉高11
读写操作实现方法写操作流程
[*]发送写使能指令(WREN)
[*]发送写指令(包含地址和数据)
[*]等待写完成(可以通过轮询状态寄存器或固定延时)
// 伪代码示例void write_93c66(uint16_t addr, uint8_t data) {    // 写使能    spi_cs_low();    spi_transfer(0x06); // WREN指令    spi_cs_high();      // 写操作    spi_cs_low();    spi_transfer(0x05); // WRITE指令高字节(包含起始位和操作码)    spi_transfer(addr); // 地址    spi_transfer(data); // 数据    spi_cs_high();      // 等待写完成    while(read_status() & 0x01); // 检查BUSY位}读操作流程
[*]发送读指令(包含地址)
[*]接收数据
// 伪代码示例uint8_t read_93c66(uint16_t addr) {    uint8_t data;      spi_cs_low();    spi_transfer(0x03); // READ指令高字节    spi_transfer(addr); // 地址    data = spi_transfer(0x00); // 读取数据    spi_cs_high();      return data;}状态寄存器读取// 伪代码示例uint8_t read_status(void) {    uint8_t status;      spi_cs_low();    spi_transfer(0x05); // RDSR指令    status = spi_transfer(0x00); // 读取状态    spi_cs_high();      return status;}注意事项
[*]​指令格式处理​:由于93C66使用9位指令,而硬件SPI通常以8位为单位传输,需要将指令拆分处理4,6。
[*]​时钟相位和极性​:必须确保AI8H8K64U的SPI模式与93C66要求的时序匹配11。
[*]​写保护​:写操作前必须先发送写使能指令(WREN),且每次写操作后写使能会自动复位4。
[*]​延时处理​:93C66的写周期时间典型值为2ms6,在写操作后需要适当延时或轮询状态寄存器。
[*]​电源电压​:确保AI8H8K64U的IO电平与93C66的电压要求(4.5V-5.5V)兼容6。
调试建议
[*]初始调试时,建议使用较低的SPI时钟频率(如100kHz)9
[*]先实现状态寄存器读取功能,验证基本通信是否正常
[*]使用逻辑分析仪或示波器观察SPI时序,确保符合93C66的要求11
[*]参考已有的93C46驱动代码(93C66的兼容型号),进行适当修改4
通过以上方法,AI8H8K64U的硬件SPI可以有效地实现对93C66存储器的读写操作,尽管需要特别注意其非标准的9位指令格式。在实际实现中,可能需要结合硬件SPI和少量位操作来完成完整的指令传输。


DebugLab 发表于 2025-7-7 12:39:36

需要发送9位的话可以尝试硬件发完8位后软件发1位
页: [1]
查看完整版本: 能不能用AI8H8K64U芯片的硬件SPI操作93C66的读写