最近在做一个使用SPI协议对ADS1298芯片进行数据读取的项目。通过这个项目也渐渐的了解了SPI的一些皮毛知识。在此记录,以后可用。
SPI串口协议的工作原理是时钟信号控制移位寄存器的输入输出。主机发送时钟信号(SCLK),控制主机的寄存器和从机寄存器的移位。
最常用的全双工模式是这样工作的:
主机控制片选信号,使能我们要操作的从机。
然后主机写一个数据,写数据的时候,会发送相应的SCLK,同时主机按照SCLK,将寄存器位中的数据一一移位发送出来,从机也按照SCLK将从机寄存器的数据一一移位出来。到最后一个时钟的时候,他们两个寄存器的数据互换了。
如果主机发送数据的时候,从机也会发送数据,从机发送的数据也许并不是有效数据,但是我们去管他干什么呢。我买你将这次的数据放弃就是了。也就是说发送的时候肯定会有接收。要想接收那就必须要发送一个数据(无论是不是有效数据)。换句话讲,从机并不知道自己什么时候要移位发送数据,只是根据SCLK来发送数据。
我们也可以这么理解,因为单片机内部设置的是,发送数据时候才会产生相应的SCLK,这时候从机知道了就会把寄存器中的数据发出来。我们如果自己进行模拟的话,控制单片机或者FPGA发送SCLK就可以将从机的数据读出来,而不用使用主机的发送数据命令。即:SCLK控制和协调一切。
我们以 ADS1298的读取寄存器 这样一个操作为例,主机使用STM32F103。
ADS1298读取寄存器命令是这样的:
我们用单片机控制的话,不能控制SCLK的产生,那我们就用写数据,来产生SCLK,读取后面的REG DATA。至于OPCODE,我们就是直接发送了,为主机的有效数据,就是说前两个发送有效数据,接收到的数据丢弃。第三个发送过程,发送数据随便填写,无效,而接受的数据为有效数据,我们留起来用。
程序是这样子写的:
这是主程序里面的段落。
下面是读写子程序。
1、发送读寄存器的地址
2、发送读寄存器的个数
3、读发回来的数据(如果读寄存器的个数为n,那个就要有n个此条命令)
关于ADS1298,具体的还是要仔细阅读其说明文档。像我自己在做实验的时候,总是无法读取出来正常的命令。通过示波器看到输入线上的数据不对,完全为0.。后来仔细的阅读了其说明文档,发现ADS1298在连续读数据模式下,无法有效实现读寄存器。然后在前面关闭了连续读模式,就能够成功的读取到寄存器的数据了。
留此,以后翻阅。
关键字:SPI 应用领悟
引用地址:
SPI的应用领悟
推荐阅读最新更新时间:2024-03-16 14:30
S3C2410与指纹传感器MBF200的SPI通信
引 言 随着网络技术和通信技术的发展,传统的身份认证技术对于信息安全表现得越来越有些力不从心了。由于人的身体特征具有唯一性和稳定性,人们开始把目光转向了生物识别技术,如指纹、虹膜、DNA、掌形识别等。在众多的特征识别中,指纹采集设备由于具有体积小、功耗低、稳定性好、误判概率低等优点,而受到人们的青睐。指纹传感器是指纹采集设备中的核心器件,在此选用富士通公司的MBF200。它是一款先进的固态指纹传感器芯片,具有性能高、功耗低、成本低、接口方便等特点。这使得在嵌入式系统中实现数据的传输更加方便。S3C2410是三星公司推出的ARM920T核微处理器,主要面向手持设备以及高性价比、低功耗的应用,且在片上集成了丰富的组件,有利于其扩
[单片机]
SPI时钟芯片DS1302的应用
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31 8的用于临时性存放数据的RAM寄存器。采用普通32.768kHz晶振!RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操
[单片机]
AVR MEGA8 通过 SPI 总线读写 93C46
AVR MEGA8 通过 SPI 总线读写 93C46,主要是练习SPI总线的使用而已,93C46的驱动相当的简单,这个代码也很好写,调试也不难,冷藏了一段时间的代码了,也懒得整理,copy出来就算了,随便看看就算了。 /* * 项目:SPI总线驱动93C46 * 平台:AVR MEGA8 + WinAVR * 作者:Etual / Etual@163.com * 日期:2008-8-18 */ SPI访问部分代码: ///////////////////////////////////////////////// // pin assignment #define SS PB2 //chip se
[单片机]
STM32系列第23篇--SPI
简介: SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 主机对外设的读写操作都是同步的,如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。 SPI接口一般使用4条线通信: MISO :主机输入从机输出 MOSI
[单片机]
ADI推出SPI总线专用隔离器
近日,ADI推出全新ADuM315x SPIsolator 数字隔离器,这是继I2C、RS-232、USB、RS-485、CAN之后ADI在总线标准隔离领域的又一创新。 ADI官方给出了一张隔离器发展历史图,截至目前,全球已销售10亿个通道,而且这十亿个器件没有一个因为安全问题而被击穿的,足以见得可靠性之高。 关于ADuM315x,我们先看一段视频: 通过这个视频,我们能一目了然ADuM315x对比传统光耦的优势——高性能小尺寸低价格,以及更简单的设计流程。 ADI公司接口和iCoupler数字隔离器组的应用工程师叶健详细讲解了ADuM315x特性,该产品
[模拟电子]
STM32上SPI+DMA实现大批量读取flash数据
最近做项目需要使用SPI+DMA,为了做实验感受DMA传输数据块,本人以SPI+DMA来读取flash中的数据。网上有很多例程是spi直接读取flash,无法提高性能。因为只是简单的实验SPI的DMA功能,所以在写数据时并没有考虑页写一些制约,只是简单的将1k大小的数据写入flash,然后用DMA读出这1K大小的数据,相信SPI和DMA的配置大家都很熟悉了,本人在此不在强调,只是说几点注意点的: (1)DMA关于SPI通道的选择,在stm32中,SPI1_RX读请求是DMA通道2,SPI1_TX发送请求是DMA通道3。刚开始我在配置通道的时候没仔细看,看的是SPI/I2S2_RX这个请求,把通道配置成了通道四和通道五,结果一直无法
[单片机]
PIC单片机SPI接口配置
一般所有单片机的SPI接口都需要配置以下几点内容(CPU作为SPI主模式): 1.引脚功能/方向配置:标准SPI接口由4根线组成,SCK,MISO(SDI),MOSI(SDO),SS(CS),其中SCK,MISO,MOSI都应设置成SPI功能,并且SCK和MOSI设置成输出引脚,MISO设置成输入引脚,SS引脚设置成普通GPIO功能,并且设置成输出。 2.SPI参数配置: (1)SPI的时钟频率设置,一般设置范围几K到几M不等,该频率决定SPI的时钟线和数据线的速率。 (2)SPI时钟极性 (3)SPI时钟相位(边沿) (4)数据宽度,一般选择8位或者16位 (5)位序,传输过程中是高位在前,还是低位在
[单片机]
以太网控制器ENC28J60及其SPI 接口技术
引 言 ENC28J60是Microchip Technology(美国微芯科技公司)近期推出的28引脚独立以太网控制器。 在此之前,嵌入式系统开发可选的独市以太网控制器都是为个人计算机系统设计的,如RTL8019、AX88796L、DM9008、CS8900A、LAN91C11l等。这些器件不仅结构复杂,体积庞大,且比较昂贵,目前市场上大部分以太网控制器的封装均超过80引脚,而符合IEEE 802.3协议的ENC28J60只有28引脚,既能提供相应的功能,又可以大大简化相关设计,减小空间。 1 结构和功能 采用业界标准串行外设接口(SPI)的以太网控制器ENC28J60具有以下主要特征: ◆符合IEEE 802
[嵌入式]