LPC824-SPI接口

发布者:blq0681最新更新时间:2023-10-03 来源: elecfans关键字:LPC824  SPI接口  串行外设接口 手机看文章 扫描二维码
随时随地手机看文章

串行外设接口(Serial Peripheral Interface)是一种同步外设接口,它可以使单片机与各种外围设备以串行方式进行通信以交换信息。SPI最早是Motorola公司提出的全双工三线同步串行外围接口,采用主从模式(Master—Slave)架构,支持一个或多个Slave设备,由于其简单实用、性能优异,因此许多厂家的设备都支持该接口,广泛应用于单片机和外设模块之间的连接。

SPI接口只需4条线:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输人数据线(MOSI)和低电平有效的从机选择线(SS)。
(1)MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
(2)MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
(3)SCK:串口时钟,作为主设备的输出,从设备的输入。
(4)SS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为片选引脚,让主设备可以单独地与特定从设备通信,避免数据线上的冲突。

SPI是一个环形总线结构,MOSI引脚相互连接,MISO引脚相互连接,数据在主和从之间串行地传输(MSB位在前),具体如下图所示。

SPI有主从两种工作模式,在主模式下,SPI为其他节点的CLK引脚提供串行时钟,数据从MOSI引脚输出,从MISO引脚输入。在从模式下,数据从MISO引脚移出并由MOSI引脚移入,CLK引脚作为串行移位时钟的输入。

LPC824片内设计有SPI接口,具体的引脚取决于开关矩阵SWM的配置。
LPC824的SPI接口具有以下特点:
•直接支持1至16位的数据发送。软件支持更大的帧。
•主机和从机操作。
•无需读取输入数据即可将数据发送至从机,这在设置SPI存储器的时候很有用。
•控制信息还可与数据一同写入,这样便实现了极为丰富的操作,包括任意长度的帧。
•最多4个从机选择输入/输出,极性可选且使用灵活。
•支持DMA传输,SPIn发送与接收功能可配合系统DMA控制器使用。

下图是SPI接口的功能框图。

在LPC824中,一共有两组SPI接口,分别为SIP0和SPI1。其中SPI0组接口有7根引脚(SCK、MOSI、MISO及SSEL0~3),SPI1组接口有5根引脚(SCK、MOSI、MISO及SSEL0~1)。在默认状态下,这些引脚并没有被分配到芯片的物理引脚上,所以在使用SPI功能之前,需要先配置SWM矩阵,以把这些引脚部分或全部连接到物理引脚上。下面给出了这些引脚各自的SWM配置寄存器。

从上表中可以看出,两个SPI接口的共12个引脚可以被分配到任意一个物理引脚上,涉及的配置寄存器为PINASSIGN3~PINASSIGN6共4个,接下来就分别给出这4个寄存的具体结构。

下表给出的是引脚分配寄存器PINASSIGN3的全部位结构,其字节地址为0x4000C00C。

(1)第0到7位为串口USART2中的请求发送端RTS分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(2)第8到15位为串口USART2中的清除发送端CTS分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(3)第16到23位为串口USART2中的同步时钟端SCLK分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(4)第24到31位为SPI0接口中的时钟端SCK分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。

下表给出的是引脚分配寄存器PINASSIGN4的全部位结构,其字节地址为0x4000C010。

(1)第0到7位为SPI0接口中的主出从入端MOSI分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(2)第8到15位为SPI0接口中的主入从出端MISO分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(3)第16到23位为SPI0接口中的片选端SSEL0分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(4)第24到31位为SPI0接口中的片选端SSEL1分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。

下表给出的是引脚分配寄存器PINASSIGN5的全部位结构,其字节地址为0x4000C014。

(1)第0到7位为SPI0接口中的片选端SSEL2分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(2)第8到15位为SPI0接口中的片选端SSEL3分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(3)第16到23位为SPI1接口中的时钟端SCK分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(4)第24到31位为SPI1接口中的主出从入端MOSI分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。

下表给出的是引脚分配寄存器PINASSIGN6的全部位结构,其字节地址为0x4000C018。

(1)第0到7位为SPI1接口中的主入从出端MISO分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(2)第8到15位为SPI1接口中的片选端SSEL0分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(3)第16到23位为SPI1接口中的片选端SSEL1分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。
(4)第24到31位为多功能定时/计数器SCT的计数输入端PIN0分配引脚,可选范围从PIO0_0到PIO0_28一共29根引脚,默认为未分配状态。

下表给出了SPI接口用到的全部寄存器描述。

 

由于LPC824的SPI接口功能很完善,所以涉及到的寄存器较多,它一共使用了11个寄存器来进行控制,应用上有些复杂。下面给出了上述寄存器对应的结构体定义。

