您的位置 首页 被动

单片机 arm 常用的接口总结

常用的接口有spi,I2c,uart等,他们都有自己的协议规定,下面谈谈它们之间的联系与区别:1I2C总线涉及到I2C的编程主要涉及到两种情况:有

常用的接口有spi,I2c,uart等,他们都有自己的协议规则,下面谈谈它们之间的联络与差异:

1 I2C总线

涉及到I2C的编程首要涉及到两种状况:有专用操控器的arm芯片,无操控器的单片机芯片。有操控器的arm芯片,首要便是依据数据手册,经过设置相应的寄存器(操控寄存器,状况寄存器等)来完成相应的操作;可是关于没有操控器的单片机芯片,只需经过相应的引脚依据I2c协议来予以模仿完成。

首先来谈谈I2c协议。涉及到的信号首要分为三类:开端信号,中止信号,发送数据。既然是协议,便是两边事前约定好的规则,通讯两边依照这个规范来进行数据的传输就能够了。确保数据传输的共同性的话,还有在某些时分发送一些顺便的查看信息,例如ack信号,非ack信号;

开端信号:SCL为高电平时,SDA由高电平向低电平跳变,开端传送数据。
完毕信号:SCL为高电平时,SDA由低电平向高电平跳变,完毕传送数据。
应对信号:接纳数据的IC在接纳到8bit数据后,向发送数据的IC宣布特定的低电平脉冲,表明已收到数据。CPU向受控单元宣布一个信号后,等候受控单元宣布一个应对信号,CPU接纳到应对信号后,依据实际状况作出是否持续传递信号的判别。若未收到应对信号,由判别为受控单元呈现毛病。

依据单片机的模仿I2C的信号,应该严厉依照以上的时序进行研究完成。

接下来看看带有I2C的操控器的arms3c2410,s3c2440芯片的i2c的操控。首要包含四个相关的寄存器的设置:经过它们之间的相互配合,完成i2c的数据传输。

IICON:操控寄存器。首要是用于操控是否宣布ACK信号,设置发送器的时钟,敞开I2c中止,并标明中止是否产生。

  IISTAT: 状况寄存器。挑选I2C的作业形式,宣布S信号,P信号,使能承受/发送功用,并标明各种状况,比方总线裁定是否成功,作为从机时是否被寻址,是否接纳到0地址,是否接纳到ACK信号。

IICADD:多主机I2C地址寄存器;

IICDS:发送、承受数据移位寄存器;

接下来依照数据手册,依据其主机发送器的作业流程来编写相应的代码。

三个函数就能够完成简略的I2C协议: 读取,写入,中止;

编程思路如下:

写函数,读函数,仅仅是发动I2C传输,然后等候,直到数据在中止服务程序中传输完毕后再回来。

2 SPI总线协议的知道(SPI中的极性CPOL和相位CPHA)

【布景】

最近在看关于Silicon Labs的C8051F347的某个驱动中,关于SPI部分初始化的代码,看到其关于SPI的设置为CPOL=1,CPHA=0,关于CPOL及CPHA的意义不了解,想要搞懂,这两个参数到底是什么意思,以及为何要这么设置。所以才去找了SPI的极性和相位的相关材料,收拾如下。

【SPI基础知识简介】

设备与设备之间经过某种硬件接口通讯,现在存在很多种接口,SPI接口是其间的一种。

SPI平分Master主设备和Slave从设备,数据发送都是由Master操控。

一个master能够接一个或多个slave。

常见用法是一个Master接一个slave,只需求4根线:

SCLK:Serial Clock,(串行)时钟

MISO:Master In Slave Out,主设备输入,从设备输出

MOSI:Master Out Slave In,主设备输出,从设备输入

SS: Slave Select,选中从设备,片选

SPI因为接口相对简略(只需求4根线),用处算是比较广泛,首要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。即一个SPI的Master经过SPI与一个从设备,即上述的那些Flash,ADC等,进行通讯。
而主从设备之间经过SPI进行通讯,首先要确保两者之间时钟SCLK要共同,相互要商议好了,要匹配,不然,就无法正常通讯了,即确保时序上的共同才可正常讯。而这儿的SPI中的时钟和相位,指的便是SCLk时钟的特性,即确保主从设备两者的时钟的特性共同了,以确保两者能够正常完成SPI通讯。

