首页 > 编程知识 正文

dsp28335fifospi,spi串行接口

时间:2023-05-04 13:49:35 阅读:110943 作者:1655

SPI是一种高速、全双工、同步的通信总线。 SPI使用MOSI和MISO信号线传输数据,并使用SCK信号线同步数据。 MOSI和MISO数据线在每个SCK的时钟周期内传输1比特的数据,数据输入输出同时进行。 数据传输时,MSB通常会先行。

SPI接口通常使用四条线进行通信,但也可以不使用一侧的线。 那么,MISO,MOSI,SCLK。

主机和从机都有串行移位寄存器,主机通过向其SPI串行寄存器写入字节来开始一次传输。 寄存器通过MOSI信号线向从站传输字节,从站也将自己的移位寄存器的内容通过MISO信号线返回主机。 同时发生。

FIFO的目的是起到缓冲器的作用,如果外围设备速度过快,只有一个寄存器是不够的。但是具体编程什么的还是用BUF就行了。

DSP的SPI应分为主控制器模式从控制器模式

主控制器模式:将MASTER=1数据写入SPI数据寄存器(SPIDAT )或SPI输入缓冲寄存器(SPITXBUF )后,将启动通过SPISIMO引脚发送数据。

首先,通过最高位MSB、同时接收的数据从SPISOMI端子移动到SPIDAT的最低位,接收后数据保存在SPIRXBUF中。 (右对齐)如果数据发送到SPIRXBUF,则为http://www.Sina.coom

从主机=0检测到主机控制器的SPICLK信号后,SPI INT FLAG会置1,若SPI INT ENA为1、SPITXBUF的数据将被发送到网络。 TALK为0,SPISOMI为高阻态。 如果在发送数据的过程中清除TALK,即使SPISOMI引脚被强制设置为高阻抗状态,也可以使用当前的合适时钟边沿

配置SPI void spia _ init (void ) {EALLOW; sysctrlregs.pclk cr0.bit.spiaenclk=1; //SPI-AEDIS; InitSpiaGpio (; //initializespififoregistersspiaregs.spiff tx.all=0xe 040; SpiaRegs.SPIFFRX.all=0x204f; spiar egs.spiff CT.all=0x0spiar egs.spic Cr.all=0x 000 f; //Reset on,rising edge,16-bitcharbitsspiaregs.SPI CTL.all=0x 0006; //Enable mastermode,normal phase,//enable talk,andspiintdisabled.spiar egs.SPI brr=0x 007 f; SpiaRegs.SPICCR.all=0x009F; //relinquishspifromresetspiaregs.spip ri.bit.free=1; //setsobreakpointsdon ' tdisturbxmission//SPI是全双工的,因此send和receive是一起的uint 16 spia _ sendrecivedata ((uint 16 dat )/trreceive //waituntildataisreceivedwhile (spiar egs.spiff rx.bit.rxffst!=1//接收FIFO中的字符个数。 用于检测FIFO中是否有字符。 当FIFO容纳在BUF中时,FIFO变为0,表示保留的return SpiaRegs.SPIRXBUF; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。