typedef struct {
__IO uint32_t CFG;
__IO uint32_t DLY;
__IO uint32_t STAT;
__IO uint32_t INTENSET;
__O uint32_t INTENCLR;
__I uint32_t RXDAT;
__IO uint32_t TXDATCTL;
__IO uint32_t TXDAT;
__IO uint32_t TXCTL;
__IO uint32_t DIV;
__I uint32_t INTSTAT;
} LPC_SPI0_Type;

为了将2个SPI的基址指针强制转换为上述结构体,还要加上下面的定义。

#define LPC_SPI0_BASE 0x40058000UL
#define LPC_SPI1_BASE 0x4005C000UL
#define LPC_SPI0 ((LPC_SPI0_Type *) LPC_SPI0_BASE)
#define LPC_SPI1 ((LPC_SPI0_Type *) LPC_SPI1_BASE)

SPI接口涉及到的寄存器较多,后面会对它们进行具体分析。

--待续--


关键字:LPC824  SPI接口  串行外设接口 引用地址:LPC824-SPI接口

上一篇:LPC824-SPI接口(续一)
下一篇:LPC824-串口USART(续二)

推荐阅读最新更新时间:2024-02-25 07:09

LPC824-I2C接口
I2C是一种多向控制总线,它是由PHILIPS公司在二十世纪八十年代初设计出来的,利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能,是一种高性能的串行总线。I2C总线只用两根双向传输线就可以将128个不同的设备互连到一起。这两根线一根是时钟线SCL,一根是数据线SDA。外部硬件只需要接两个上拉电阻,每根线上一个。所有连接到总线上的设备都有自己的地址。 I2C总线上传输的数据是通过在时钟线(SCL)高电平期间所对应的数据线(SDA)上的电平来判别的。在SCL线拉高期间对应到SDA线的电平,如果为高则这位数据为1,反之则为0。只有在SCL线为低电平期间,SDA线才可以更新下一位数据。 除了传送的数据以外,I2C总线在
[单片机]
LPC824-I2C<font color='red'>接口</font>
一文读懂SPI串行外设接口
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。正是由于有了通信方式,我们才能够通过芯片控制各种各样的外围器件,实现很多“不可思议”的现代科技。这里将以SPI为题,从编程角度来介绍SPI总线。下面就随网络通信小编一起来了解一下相关内容吧。 1、SPI协议简介 图 1 SPI接口 SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。SPI是一种高速的,全双工,同步的通信总线,由于其简单易用的特性,现在很多的nor flash和nandflash芯片集成
[网络通信]
基于AVR单片机的SPI接口的25C256
基于AVR单片机的SPI接口的25C256(EEPROM)的驱动程序 /**********************************硬件宏定义***********************************/ #define SelectMemory1() (PORTA&=~0X01) #define DeselectMemory1() (PORTA|=0X01) #define ClrHoldMemory1() (PORTA&=~(0X01 2)) #define SetHoldMemory1() (PORTA|=(0X01 2)) /***********************************初始化SP
[单片机]
LPC824-多速率定时器MRT
在LPC824中,除了系统定时器SysTick以外,还拥有4个其他定时器,分别是多速率定时器MRT,自唤醒定时器WKT,SCTimer/PWM和窗口看门狗定时器。这4个定时器都位于APB设备区,与SysTick不在同一区域。虽然都是定时器,但它们却有各自不同的特点及用途。下面就先来讨论一下多速率定时器MRT。 多速率定时器MRT是一个31位的中断定时器,拥有4个通道独立,具有重复、总线停止和单次三种中断模式,具有从单独设置的值开始递减计数的功能 。 MRT不具备可配置的引脚。 多速率定时器MRT提供四通道重复中断定时器,每个通道均可通过独立的时间间隔编程,每个通道均独立于其他通道工作,各定时器的模式分别在定时器控制寄存器中设置
[单片机]
LPC824-多速率定时器MRT
基于SPI接口的温度测量系统
在当今农业和工业生产过程中,温度作为一个基本物理量起着越来越重要的作用。随着科技的发展,人们对温度测量的要求是越来越高,对温度测量的范围也越来越广。因此,温度测量和控制技术具有一定的必要性。 1 硬件电路设计 系统设计硬件电路分为:控制电路、键盘电路、传感器电路、显示电路和报警电路。AVR单片机接收到TC72温度传感器检测到的温度信号后,经过控制运算给出控制信号,通过LCD显示检测温度的大小;矩阵键盘可以设定温度上下限值,当温度超出设定范围时,报警电路会发出警报,达到温度测量和控制的目的。SPI温控系统的工作原理如图1所示。 1.1 控制电路模块 AVR单片机由Atmel公司利用Flash新技术,研制的RISC
[单片机]
基于<font color='red'>SPI接口</font>的温度测量系统
STM32微控制器SPI接口NSS管理分析
看了很多关于NSS片选信号配置的资料,感觉没有说清楚的,自己写了一些个人的看法,希望对大家有用。 首先看我们看下NSS的结构图,如下。 从上图中我们可以看出左边的NSS代表硬件的引脚,右边的internalnss是内部NSS,微处理器根据这个内部的NSS来确定不同的操作。 和NSS相关的寄存器标志位主要是SSM、SSI以及SSOE。SSM用来配置是硬件模式还是软件模式。SSI用来确定在软件模式下NSS输入的极性,SSOE用来决定是否允许内部NSS信号送出的NSS引脚上。 对NSS的管理有硬件模式和软件模式之分,所谓硬件模式(SSM=0,二选一处0端有效),就是内部NSS的信号来自于外部NSS引脚,是确确实实的硬东西(引脚)
[单片机]
STM32微控制器<font color='red'>SPI接口</font>NSS管理分析
STM32的SPI接口
  STM32的SPI接口支持SPI协议和I2S音频协议,默认为SPI,可通过软件切换为I2S。   SPI接口:   MISO 主设备输入/从设备输出   MOSI 主设备输出/从设备输入   SCK 串口时钟   NSS 从设备选择   初始化例程如下: void SPI_Init(void) {   SPI_InitTypeDef SPI_InitStructure;   GPIO_InitTypeDef GPIO_InitStructure;   RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE );
