历史上的今天
今天是:2024年08月23日(星期五)
2021年08月23日 | LPC11U35 SSP/SPI学习笔记
2021-08-23 来源:eefocus
SSP (synchronous Seril Port)同步串行端口控制器,可支持SPI、TI和Microwire协议,一条总线允许有多个从机,但某一个时刻只允许有一个主机和一个从机进行通信。多应用于EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间(而I2C多用于同一单片机不同芯片之间的短距离通信)。
SPI支持全双工通信,而I2C仅支持半双工,Uart也支持全双工通信。
SPI通信是数据交换的过程,数据通过移位寄存器进行交换。
主机发送时,将一位数据写入TxFIFO移入移位寄存器,数据通过MOSI移出主机,从机通过MOSI移入从机,从机同时会从移位寄存器中移出一位数据到主机,如果是只写操作,主机则可以忽略读取到的数据,通过Dummy = LPC_SSP1->DR假装读取进行忽略。
主机接收数据时,主机首先要发送一个指令启动从机发送,如高电平(0xFF),从机接收到后发送数据到移位寄存器中。每次接收主机都需要发送数据触发从机发送数据。

SPI硬件有4根信号线:SCK(串行时钟线)、CS(片选信号)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)
其中,CS通过拉低来选择从机设备,数据在SCK时钟的边沿跳变时进行数据采样和数据的读取和发送。具体规则由CPOL和CPHA控制。
CPOL:1——空闲状态时SCK为高电平 0——空闲状态时SCK为低电平
CPHA:1——数据在第一个跳变沿采样 0——数据在第二个跳变沿采样
故共有4种组合:
CPOL=0,CPHA=0,数据在第一个上升沿时采样,第一个下降沿读取/发送
CPOL=0,CPHA=1,数据在下降沿时采样,上升沿读取/发送
CPOL=1,CPHA=0,数据在第一个下降沿时采样,第一个上升沿读取/发送
CPOL=1,CPHA=1,数据在上升沿采样,下降沿读取/发送
SPI中断:
ROR ---- Rx FIFO状态为满时另外一帧被完全接收了,写入ICR清除中断
RT ---- Rx FIFO不为空且超过超时周期没有被读取,写入ICR清除中断
RX ---- Rx FIFO为至少半满状态,读取正确的FIFO可清除中断
TX ---- Tx FIFO为至少半空状态,写入正确的FIFO可清除中断
SPI Clock:位频率=PCLK/(CPSDVSR × [SCR+1])
在这章接触到一个新的函数和变量——Dummy
Dummy函数是一个空函数,函数体内没有语句,常常用于后期扩充功能,执行Dummy();时,什么工作也不做;
同样的,Dummy变量也有相似的意思,既是没有意义的一个变量或者空变量。在SPI的配置过程中,使能SPI前,可以将Rx FIFO中的数据清除干净,就可以采用Dummy = LPC_SSPx->DR的方式清空。
史海拾趣
|
无法找到ntifs.h 头文件,搞了两天了。都吐了高手帮忙啊 开发环境IFS2003+VS2008+DDKWIZARD 开发普通的驱动都很好。可是有一天我想尝试一下文件驱动: 我把sfilter里面的代码复制到我自己建的一个驱动项目里面,调好了编译环境,一编译找不到ntifs.h文件,于是我就把Include的路径改了一下,结果这下好 ...… 查看全部问答> |
|
ERROR: [U1_VM2] \'1.8V VCore\' (2.73V) is outside specified range (1.65V-1.95V)如何配置才能通过仿真… 查看全部问答> |
|
DX帮我看一下,为什么我的UART1不产生接收中断啊!! 初始化如下: ////////////////////////////////////////// ///串口1初始化 void Uart1Init(void) { //使能所有要用APB2的外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | ...… 查看全部问答> |
|
我是电子专业,学习嵌入式,买了一个神舟一号的板子,感觉不是太好用,也不知道怎么用 mini2440,和神舟系列(神舟三号四号的)的是不是一一样的,mini2440相比之下有什么有点,现在在学ucos,下学期学Linux,买个什么板子最好呢,… 查看全部问答> |
|
我用的例子在开发板里下载到FLASH里可以运行,下载到我自己的板子里不能运行,但是在自己的板子里可以仿真,VDD3VFL也接了3.3V,忙了好几天,望各位碰到过类似问题的解答下,谢谢了… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:32 编辑 题目要求制作一个RLC 串联谐振电路作为被测网络, 要求被测网络通带中心频率为20MHz,误差的绝对值≤5%;有载品质因数为4,误差的绝对值≤5%;有载最大电压增益≥ -1dB; 这个有载最大电压增益≥ ...… 查看全部问答> |
|
为什么MSP430Ware的Driver Liberary下的“MSP430F5xx_6xx”系列里,在导入“FLASHCTL”的example project时,是空的!! 其它的example project都能正常导入! … 查看全部问答> |
|
STM32我定时器频率捕获90-120K范围,我测试100K频率误差418HZ,怎么降低误差 STM32我定时器频率捕获90-120K范围,我测试100K频率误差418HZ,怎么降低误差… 查看全部问答> |




