资源描述:
《嵌入式处理器__mpc860与单片机通信的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、http://www.paper.edu.cn嵌入式处理器Mpc860与单片机通信的设计与实现刘明武张阳安周斌付洪杰(北京邮电大学光通信与光波技术教育部重点实验室)摘要:介绍了32位嵌入式处理器MPC860SPI接口。给出了MPC860与Atmega128单片机通信硬件电路连接图以及MPC860SPI(串行外围设备接口)软件结构框图,设计了MPC860与ATmega128单片机通信的帧格式,实现了Mpc860与单片机的通信。关键词:MPC860单片机串行外围设备接口一、前言MPC860是目前通信领域广泛应用的一款32位嵌入式通信处理器
2、,内部集成了SPI接口。SPI接口是一种高速同步串行接口,有4条引脚,分别为SPISEL(片选线)、SPIMISO(主进从出)、SPIMOSI(主出从进)、SPICLK(串行时钟信号线)。SPI采用全双工通信方式同时发送和接受数据,支持主机模式和从机模式。主机为SPI数据传输的控制方,由主机将SPISEL管脚的电平拉低,作为同步数据传输的初始化信号,通知从机进入传输状态,然后主机启动发送过程,送出时钟脉冲信号。在时钟脉冲信号的同步下,数据收发同时进行,通过SPI接口,主机移位寄存器的数据移入到从机移位寄存器,同时从机移位寄存器中的数据
3、移入到主机移位寄存器中,实现数据的传送。当数据传送完,主机将SPISEL(片选线)拉高,传输结束。由于SPI的发送和接收是同时进行的,实际都是以发送一个字节发起,只不过需要接收的时候发送的是一个没有实际意义的字节。SPI可以作为微处理器与单片机或者与外设芯片串行扩展接口。【1】二、SPI驱动程序的编写MPC860与ATmega128都支持SPI接口,因此可以采用SPI接口进行通信,硬件连接如图1所示。【1】,【2】mpc860Atmega128SPIMISOSPIMOSI数字温度传感器SPIMOSISPIMISOSPICLKSPICL
4、K风扇控制SPISEL/SSIRQ3INT6告警指示灯图1mpc860与单片机物理连接图-1-http://www.paper.edu.cn对MPC860SPI接口进行初始化,主要是针对相关寄存器进行操作。与SPI相关的寄存器主要有SPMODE(SPI模式寄存器),SPIE(SPI事件寄存器),SPIM(SPI屏蔽寄存器),SPCOM(SPI命令寄存器)等。MPC860寄存器的配置具体步骤如下:【1】1将管脚PB28,PB29,PB30分别设置为SPIMISO、SPIMOSI、SPICLK管脚。PBPAR(28,29,30)=1;PB
5、DIR(28,29,30)=1;PBODR(28,29,30)=0;2设置收发缓冲区描述符(BD)在双端口RAM中的偏移位置。SPI_RBASE=0x2608;SPI_TBASE=0x2600;3执行初始化RX、TX参数命令。CPCR
6、=0x0051;4初始化SDCR寄存器,给予SDMA的U总线一个普通仲裁优先级。SDCR=0x0001;5设置RFCR、TFCR寄存器,使低地址存放最高有效字节;SPI_RFCR=0x10;SPI_TFCR=0x10;6设置MRBLR寄存器,确定接收缓存区的最大接收空间;SPI_MRBLR=0x0080
7、;7初始化RxBD、TxBD寄存器,设置收发缓存区,并确定将要发送的数据长度。发送缓存区txbuf放置需要通过SPI发送的数据,接收缓存区rxbuf放置通过SPI接收到的数据。SPI_RxBD_STATUS=0x3800;SPI_RxBD_RXBUFL=((UINT32)rxbuf&0xFFFF0000)>>16;SPI_RxBD_RXBUFH=((UINT32)rxbuf&0xFFFF);SPI_TxBD_STATUS=0x3800;SPI_TxBD_TXBUFL=((UINT32)txbuf&0xFFFF0000)>>16;SPI
8、_TxBD_TXBUFH=((UINT)txbuf&0xFFFF);8设置SPIE,清除任何当前事件;设置SPIM,使能SPI中断;SPIE=0x37;SPIM=0x00;9设置SPMODE寄存器,使MPC860工作模式为主模式,并选择SPI基本时钟BRGCLK。SPMODE=0x0F74;10设置SPI命令寄存器SPCOM[STR],SPI开始传输。将发送缓冲区的数据发送出去,数据长度由RxBD寄存器决定,同时将收到的数据放置到接收缓存区。SPCOM
9、=0x80;三、采用SPI实现MPC860与单片机的通信-2-http://www
10、.paper.edu.cn要实现MPC860与单片机数据的可靠传输,还要设计通信协议。在我们设计的通信控制板上,MPC860与ATmega128之间通过SPI接口相连。MPC860做主机,ATmega128做从机,SPI