[单片机]

推荐帖子

避免汽车USB电路电池短路故障措施(转)
说到互联驾驶信息娱乐系统,不得不提USB。如今,USB接口作为信息娱乐架构的基本要素,逐渐接受更严格的保护要求,其中需要防止组装、制造或维护过程中车辆用蓄电池发生短路。TI今天要为工程们贡献的秘籍就是关于如何防止汽车USB电路电池短路故障!本系列将由两部分组成,在第一部分中,将举例说明,防止USB电路电池短路故障的最佳途径。而在第二部分(下期微信)中,将延伸说明优化您的汽车USB防电池短路设计的最佳途径。TI标准性能模拟和逻辑高级副总裁NielsAnders
qwqwqw2088 模拟与混合信号
DXPsp2的补丁哪有下载,我只P2P限制,求连
同题目DXPsp2的补丁哪有下载,我只P2P限制,求连
liangqiubin PCB设计
《深度强化学习实战》第1章读书笔记与理解
前面对整书有了一个大致了解,接下来就进入到各章节的阅读。阅读遵从理解,归纳总结,举一反三,灵活运用。尽信书则不如无书,也会根据实践经验做出必要取舍去学习。第一章讲的是强化学习概念。深度强化学习(DRL)是机器学习的一个子领域,它将深度学习模型(神经网络)应用于强化学习任务中。这个概念接着讲了比较经典的例子。参数集经过模型训练生成类别标签,经过参数调整,使函数在正确分类任务上表现得越来越好。经过训练的模型,用任务数据输入,进行结果进行预测、检测。这里面也涉及到归一化成概率问
dirty 嵌入式系统
做很3天出来的例程红龙429-GSM模块数据收发实验
该例程为使用SIM800通过GSM收发数据的演示程序实验现象:程序运行后,设置好路由的DMZ,打开网络调试助手,设置端口号为8088,点击连接,按下开发板的S2,网络调试助手会显示从SIM800发出的数据:welcometowww.openmcu.com---fromsim800,同时,在网络调试助手的发送输入栏敲入要发送的数据,在串口调试助手也可以看到SIM800接收
旺宝电子 NXP MCU
利用直流数字万用表头(5位,最大输入电压10V)设计一个用于测量电阻、电感的测试仪。
(1)测量电阻范围:10~1KΩ。(2)测量电感范围:100H~10mH。(3)测量的电阻、电感数值可直接在直流数字电压表上显示。(4)具有自动识别电阻、电感元件的功能。利用直流数字万用表头(5位,最大输入电压10V)设计一个用于测量电阻、电感的测试仪。精度是关键,没有给出要求。测量电阻实现相对容易,准确测量电感比较难,不同频率、不同B值、不同温度条件下是不同的
15769550549 模拟与混合信号
【Luckfox幸狐 RV1106 Linux 开发板】3-PWM测试__控制舵机任意旋转
前言:本次测评的是测评板子的PWM输出功能。有兴趣的可以结合我以前另外一个Linux板卡的测评一起来看,大家应该可以找到些相同之处。我之前两期Linux板卡的PWM测评:【STM32MP135F-DK】3-舵机驱动与pwm脉冲宽度调制功能测试http://bbs.eeworld.com.cn/thread-1265432-1-1.html【STM32MP135F-DK】4-舵机应用代码编写分享http://bbs.eeworld.com.cn/thread-12660
qiao--- 国产芯片交流
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved