1. PIC18与25XXX系列EEPROM的SPI通信基础
在嵌入式系统开发中,微控制器与外围存储设备的通信是基础但至关重要的环节。SPI(Serial Peripheral Interface)作为一种高速、全双工的同步串行通信协议,因其简单的硬件实现和高效的传输速率,成为连接微控制器与EEPROM等外围设备的首选方案。
Microchip的PIC18系列微控制器内置了MSSP(Master Synchronous Serial Port)模块,该模块原生支持SPI通信协议,能够通过硬件自动处理信号时序,极大减轻了软件负担。与此同时,25XXX系列串行EEPROM作为常见的非易失性存储解决方案,与PIC18的MSSP模块形成了完美的硬件搭档。
提示:SPI通信采用主从架构,包含四根基本信号线:SCK(时钟)、MOSI(主出从入)、MISO(主入从出)和SS(片选)。理解这四根线的作用是掌握SPI通信的基础。
在实际工程中,使用硬件SPI相比软件模拟SPI具有显著优势:
- 硬件自动处理时钟信号生成和数据采样时机
- 数据传输过程中CPU可并行执行其他任务
- 通信时序更精确,不受中断等因素干扰
- 最高传输速率可达Fosc/4(PIC18在20MHz晶振下可达5MHz)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件连接与电路设计
2.1 典型连接方案
PIC18与25XXX系列EEPROM的标准SPI连接方式如下:
| PIC18引脚 | 25XXX引脚 | 功能说明 |
|---|---|---|
| RC3/SCK | SCK | 同步时钟信号 |
| RC4/SDI | SO | 从设备输出数据 |
| RC5/SDO | SI | 从设备输入数据 |
| RBx | CS | 片选信号(低有效) |
| VDD | VCC | 电源(2.5-5.5V) |
| VSS | VSS | 地线 |
注意:WP(写保护)和HOLD(暂停传输)引脚建议通过10kΩ电阻上拉至VCC,除非需要用到这些功能,否则保持高电平可避免意外写保护或通信中断。
2.2 电路设计要点
- 去耦电容:在VCC和VSS之间应放置0.1μF陶瓷电容,位置尽量靠近EEPROM电源引脚
- 信号完整性:
- 对于高频应用(>1MHz),建议在SCK线上串联33Ω电阻以减小振铃
- 长距离传输时(>10cm),考虑使用双绞线或屏蔽线
- 多设备共享SPI总线:
- 每个从设备需要独立的CS线
- 总线总电容应小于50pF,否则需降低时钟频率
- 可添加74HC125等缓冲器增强驱动能力
3. MSSP模块配置详解
3.1 SPI模式选择
25XXX系列EEPROM支持SPI模式0,0和模式1,1,本文以模式0,0为例:
- CKP=0:时钟空闲状态为低电平
- CKE=1:数据在时钟上升沿采样
- SMP=1:输入数据在采样周期结束时锁存
对应的寄存器配置如下:
c复制// SPI模式0,0配置示例
SSPSTAT = 0xC0; // SMP=1, CKE=1
SSPCON1 = 0x21; // SSPEN=1, CKP=0, SPI主模式Fosc/16
3.2 时钟频率设置
MSSP模块支持多种时钟分频选项:
| SSPM3:SSPM0 | 时钟源 | 典型频率(20MHz晶振) |
|------