【SPI相关的缩写或说法】

先简略说一下,关于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

相位=CPHA

SCLK=时钟

第一个边缘和第二个边缘

【SPI的相位和极性】

CPOL和CPHA,别离都能够是0或时1,对应的四种组合便是:

Mode 0 CPOL=0, CPHA=0
Mode 1 CPOL=0, CPHA=1
Mode 2 CPOL=1, CPHA=0
Mode 3 CPOL=1, CPHA=1

结合这个图现已很清楚的知道到,极性和相位首要是操控什么东东了.cpol等于0时,时钟的闲暇电平便是0;cpol等于1时,闲暇电平便是1;而cpha决议了数据采样的时间,是第一个边缘的时分,仍是第二个边缘的时分。

【怎么看懂和回忆CPOL和CPHA】

所以,关于在其他当地介绍的,看似多么杂乱难明难回忆的CPOL和CPHA,其实经过上面解说,就很简单看懂了:

去看时序图,假如开端的一直SCLK的电平是0,那么CPOL=0,假如是1,那么CPOL=1,

然后看数据采样时间,即时序图数据线上的数据那个矩形区域的中心所对应的方位,对应到上面SCLK时钟的方位,对应着是第一个边缘或是第二个边缘,即CPHA是0或1。(对应的是上升沿仍是仍是下降沿,要依据对应的CPOL的值,才干确认)。

即:

(1)怎么判别CPOL:SCLK的闲暇时分的电压,是0仍是1,决议了CPOL是0仍是1;

(2)怎么判别CPHA:而数据采样时间对应着的SCLK的电平,是第一个边缘仍是第二个边缘,对应着CPHA为0仍是1。

【软件中怎么设置SPI的极性和相位】

SPI分主设备和从设备,两者经过SPI协议通讯。

而设置SPI的形式,是从设备的形式,决议了主设备的形式。

所以要先去搞懂从设备的SPI是何种形式,然后再将主设备的SPI的形式,设置和从设备相同的形式,即可正常通讯。

关于从设备的SPI是什么形式,有两种:

(1)固定的,有SPI从设备硬件决议的

SPI从设备,详细是什么形式,相关的datasheet中会有描绘,需求自己去datasheet中找到相关的描绘,即:

关于SPI从设备,在闲暇的时分,是高电平仍是低电平,即决议了CPOL是0仍是1;

然后再找到关于设备是在上升沿仍是下降沿去采样数据,这样便是,在定了CPOL的值的前提下,对应着能够推算出CPHA是0仍是1了。

举例1:

CC2500- Low-Cost Low-Power 2.4 GHz RF Transceiver的datasheet中SPI的时序图是:

从图中能够看到,最开端的SCLK和完毕时分的SCLK,即闲暇时间的SCLK,是低电平,推导出CPOL=0,然后能够看到数据采样的时分,即数据最中心的那一点,对应的是SCLK的第一个边缘,所以CPHA=0(此刻对应的是上升沿)。

举例2:

SSD1289- 240 RGB x 320 TFT LCD Controller Driver的datasheet中说到:

“SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.”

意思是,数据是在上升沿采样,所以能够断定是CPOL=0,CPHA=0,或许CPOL=1,CPHA=1的形式,可是至所以哪种形式。

按理来说,接下来应该再去确认SCLK闲暇时分是高电平仍是低电平,用以确认CPOL是0仍是1,可是datasheet中没有说到这点。

所以,此处,现在不太确认,是两种形式都支撑,仍是需求额外找依据却确认CPOL是0仍是1.

(2)可装备的,由软件自己设定

从设备也是一个SPI操控器,4种形式都支撑,此刻只需自己设置为某种形式即可。

然后知道了从设备的形式后,再去将SPI主设备的形式,设置为和从设备形式相同,即可。

关于怎么装备SPI的CPOL和CPHA的话,不多细说,大都都是直接去写对应的SPI操控器中对应寄存器中的CPOL和CPHA那两位,写0或写1即可。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/258176.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部