DSP28335-FlashAPI使用

一、前提条件(先确认 3 件事)

在开始之前,你必须确认:

1️⃣ 芯片 :TMS320F28335

2️⃣ CCS :5.5(你说得很明确,OK)

3️⃣ 控制卡/最小系统能正常烧写 Flash

⚠️ 注意:

这个工程 必须以 Flash 方式运行,不能只在 RAM 下跑。


二、创建 CCS 5.5 工程(不要偷懒)

✅ 1️⃣ 新建工程

复制代码
 

File → New → CCS Project

配置如下(关键):

项目 选项
Project name FlashParam_28335
Target TMS320F28335
Connection XDS100 / XDS510(你用哪个选哪个)
Project type Empty Project (with main.c)
Compiler TI v6.x C2000

👉 一定选 Empty Project

👉 不要选 Example / Starter


三、导入 TI 官方支持文件(非常关键)

你需要 3 类文件


① 芯片头文件(DSP2833x)

从 TI ControlSUITE / C2000Ware 拷:

复制代码
 

DSP2833x_common/ DSP2833x_headers/

至少要这些:

复制代码
 

DSP2833x_GlobalVariableDefs.c DSP2833x_SysCtrl.c DSP2833x_Gpio.c DSP2833x_PieCtrl.c DSP2833x_PieVect.c DSP2833x_DefaultIsr.c

📌 做法

  • 右键工程 → Add Files

  • 复制到工程目录(推荐 Copy files)


② Flash API 库(重点)

从 TI 安装目录拷:

复制代码
 

Flash28335_API_V210.lib Flash2833x_API_Library.h Flash2833x_API_Config.h

放到:

复制代码
 

/FlashAPI/


③ Example 中的两个文件(你刚贴的)

复制代码
 

Example_Flash2833x_API.c Example_Flash2833x_API.h

👉 第一阶段建议原样拷进来,先跑通


四、配置 Include 路径(90% 新手死在这)

右键工程 → Properties

Build → C2000 Compiler → Include Options

添加:

复制代码
 

${PROJECT_ROOT} ${PROJECT_ROOT}/FlashAPI ${PROJECT_ROOT}/DSP2833x_common/include ${PROJECT_ROOT}/DSP2833x_headers/include

⚠️ 不加这个,Flash2833x_API_Library.h 会报错


五、链接 Flash API 库(极关键)

添加:

复制代码
 

${PROJECT_ROOT}/FlashAPI/Flash28335_API_V210.lib


六、使用 Flash 版 linker.cmd(不是 RAM 版

必须用 Flash cmd 文件

从 TI 示例中拷:

复制代码
 

DSP28335_FLASH.cmd

⚠️ 不要用 DSP28335_RAM.cmd


关键修改点(必须确认)

.cmd 里要有:

复制代码
 

Flash28_API: { -lFlash28335_API_V210.lib(.text) -lFlash28335_API_V210.lib(.econst) } LOAD = FLASHD, RUN = RAML0, LOAD_START(_Flash28_API_LoadStart), LOAD_END(_Flash28_API_LoadEnd), RUN_START(_Flash28_API_RunStart), PAGE = 0

以及:

复制代码
 

ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0

👉 没有这两段 = Flash API 不能运行


七、确认 main() 启动流程(照 Example)

你的 main() 至少要包含:

复制代码
 

InitSysCtrl(); // PLL DINT; // 关中断 InitPieCtrl(); InitPieVectTable(); Example_CsmUnlock(); Example_MemCopy(&Flash28_API_LoadStart, &Flash28_API_LoadEnd, &Flash28_API_RunStart); Example_MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); Flash_CPUScaleFactor = SCALE_FACTOR; Flash_CallbackPtr = NULL; Example_CallFlashAPI();

👉 这一步你 先不要改任何逻辑


八、烧写 & 运行(第一次验证)

操作流程

1️⃣ Build 工程(无 error)

2️⃣ Debug

3️⃣ Load Program 到 Flash

4️⃣ Run

如果一切正确,你会:

  • 看到程序停在 ESTOP0

  • Flash 对应 sector 内容发生变化


九、从 Example 过渡到「参数存储工程」

等你确认 Example 能跑通一次,下一步才做这件事:

🔧 精简工程

❌ 删除:

  • ToggleTest

  • 各种错误示例写入

  • 多余 Verify 测试

✅ 新增:

复制代码
 

typedef struct { Uint16 magic; Uint16 version; float threshold; Uint16 crc; } FlashParam;

固定一个 sector:

复制代码
 

#define PARAM_FLASH_ADDR 0x338000

相关推荐
玖石书15 分钟前
WSL2 手动安装 Ubuntu 24.04 到指定磁盘位置
linux·运维·ubuntu·wsl
এ慕ོ冬℘゜19 分钟前
前端实战:jQuery实现动态表格渲染与状态切换功能
前端·javascript·jquery
烂蜻蜓1 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
库玛西1 小时前
深入浅出传输层:UDP 与 TCP 协议全景指南
linux·服务器·网络·c++·笔记·tcp/ip·udp
jay神1 小时前
【计算机毕业设计】基于Flask+Vue的电影数据可视化与智能推荐系统
前端·vue.js·python·信息可视化·flask·毕业设计·课程设计
满怀冰雪2 小时前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
薛定谔的悦5 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
FreeTinker7 小时前
HTML本地存储技术解析:localStorage与sessionStorage的原理、差异与应用场景
前端·html
qq_452396237 小时前
第十二篇:《全链路监控与可观测性:前端错误追踪与性能分析》
前端
DeepVisionary8 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化