3.4 片上外设驱动程序设计
片上外设驱动程序包括SPI通信驱动程序、AD与DA驱动程序。SPI通信是DSP外设扩展模块的软件基础,通信前,单片机先拉低DPS_INT0触发DSP的外部中断INT0,再读取一个无意义的SPI数据和DSP进行握手,握手成功后,主从设备便可通过SPI通道互相写数据或读取对方发送dat[]中的数据。SPI通信读函数驱动程序如下所示,程序中SPIODAT为SPI0数据寄存器,C8051F330在SPI通信中通过读SPIODAT来读取接收缓冲器中的数据。
SPI通信读函数驱动程序:
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采样驱动程序如下所示:
4 实验
为验证本文设计模块的可行性,下面以TMS320VC5416目标板为例,设计了如下两个实验:一、16位标准串行自举实验;二、片上AD与DA扩展实验。
实验一:16位标准串行自举实验
实验一是为了验证C8051F330单片机可否成功实现TMS320VC5416处理器的16位标准串行自举。为了使实验结果便于观察,本文用CCS编写了液晶显示程序,显示内容为“基于C8051F330的DSP自举模块液晶显示自举测试等”。由上文可知,须将编写程序代码在CCS软件下编译生成.out文件,再将.out文件去除冗余信息,变为全部有用的DSP程序代码,移植到C8051F330单片机中才能使用,结合所编写的自举程序上电运行后可得到如图6所示结果,从图6中可以观察到DSP完全可以脱离仿真器,从C8051F330单片机读取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系统中。
本文关键字:外设 DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术