DSP学习笔记之SPI

news/2024/9/28 19:22:41

DSP学习笔记之SPI

SPI介绍

SPI 的全称是"Serial Peripheral Interface",意为串行外围接口。SPI 是一种高速的,全双工,同步的通信总线,SPI采用主从方式工作,一般有一个主设备和一个或多个从设备; SPI需要至少4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选)。

SPI分为硬件SPI和软件SPI,由于软件SPI的响应速度没有硬件SPI快,在日常使用中,为追求更高的响应速度,会使用硬件SPI。

image-20240511111216368

寻址方式

image-20240511111322795

当有多个 SPI 从设备与 SPI 主机相连时,设备的其它信号线 SCK、 MOSI及 MISO 同时并联到相同的 SPI 总线上,即无论有多少个从设备,都共同只使用这 3 条总线;而每个从设备都有独立的这一条 CS 信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。把该从设备的 CS 信号线设置为低电平,该从设备即被选中,即片选有效。

通信过程

image-20240511111508171

SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑‘1’,低电平表示逻辑‘0’;一个字节传送完成后无需应答即可开始下一个字节的传送; SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送;

相关寄存器

SPI 配置控制寄存器(SPICCR)

SPI 操作控制寄存器(SPICTL)

SPI 波特率设置寄存器(SPIBRR)

SPI 串行接收缓冲寄存器(SPIRXBUF)

SPI 串行发送缓冲寄存器(SPITXBUF)

SPI FIFO 寄存器(SPIFFTX、SPIFFRX、SPIFFCT)

代码分析

SPI 初始化函数

void SPIA_Init(void)
{EALLOW;SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1;   // SPI-AEDIS;InitSpiaGpio();// Initialize SPI FIFO registersSpiaRegs.SPIFFTX.all=0xE040;  //使能FIFO,清除发送中断SpiaRegs.SPIFFRX.all=0x204f;  //使能FIFO,接受16级深度SpiaRegs.SPIFFCT.all=0x0;   //清除FIFO计数器SpiaRegs.SPICCR.all =0x000F;	             // 复位SPI,上升沿发送,下降沿接收,16位数据SpiaRegs.SPICTL.all =0x0006;    		     // 无相位延时,主模式SpiaRegs.SPIBRR =0x007F;                    //确定SPICLKSpiaRegs.SPICCR.all =0x00DF;		         // 自测模式并从复位状态释放SpiaRegs.SPIPRI.bit.FREE = 1;                // 自由启动}

SPI 数据收发函数

Uint16 SPIA_SendReciveData(Uint16 dat)
{// Transmit dataSpiaRegs.SPITXBUF=dat;// Wait until data is receivedwhile(SpiaRegs.SPIFFRX.bit.RXFFST !=1);return SpiaRegs.SPIRXBUF;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/30197.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

python用魔塔大模型生成国画

模型地址 https://www.modelscope.cn/models/langboat/Guohua-Diffusion/summary 新建一个main.py from modelscope.utils.constant import Tasks from modelscope.pipelines import pipeline import cv2pipe = pipeline(task=Tasks.text_to_image_synthesis, model=langboat/G…

振弦采集仪在岩土工程监测中的数据处理与结果展示

振弦采集仪在岩土工程监测中的数据处理与结果展示 河北稳控科技振弦采集仪是岩土工程监测中常用的一种设备,用于采集地下土体振动信号,通过对数据的处理与结果的展示,可以有效地评估土体的动力特性和工程的稳定性。 振弦采集仪通过安装在土体中的振弦传感器,可以对土体的振…

BOSHIDA AC/DC电源模块的节能技术与环保优势

BOSHIDA AC/DC电源模块的节能技术与环保优势 AC/DC电源模块是一种广泛应用于各种电子设备中的电源转换器。随着环保意识的增强,节能技术成为了设计和生产这些模块的关键考虑因素。本文将介绍AC/DC电源模块的节能技术以及它们所带来的环保优势。 首先,AC/DC电源模块的节能技术…

ELL-8051-LIB - 面向8051的高效低封装函数库+KLite - 简洁易用的嵌入式操作系统内核

1、Arm-2D - 基于Cortex-M的2D图形加速库 ARM官方出品的2D图形加速库,在Cortex-M55系统频率 8MHz 下就可以实现30fps的渲染(6图层。320x240,rgb565)。项目主页: https://github.com/ARM-software/EndpointAI/tree/master/Kernels/Research/Arm-2DArm-2D 库特性包括但不限于:…

利用pearcmd实现裸文件包含

docker 环境的靶机下,有没有什么更加普适性的方法来实现文件包含+命令执行?利用pearcmd实现裸文件包含 在 ctf 中,常常有这样一类题: 题目很简单,一般围绕一个 include 函数展开。 例: ctfshow 元旦水友赛 easy_include这类题目没有提供文件上传点,因此不能使用常规方法…

怎么把excel里已经变成科学记数法的数字恢复

从数据库导出的数据经常有id字段,包含一长串的数字,导出为excel或者csv格式后打开,id字段经常被转换成科学技术法了,不方便查看。 如果想把它转变为通常的显示方法,在单元格上点击鼠标右键,点击“设置单元格格式”。 在打开的窗口中,切换到“数字”选项卡,点击“自定义…

架构每日一学 4:成为首席架构师,你必须学会顺应人性

本文首发于公众平台:腐烂的橘子架构师生存法则之二:架构活动需要顺应人性 程序员入行的第一天起就进入了一个机器的世界。在别人的眼中,程序员平时很少说话,更多的时间在和电脑打交道。 程序员工作时间久了大脑会被格式化,就像一个一个方格。它有一定好处,就是你在写代码…

C# 实现Ping远程主机功能

C#实现Ping远程主机功能。1、引用nuget包 Wesky.Net.OpenTools OpenTools是一个用于提高开发效率的开源工具库。该项目为个人开源项目,采用MIT开源协议,永不更改协议。开源项目地址: Gitee:https://gitee.com/dreamer_j/open-tools.gitGithub:https://github.com/LittleLitt…