- UID
- 1029342
- 性别
- 男
|
摘要:TMS320VC54x系列DSP(Digital Signal processor)没有AD、DA等常用外设且缺少程序存储器,故其应用系统通常需进行外设扩展模块与自举模块设计,针对传统解决方案将两个模块分别实现存在扩展器件多、系统集成度不高等问题,本文提出了一种带自举功能的DSP外设扩展模块。该模块通过将C8051F330单片机作为唯一的外扩芯片,利用其片內FLASH存储DSP自单程序代码,并采用其片上AD、DA实现DSP的外设扩展。实验表明本文提出的DSP外设扩展模块合理可行。
TMS320VC54x系列DSP由于具有快速运算能力,其指令执行速度最高可达160 MIPS,因此在消费电子、通信等领域应用广泛。但此系列DSP片上没有AD、DA等工业常用外设,常需要对其进行外设扩展模块设计,另外,此系列DSP也没有FLASH、EEPROM等便于改写的片内程序存储器,掉电后不能保存用户程序代码,因此还需要对其扩展自举模块。文献给出了不同的DSP外设扩展模块设计方案,而文献则给出了不同的DSP自举模块设计方案,上述将外设扩展模块与自举模块分别实现的设计方案,存在外扩器件较多、集成度不高、成本较高等问题。为此,文中提出了一种带自举功能的DSP外设扩展模块,该模块仅用外扩一个芯片,就能一体实现DSP的外设扩展与自举,具有扩展器件少、系统集成度高、稳定性好、成本较低等特点。
1 方案设计
文中提出的DSP外设扩展模块,借助C8051F330丰富的片上外设资源对DSP实现10位AD、DA扩展,同时利用C8051F330片内FLASH存储DSP用户程序代码,并用标准串行总线实现自举,模块原理框图如图1所示。图1中虚线框部分为本文设计的DSP外设扩展模块,其中C8051F330是本模块的唯一外扩芯片。一方面,目标板中的DSP通过将其片上McBSP0配置为SPI工作模式,实现控制C8051F330片上的AD采样数据或DA形成模拟波形,从而完成对DSP的AD、DA外设扩展。上述SPI通信中,TMS320VC5416为主设备,C8051F330为从设备。另外,考虑到只有SPI主设备才能启动数据传输,为了将SPI从设备的AD采样数据第一时间传输给SPI主设备,SPI从设备通过I/O引脚触发SPI主设备的外部中断,从而使SPI主设备启动SPI通信。另一方面,利用C8051F330片内FLASH的剩余空间(从0x0BB7到0x1FF)存储DSP程序代码,同时,利用5个I/O引脚模拟DSP的标准串行自举接口,从而实现DSP的标准串行自举模块设计。DSP有多种自举模式,标准串行自举模式占用的DSP硬件资源最少,故本文模块选用了标准串行自举模式。但在此模式下,自举模块必须与DSP的McBSP0接口相连,为了进一步减少对DSP硬件资源的占用,本文将C8051F330的SPI接口与5个I/O引脚模拟的标准串行自举接口复用DSP的McBSP0接口。
带自举功能的DSP外设扩展模块设计
2 硬件设计
文中提出的DSP外设扩展模块硬件主要包括如下几部分:自举模块,SPI通信模块,外设扩展模块以及C8051F330最小系统模块,考虑到介绍C8051F330最小系统的文献较多,此处不再赘述,这里主要给出其他模块的硬件连接关系,如图2所示。
带自举功能的DSP外设扩展模块设计
图2虚线框1为自举模块(标准串行自举方式)引脚连接关系,其中与标准串行自举直接相关的DSP引脚为接收时钟信号(BCLKR0),多通道缓冲接收引脚(BDR0),帧同步接收信号(BFSR0),因为DSP与单片机启动不同步,因此需要设置RS引脚在单片机上电后对DSP进行复位,设置XF引脚在DSP准备好后触发单片机的INT0启动自举操作。另外,DSP的自举方式有多种,且标准串行自举模式比较靠后,所以必须在硬件上对DSP的INT2、INT3和BIO引脚进行上拉保护,从而确保DSP上电后,其片上Bootloader进入标准串行自举方式。图2虚线框2给出了SPI通信模块中DSP与单片机对应引脚连接关系,本文采用4线主从方式实现SPI通信,DSP的BCKLX0为时钟控制引脚,BFSX0为片选引脚,为了最大限度节省DSP硬件资源,自举模块和SPI通信模块中的BDR0引脚进行了复用。为使主从设备更好地进行通信,SPI通信过程中设置了主从握手函数,P16为握手中断控制引脚。图2虚线框3说明了外设扩展模块引脚连接关系,外设扩展模块介绍了AD、DA及参考电压硬件设置,P17引脚为AD波形输入端,实验时配置为模拟输入,开漏输出。P01引脚为DA的波形输出端,P00引脚为参考电压接入引脚,配置为模拟输入,开漏输出,AD采样必须设置电压基准,C8051F330的电压基准可以被配置为外部电压基准、内部电压基准或电源电压VDD,为了使硬件设计更加简单,本文选用内部电压基准。
3 软件设计
DSP外设扩展模块软件设计分为两部分:代码转换程序设计和C8051F330单片机程序设计。代码转换程序是为了将用户在DSP开发软件CCS下编译生成的.out文件(一种公共目标文件格式,包含了许多冗余信息)去除冗余信息,变为全部有用的DSP自举文件格式,具体过程参见文献。下面详细介绍单片机程序的具体内容。
带自举功能的DSP外设扩展模块设计
C8051F330单片机程序包括四部分:DSP与单片机之间的通信协议、两次初始化程序、自举程序及片上外设驱动程序。C8051F330单片机程序主流程图如图3所示,图3中,单片机系统上电后,程序便开始运行,首先要禁止看门狗,防止程序跑飞,因DSP启动速度比C8051F330快,故自举前,先要初始化单片机端口并复位DSP,等待DSP的XF引脚触发P07中断后启动自举操作。自举完成后,就要利用C8051F330单片机的片上AD、DA对DSP进行外设扩展,DSP的外设扩展是建立在SPI通信基础上的,通信前,需要对单片机进行第二次初始化,避免引脚冲突。通信过程中,单片机与DSP需要通过SPI_handshaking()函数进行握手,握手成功后,单片机便可通过SPI通道读取DSP发送的AD命令或DA命令进行AD DA扩展。
3.1 DSP与单片机之间通信协议
为了使DSP和单片机进行良好的通信,本文设置了SPI通信协议,具体如图4所示,下面对此协议的制定作简要介绍。协议中一帧数据包括4个字节:第一字节为起始标志字节,值为0xC5,对应的二进制数为11000011,起始标志字节在数据传输中发挥着巨大作用,它标志着传输数据是否有意义;第二字节为命令字节,DSP在数据传输过程中处于两种命令状态,如果第二字节的6—7位值为01,则DSP处于AD命令状态,6—7位为10则DSP处于DA命令状态;第三、四字节分别装载的是10位AD、DA高、低8位数据。
带自举功能的DSP外设扩展模块设计
3.2 两次初始化程序设计
单片机需要进行两次初始化,第一次初始化是在自举之前,包括端口初始化、时钟初始化和中断初始化,第二次初始化是在自举之后,在第一次初始化的基础上还需进行SPI初始化、AD初始化、DA初始化,两次初始化期间,时钟只能初始化一次,否则单片机初始化不会成功。时钟初始化时被配置为24.5 MHz。之所以要对单片机进行两次初始化是因为自举和SPI通信过程中,DSP的McBSP0接口进行了复用,而且这样设计可以节省更多的硬件资源,降低设计成本。下面主要介绍下AD、DA和SPI初始化过程。AD初始化如下所示:
AMXOP =0x0F://P17引脚为AD输入端
AMXON =0x11://单端工作方式
ADCOCF =0x00;//右对齐
ADCOCN =0x80;//使能ADC
DA初始化如下所示:IDAOCN=0xF2;//使能DA
SPI初始化如下所示:SPIOCN=0x05;//使能SPI
SPIOCKR=0x5;//SPIO时钟速率为1.8432 MHz
3.3 自举程序设计
标准串行自举逻辑时序图如图5所示,图5指出模拟标准串行自举只需3个I/O引脚,但本文却用5个I/O口,其中另设了XF和RS引脚。因为DSP启动速度与单片机不同步,因此需设置RS引脚让单片机上电后对DSP进行复位,设置XF引脚让DSP触发单片机的外部中断INT0,启动自举模块。图5中的逻辑时序图说明为保证DSP正常运行,以下条件必须满足:传输每个字节数据需至少保证40个DSP时钟周期的延时时间,单片机时钟(BCLKR0)不可超过DSP时钟频率的1/2。发送帧同步信号之前应先发送2个时钟信号,帧同步信号置高期间发送1.5个时钟,帧同步信号置底后开始按位发送数据,一字节数据发送完成后再发送两个时钟信号。
带自举功能的DSP外设扩展模块设计
带自举功能的DSP外设扩展模块设计
3.4 片上外设驱动程序设计
片上外设驱动程序包括SPI通信驱动程序、AD与DA驱动程序。SPI通信是DSP外设扩展模块的软件基础,通信前,单片机先拉低DPS_INT0触发DSP的外部中断INT0,再读取一个无意义的SPI数据和DSP进行握手,握手成功后,主从设备便可通过SPI通道互相写数据或读取对方发送dat[]中的数据。SPI通信读函数驱动程序如下所示,程序中SPIODAT为SPI0数据寄存器,C8051F330在SPI通信中通过读SPIODAT来读取接收缓冲器中的数据。
SPI通信读函数驱动程序:
带自举功能的DSP外设扩展模块设计
C8051F330内部AD有6种转换启动方式,本文采用写‘1’ 到ADCOCN的ADOBUSY位,向ADOBUSY写‘1’方式提供了用软件控制ADCO转换的能力。ADOBUSY位在转换期间被置‘1’,转换结束后赋‘0’。单片机初始化完成,给C8051F330的P17端口输入正弦波(由于实验设备仍需完
善,正弦波频率限制在0~20 Hz,幅值限制在0~3.3 V)进行AD采样,本文采用查询方式进行AD采样,使用AD中断标志(ADOINT)来不断查询AD转换是否完成。当ADOINT位为逻辑‘1’时,AD数据寄存器(ADCOH:ADCOL)中的转换结果有效。采样完后,单片机通过SPI通道将采样值传送给DSP,DSP通过SPI_READ0函数从SPI读取采样数据。C8051F330片内DA为电流模式数/模转换器(IDAC)。IDAC的最大输出电流可以有3种不同的设置:0.5 mA、1mA和2 mA,此程序中设置为2 mA。DA转换时,DSP通过SPI_WRITE()函数将需要进行DA的数据写给单片机,最终单片机再将DSP发来的数据进行DA处理,AD采样驱动程序如下所示:
带自举功能的DSP外设扩展模块设计
4 实验
为验证本文设计模块的可行性,下面以TMS320VC5416目标板为例,设计了如下两个实验:一、16位标准串行自举实验;二、片上AD与DA扩展实验。
实验一:16位标准串行自举实验
实验一是为了验证C8051F330单片机可否成功实现TMS320VC5416处理器的16位标准串行自举。为了使实验结果便于观察,本文用CCS编写了液晶显示程序,显示内容为“基于C8051F330的DSP自举模块液晶显示自举测试等”。由上文可知,须将编写程序代码在CCS软件下编译生成.out文件,再将.out文件去除冗余信息,变为全部有用的DSP程序代码,移植到C8051F330单片机中才能使用,结合所编写的自举程序上电运行后可得到如图6所示结果,从图6中可以观察到DSP完全可以脱离仿真器,从C8051F330单片机读取DSP用户程序,以上结果说明自举模块设计合理可行。
带自举功能的DSP外设扩展模块设计
实验二:AD与DA扩展实验
实验二是为了验证在完全脱离DSP仿真器的情况下,利用C8051F330片上AD、DA对TMS320VC5416进行片上外设扩展的可行性。实验中由TMS320VC5416控制C8051F330片上的AD、DA采样数据或形成模拟波形,为了使实验结果便于观察,用示波器对AD采样前的波行与DA重构波形进行双通道跟踪,实验时,通过DSP试验箱给单片机的P17口接入频率为20 Hz、最大幅值为1.31 V的正弦波,如图7中黄色波形所示。单片机的P01端口为DA输出端,C8051F330的DA输出为电流输出,因为要用示波器显示DA输出波形,所以需在P01端口接入电阻,将电流输出转换为电压输出,DA输出波形如图7中蓝色波形所示。观察示波器波形,可看到DA重构波形与AD采样前的波形吻合。以上结果说明,该模块设计的利用C8 051F330片上外设资源对TMS320VC5416处理器进行AD与DA扩展是合理可行的。
5 结束语
文中提出了一种带自举功能的DSP外设扩展模块,该模块利用C8051F330的片内FLASH存储DSP用户程序,并利用5个I/O引脚模拟的标准串行总线实现DSP自举,从而以一种占用DSP硬件资源最少的方式解决了DSP掉电后不能保存用户程序的问题;利用C8051F330的片上外设资源对DSP进行10位AD、DA外设扩展,同时C8051F330的SPI接口同标准串行自举接口复用DSP的McBSP0接口,从而在实现DSP外设扩展的同时,最大限度地节省了DSP的硬件资源。该模块用一块单片机一体实现DSP外设扩展及自举,具有扩展器件少、集成度高、系统稳定性好、成本低廉等优点。另外,C8051F330的FLASH内存为8K字节,除去单片机程序,可存储5K字节左右的DSP程序,因此该模块可广泛用于程序代码不超过5K字节的DSP系统中。 |
|