LY-F335系列DSP产品是由湖南六岳微电子有限责任公司推出的一款专为工业控制领域研发设计的软32位数字信号处理器,旨在为用户提供稳定可靠,兼容替代,性能卓越的芯片产品。LY-F335系列DSP不仅具备高速的数据处理能力,还支持多种通信接口和丰富的外设资源,使其广泛应用于变频伺服、逆变储能、工业控制、电力电子、工业自动化、汽车电子等多个领域。从开发的角度,因为该芯片兼容TMS320F28335芯片,所以工具链选择了CCS10等可用于TI公司28335MCU的编译下载仿真软件,工具非常成熟,安装完成之后也易于使用。这些已经在上篇介绍完成,这一篇测评着重测试SCIA也就是一般单片机使用的UART串口通信,在此基础上介绍工程文件作用。
第一步硬件接线,在数据手册上查到可以使用了GPIO1、3、5、7作为OLED通信引脚,在开发板上找到之后,将GPIO1、3作为SDA引脚和SCL引脚,GPIO5、7则作为VCC和GND,仿真器、串口转接器与开发板接线如图,红色标注即为OLED接线:

接下来分析工程文件:

.ccxml是设置仿真器和开发板芯片类型的文件,与之前使用的工程一致,不需要修改; .cmd文件是规划变量存储空间的文件,在调试时一般是CODE使用RAM,正常工作时CODE代码段使用flash存储器,调试和正常工作时代码放在不同存储空间所以需要修改;CMD的作用就是为程序代码和数据分配存储空间。
在工程项目中,操作(添加或删除)CMD文件的方法:
右击你的project,选择第一个“Add files to project”后,选择你要添加的.cmd的路径。如果要删去,则选中.cmd文件后“remove from project"不管在这个页面的"linker Command file"里添加还是在C2000linker 的include中添加或用工程文件管理器添加,只要将两个CMD文件加入工程就行,Flash和RAM的CMD文件同时只能一个使用(关键是不同同时编译,可以两个都添加,但是不用于编译使用)。
在DSP28335工程文件里(不用BIOS产生CMD文件),手写CMD文件一般有两个,在RAM里调试时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和28335_RAM_lnk.cmd,烧写到flash里时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和F28335.cmd,其中DSP2833x_Headers_nonBIOS.cmd文件可以在所有工程文件中通用,主要作用是把外设寄存器产生的数据段映射到对应的存储空间,主要作用是把外设寄存器产生的数据段映射到对应的存储空间,可以跟DSP2833x_GlobalVariableDefs.c文件对照一下看看。
关键点:
- 在RAM里调试时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和28335_RAM_lnk.cmd。
- 烧写到flash里时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和F28335.cmd。
- DSP2833x_Headers_nonBIOS.cmd文件可以在所有工程文件中通用,主要作用是把外设寄存器产生的数据段映射到对应的存储空间。
在这个界面选择合适的CMD文件。

工程中asm文件是汇编语言写的代码,作用是进行ADC校正相关数据初始化,以及启动代码,不需要修改。
大多数.c文件是库文件比如DSP2833x_PieCtrl.c和DSP2833x_PieVect.c,在本工程中,实现OLED通信的主要是:OLED文件夹下的文件和主函数Example_2833xGpioToggle.c,因为所有IO口被设置为输出状态不需要修改,将OLED添加到工程中,并将头文件调到工程,再进行如图所示修改:

在OLED_init函数中进行如下修改:
GpioDataRegs.GPASET.bit.GPIO5=1; //对应VCC
GpioDataRegs.GPACLEAR.bit.GPIO7=1; //对应GND
delay_ms(200); //重写函数避免调用出错
接着阅读并添加如下代码到主函数:
OLED_Init();
OLED_ColorTurn(0);
OLED_DisplayTurn(0);
__while__(1)
{ OLED_Refresh();
delay_loop();
OLED_Clear();
OLED_ShowString(8,16,"ZHONGJINGYUAN",16,1);
OLED_ShowString(20,32,"2014/05/01",16,1);
OLED_ShowString(0,48,"ASCII:",16,1);
OLED_ShowString(63,48,"CODE:",16,1);
OLED_Refresh();
delay_loop();
OLED_Clear();
OLED_ShowString(0,0,"ABC",8,1);
OLED_ShowString(0,8,"ABC",12,1);
OLED_ShowString(0,20,"ABC",16,1);
OLED_ShowString(0,36,"ABC",24,1);
OLED_Refresh();
delay_loop();
}
调试过程中发现BMP和显示汉字占据存储单元太大,导致CMD文件报错,于是删除了大部分BMP和汉字对应的常量并删除对应函数,最后给出调试图片:
