历史上的今天
返回首页

历史上的今天

今天是:2025年04月11日(星期五)

正在发生

2019年04月11日 | spi实验:接收电路与发送电路的自环测试

2019-04-11 来源:eefocus

SPI简介:


SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线。


SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作。


SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。


SPI相关的缩写或说法:


SPI的极性Polarity和相位Phase,最常见的写法是CPOL和CPHA,不过也有一些其他写法,简单总结如下:


(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (时钟)极性


(2) CKPHA (Clock Phase) = CPHA = PHA = Phase = (时钟)相位


(3) SCK=SCLK=SPI的时钟


(4) Edge=边沿,即时钟电平变化的时刻,即上升沿(rising edge)或者下降沿(falling edge)


对于一个时钟周期内,有两个edge,分别称为:


Leading edge=前一个边沿=第一个边沿,对于开始电压是1,那么就是1变成0的时候,对于开始电压是0,那么就是0变成1的时候;


Trailing edge=后一个边沿=第二个边沿,对于开始电压是1,那么就是0变成1的时候(即在第一次1变成0之后,才可能有后面的0变成1),对于开始电压是0,那么就是1变成0的时候;


本实验默认设置CPOL=0,CPHA=0。


实验要求:


按照SPI原理设计一个接收电路与一个发送电路,并作为从机进行自环测试。


实验过程:


SPI的特点即外部从机串行输入输出数据,而主机可以并行读取写入数据。一个SPI从机必需四个输入信号:sck——串行同步时钟;ncs——片选信号;mosi——主机输出从机输入信号;miso——主机输入从机输出信号。同时还需要一个clk时钟信号和一个rst复位信号。


本实验共分为三个部分:myspi从机模块,bcd2led输出数据显示模块,sck_counter串行同步脉冲生成模块。


1.从机模块:


从机模块又分为三个部分:sck跳变沿检测部分,spi接收部分,spi发送部分。


sck跳变沿检测部分:使用寄存器记录SCK状态,由状态判断SCK是否出现跳变沿。代码截图如下:



spi接收电路部分:当复位信号无效、片选信号有效且出现SCK上跳沿时,接收电路进入状态一,接收寄存器(8位)通过左移方式存入mosi数据,存满8位后进入状态二,将接收标志信号置为1,等待4个时钟周期后进入状态三,将接收标志信号清零并返回状态一。具体代码截图如下:



spi发送电路部分:当接收标志信号置1时发送标志信号也置为1。当复位信号无效、片选信号有效且发送标志信号为1时,发送电路进入状态一,发送寄存器从数据缓存区中读出8位数据进入状态二,如果出现出现SCK上跳沿则从发送寄存器中取出最高位作为miso发送,进入状态三,如果出现出现SCK下跳沿则将发送寄存器左移一位,最低位写入0,直至发送寄存器中8位数据全部发送完毕,进入状态四,将发送标志信号和miso信号都置为0,返回状态一。具体代码截图如下:



2. 输出数据显示模块:


将从机模块输出的miso信号传入数据显示模块中,若miso为1则时七段液晶显示管显示数字1,若miso为0则显示数字0,。具体代码截图如下:



3.sck脉冲生成模块:


每10次clk时钟周期使SCK信号跳反一次,该sck信号作为从机模块的sck输入信号。具体实现代码截图如下:



代码编写完成后管脚分配截图如下:



把代码下载DE0开发板后置SW0高电平,SW1低电平,SW2控制输入数据,手动按BUTTON28次后存入对应8位数据,再手动按8次对应显示上次输入的8位数据。


推荐阅读

史海拾趣

Electronic Concepts Inc公司的发展小趣事

ECI成立于20世纪90年代初,当时正值电子产业快速发展的浪潮。公司创始人李先生,一位有着丰富电子行业经验的工程师,看准了市场对定制化电子解决方案的需求,决定创立ECI。然而,初创时期资金紧张、人才匮乏,李先生不得不身兼数职,既要做研发,又要跑市场。在一次偶然的机会下,ECI成功为一家大型企业提供了定制化的电子控制模块,这一项目不仅为公司带来了可观的收入,也为ECI赢得了良好的口碑。

得力(deli)公司的发展小趣事

得力公司在国内市场取得成功后,开始积极拓展海外市场。公司在全球建立了多个生产基地和创新研发中心,整合全球人才和资源,为用户提供卓越的产品和服务。同时,得力还注重品牌本土化经营和国际化运营,努力融入当地市场和文化,赢得了全球客户的信赖和认可。

Advanced Power Solutions公司的发展小趣事

Advanced Power Solutions公司自创立之初,就致力于电源管理技术的研发。在一次偶然的实验中,公司的研发团队发现了一种新的电源转换技术,可以显著提高能源利用效率。公司迅速投入资源,完善这项技术,并成功将其应用于新产品中。这款高效能的产品迅速在市场上获得了认可,为公司带来了可观的收益,也奠定了公司在电源管理领域的领先地位。

Allied Controls Incorporated公司的发展小趣事

随着全球环保意识的提高,Advanced Power Solutions公司开始关注电源管理技术的环保性能。公司投入大量资源研发绿色、低碳的电源管理产品,并成功推出了一系列符合环保标准的新产品。这些产品不仅受到了消费者的欢迎,也赢得了政府和环保组织的认可。公司的环保理念和创新精神为其赢得了良好的社会声誉。

E-San Electronic Co Ltd公司的发展小趣事

随着全球环保意识的提高和可持续发展的呼声日益高涨,E-San Electronic Co Ltd积极响应这一趋势,将环保和可持续发展理念融入企业的日常运营中。公司采用环保材料和节能技术生产电子产品,减少了对环境的污染和资源的浪费。同时,公司还积极参与各种环保公益活动和社会责任项目,为社会做出了积极的贡献。这些举措不仅提升了企业的社会形象和声誉,也为企业赢得了更多消费者的信任和支持。

Filtran Ltd公司的发展小趣事

面对日益严峻的环保压力,Filtran Ltd积极响应可持续发展号召,将环保理念融入产品设计中。公司研发出了一系列绿色滤波器产品,采用可回收材料制造,并在生产过程中减少能源消耗和废弃物排放。这些环保产品不仅满足了市场对高性能滤波器的需求,还赢得了客户的广泛赞誉和信任。Filtran Ltd因此成为了电子行业环保实践的典范。

问答坊 | AI 解惑

简易通用型PCI接口的VHDL-CPLD设计

摘要: 从PCI时序分析入手,重点阐述了PCI通用的状态机设计,说明了用VHDL语言来实现本PIC通信状态机的软件设计以及进行MaxPlusII验证的程序和方法。用该方法所设计的接口既可支持PCI常规传输,又可支持PCI猝发传输。 关键词: PCI时序 CPLD器件 ...…

查看全部问答>

Quartus2会取代maxplus2吗?

现在大多数人都在用Quartus2,有没有这种可能。…

查看全部问答>

LPC1343特性学习之一,USB ISP下载

看了几眼数据手册,突然发现,LPC343居然支持USB ISP 下载。也就是说,你不用任何下载器或调试器,只用一个usb口就可以把程序下载到LPC1343里,这在普通的8位,16位单片机和ARM7上是绝无仅有的。 也就是说,PIO_01 (板上丝印为FT/GPIO)= LOW ...…

查看全部问答>

Wince shell替换问题

想用自己的程序作为shell wince启用时调用自己的程序 1、本来修改了注册表把explorer.exe换成自己的程序了,就是用注册表编辑器修改launch50=“myapp.exe” 在模拟器上是可以的,不知道真机上行不。请问这样做可行么 看有的帖子说wince的注册表 ...…

查看全部问答>

没有的ASIC/SOC/或是Verilog等论坛吗?

对这些感兴趣的xdjm是不是都在各版的“其他xxx”里混迹?…

查看全部问答>

evc 2个对话框之间的问题

我在一个工程里面加入了2个对话框。在第一个对话框中点击F1显示第二个对话框。在第二个对话框点击退出的时候显示第一个对话框。然后在第一个对话框点击退出的时候可以关闭整个程序。 但是为什么从第二个对话框退出显示第一个个对话框再退出后中是 ...…

查看全部问答>

WINCE触摸屏右键无法出现

我的屏幕的分辨率为800*480.那么对应的屏幕坐标为(3200,1920)?。。我现在出现的问题是,平常的操作基本正常,但是无法出现右键,AYGSHELL组件也已经选了。是不是抖动问题?但是我在DdsiTouchPanelGetPoint中保存第一次按下时的坐标,在弹起之前 ...…

查看全部问答>

EVC不能与EMULATOR连接,是什么原因,我安装顺序是没有问题的啊

都不知道什么原因,搞了好就了,网上搜了好多资料去解决还是不行的啊,那位前辈帮解决一下,再次小弟谢过了...... 在安装evc4.0与sp4的时候弹出一个 说emulaotor驱动程序对当前系统造成不稳定,windows无法加载这些驱动程序........ 连接错误信息: on ...…

查看全部问答>

经济型STM32/STM8离线/脱机编程器上市了!

支持STM32串口ISP,和STM8S系列的SWIM编程。1、自动增量(序列号)功能。2、全脱机工作,可电池供电和USB接口供电(可选配+5VUSB电源适配器)。3、支持STM32串口ISP,和STM8S系列的SWIM编程。4、支持STM32的串口IAP。5、可选配DB9的RS232转换器和RS4 ...…

查看全部问答>

大虾: MSP430具体应用

哪个大虾能列出几个具体的型号对应具体的应用实例,谢谢了 如: MSP430XFXX-------->XX表 我经常用S3F9454------>电饭煲 S3F9454------>牛排机…

查看全部问答>