DSP之SPI笔记

1. SPI简介

SPI全称是Serial Peripheral Interface;意为串行外围接口;

高速的,全双工,同步的通信总线;

SPI接口:

MISO:Master Input Slave Output(主输入从输出),数据方向为从机到主机;

MOSI:Master Output Slave Input(主输出从输入),数据方向为主机到从机;

SCLK:时钟信号线,用于数据同步; F28335的SPI时钟频率最大为SYSCLK/2;

CS:从设备片选信号线;低有效(选中);

SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步,MOSI及MISO数据线在SCK的每个时钟周期传一位数据,且数据输入输出是同时进行的;数据传输时,还区分MSB还是LSB优先;

SPI主要特点:

(a)可以同时发出和接收串行数据;

(b)可以当作主机或从机工作;

(c) 提供频率可编程时钟;

(d) 发送结束中断状态;

(e) 写冲突保护;总线竞争保护等;

与I2C总线对比它的缺点:

(a) 没有指定的流控制;

(b) 没有应答机制确认是否接收到数据;

SPI工作的四种方式:与时钟极性(CPOL)和时钟相位(CPHA)控制;

2. 软件部分

void SPIA_Init(void)
{
	EALLOW;
	SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1;   // SPI-A
	EDIS;

	InitSpiaGpio();

	// Initialize SPI FIFO registers
	//bit15:SPI FIFO恢复传输和接收
	//bit14:SPI FIFO增强使能
	//bit13:重新使能传输FIFO操作;
	//bit6:写1清空第7位TXFFINT标志
	SpiaRegs.SPIFFTX.all=0xE040;

	//bit13:重新使能接收FIFO操作;
	//bit6:写1清除bit7的RXFFINT标志;
	//bit0~3:写1111复位FIFO中断水平位;
	SpiaRegs.SPIFFRX.all=0x204f;

	//FIFO传输延时位    定义了延时介于每个传输从FIFO传输缓存到传输移位寄存器;
	SpiaRegs.SPIFFCT.all=0x0;

	//bit7:SPI软复位;
	//bit6:移位时钟极性
	//bit4:SPI 回环测试
	//字符长度, 16位;
	SpiaRegs.SPICCR.all =0x000F;	             // Reset on, rising edge, 16-bit char bits

	//bit3:CLOCK PHASE,时钟相位选择;  0:普通SPI时钟方案
	//bit2: 0:SPI配置成slave; 1:spi配置成master
	//bit1: master/slave传输使能
	//bit0:SPI 中断使能  0:不使能中断;
	SpiaRegs.SPICTL.all =0x0006;    		     // Enable master mode, normal phase,
	                                                 // enable talk, and SPI int disabled.
	//SPI位率控制
	SpiaRegs.SPIBRR =0x007F;

	//bit7:SPI软复位; 1:SPI准备传输或接收下一个字符;
    //bit4:SPI 回环测试
	SpiaRegs.SPICCR.all =0x009F;		         // Relinquish SPI from Reset

	//自由运行
	SpiaRegs.SPIPRI.bit.FREE = 1;                // Set so breakpoints don't disturb xmission
}
Uint16 SPIA_SendReciveData(Uint16 dat)
{
	// Transmit data
	SpiaRegs.SPITXBUF=dat;//传输数据buffer

	// Wait until data is received
	//等待接收FIFO有一个字;
	while(SpiaRegs.SPIFFRX.bit.RXFFST !=1);

	return SpiaRegs.SPIRXBUF;//SPI串口接收缓存寄存器
}

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天未及海宽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值