前言
作为一名嵌入式初级工程师,近期完成了软件 I2C和0.96 寸 OLED驱动在 MSP430FR2355 芯片上的移植与调试。
调研发现,目前网上几乎没有针对 MSP430FR2355 这款 FRAM 芯片的相关开源代码和垂直教程,很多同行在跨平台移植 OLED 时会遇到大量时序、GPIO 模式、工程配置问题,耗费大量时间。
因此整理本文,详细记录移植全过程、核心代码解读及踩坑经验,并提供完整可编译工程,帮助后续使用该芯片的开发者少走弯路。
本文工程基于网络开源软件 I2C 驱动、江协科技 OLED 驱动进行移植与适配,针对 MSP430FR2355 平台全流程调试,最终实现 OLED 正常点亮、显示字符 / 字符串,工程可直接导入 CCS 20.2.0 编译运行。
感谢原作者的开源精神,也欢迎各位同行交流指正。
先给大家看一下最终的 OLED 点亮效果:
一、环境准备
1.1 硬件环境
- 主控芯片:MSP430FR2355
- 显示模块:0.96 寸 I2C 接口 OLED(SSD1306)
1.2 软件环境
- 开发工具:Code Composer Studio (CCS) 20.2.0
二、硬件接线
本工程采用软件 I2C,GPIO 引脚可自由映射,以下为移植时使用的引脚定义(可根据自身开发板修改)。
表格
| OLED 引脚 | MSP430FR2355 引脚 | 功能说明 | 备注 |
|---|---|---|---|
| VCC | 3.3V | 供电 | 必须 3.3V,不可接 5V |
| GND | GND | 接地 | - |
| SCL | P6.0 | 软件 I2C 时钟线 | 可任意 GPIO,需与代码一致 |
| SDA | P6.1 | 软件 I2C 数据线 | 可任意 GPIO,需与代码一致 |
三、代码参考与来源说明
3.1 软件 I2C 参考
参考来源:MSP430f5529 模拟 IIC 协议_5529 模拟 i2c-CSDN 博客
MSP430 与 STM32 软件 I2C 核心区别MSP430 没有开漏输出模式,因此必须通过切换 SDA 引脚方向来模拟开漏、释放总线。
表格
| 操作 | STM32(开漏输出) | MSP430(无开漏) |
|---|---|---|
| 输出低电平 | 写 0 | 配置为输出,写 0 |
| 释放总线 | 写 1(硬件高阻) | 配置为输入模式(高阻) |
| 引脚方向切换 | 不需要 | 必须切换:输出 / 输入 |
| 实现方式 | 硬件开漏 | GPIO 方向模拟开漏 |
3.2 OLED 驱动参考
B 站:江协科技视频:04 - 代码演示 - 不使用缓存区
四、移植修改点与关键注意事项
- 32 位除法优化江协源码中使用 32 位除法做进制转换,会严重拉低 MSP430 运行速度,建议改为 16 位或用乘法替代除法。
- 必须添加适当延时MSP430 操作寄存器速度极快,I2C 时序容易跑飞,必须在关键位置添加 delay 保证时序稳定。
- MSP430FR2355 无硬件 FPU不支持硬件浮点运算,
sprintf不支持浮点数格式化。 - I2C 释放总线方式特殊再次强调:MSP430 无开漏模式,SDA 必须通过配置为输入来释放总线,否则会导致 I2C 通信异常。
- 当前功能范围本工程已实现:字符、数字、字符串、中文显示。暂未支持:线段、图形绘制等扩展功能,可在此基础上继续扩展。
五、完整工程获取
完整 CCS 工程、源码、文件结构已开源至 GitHub,可直接下载导入编译:
**GitHub 地址:**OrangeKKKANG/MSP430FR2355_SoftI2C_OLED工程说明:MSP430FR2355 软件 I2C 驱动 0.96 寸 OLED (SSD1306),基于江协科技 OLED 驱动和开源 I2C 驱动移植,CCS 20.2.0 可直接编译运行。
结束语
本项目从零完成 MSP430FR2355 软件 I2C 与 OLED 的移植、调试与开源,过程中记录了大量细节与避坑经验。
希望能帮助到正在学习 MSP430 的同学,也期待大家一起交流、共同进步。
如有错误或改进建议,欢迎在评论区指正。