微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 带自举功能的DSP外设扩展模块设计

带自举功能的DSP外设扩展模块设计

时间:10-29 来源:互联网 点击:

件格式,包含了许多冗余信息)去除冗余信息,变为全部有用的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位数据。

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个时钟,帧同步信号置底后开始按位发送数据,一字节数据发送完成后再发送两个时钟信号。

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,此程

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top