SPI配置

news/2024/11/20 19:44:57/

I/O配置
主输出、从输入(MOSI)
主出从入(MOSI )引脚是主器件的输出和从器件的输入,用于主器件到从器件的串行数据传输。当SPI 配置为主器件时,该引脚为输出,当 SPI 配置为从器件时,该引脚为输入。数据传输时 MSB 在前。
主输入、从输出(MISO)
主入从出(MISO )引脚是从器件的输出和主器件的输入,用于从器件到主器件的串行数据传输。当SPI 配置为主器件时,该引脚为输入,当 SPI 配置为从器 件时,该引脚为输出。数据传输时 MSB 在前。
串行时钟(SCK)
串行时钟(SCK )引脚是主器件的输出和从器件的输入,用于同步主器件和从器件之间在 MOSI 和MISO 线上的串行数据传输。当 SPI 配置为主器件时,该引脚输出时钟,当 SPI 配置为从器件时,该引脚为输入。
从选择(SSN)
从选择(SSN )引脚用来控制从器件选中,如 图 16-2所示,当 SPI 配置为主器件时, SSN 引脚必须接高电平,当 SPI 配置为从器件时, SSN 引脚必须接 低电平。
SPI主从器件的连接如图 所示:
主从器件的MOSI 、 MISO 和 SCK 分别连在一起,主器件的 SSN 必须接高电平,从器件的 SSN 必须接低电平。主从器件通过 MOSI 、 MISO 连成一个环路,主器件输出时钟,数据传输时,主器件通过MOSI 输出数据,从器件通过 MISO 输出数据。一字节数据传输完毕,主从器件将交换 8 位移位寄存器数值。
在这里插入图片描述
数据传输配置
1、 进行数据传输前需先配置 SPCR.SPE 位和 SPCR.MSTR 位,以使能 SPI 和设置主从模式。
2、 配置 SPCR.CPHA 位和 SPCR.CPOL 位,以设置串行时钟相位和极性(主从器件需一致)。
3、 配置 SPCR1.SPR3 位和 SPCR.SPR[2:0] 位,以设置串行时钟波特率(若为从器件模式则不用设置,串行时钟速率由主器件决定)。
4、 需要时,配置中断,配置 IRCIE2.SPIIE,SPCR.SPIE 和 SPCR.SPIF 位。
5、 主器件模式下数 据传输前需先将从器件的 SSN 引脚拉低,主器件的 SSN 引脚必须保持高电平。主器件模式下 MCU 写 SPDR 寄存器的动作启动数据传输,中断标志 SPIF 置起完成数据传输。
6、 从器件模式处理较为特殊,当 CPHA=0 时,从器件的 SSN 引脚拉低启动数据传输,从器件的SSN 引脚拉高结束数据传输(即使在此之前 SPIF 中断已经产生),因为从器件不知道传输何时开始,当 SSN 引脚拉低后, MISO 引脚立即开始数据 MSB 的传输。
当CPH A=1 时,从器件在串行时钟的第一个沿启动数据传输,在 SPIF 置位后结束数据传输。

数据冲突
当SPITXBUF 数据尚未被读进移位寄存器,或者 SPIRXBUF 中的数据未被 CPU 读取时,对SPITXBUF/SPIRXBUF 寄存器的写操作会产生对应的冲突错误, SPIIF.TXCOL/SPIIF.RXCOL 位会置起,产生中断。导致冲突的写入数据将被忽略。数据冲突错误在主从模式下都会产生。
对SPITXBUF 的写 操作,由芯片内部的 Master 模块发起,包括 CPU 、 DMA 等等。对 SPIRXBUF的写操作,则由外部 SPI 器件发起。
当数据冲突发生时,SPITXBUF 和 SPIRXBUF 内原有数据不会被刷新,新写入的数据丢失。


http://www.ppmy.cn/news/63419.html

相关文章

「隐语小课」LDP和CDP在联邦学习中对于隐私性以及鲁棒性的作用

本次分享内容为NDSS收录的一篇文章:《Local and Central Differential Privacy for Robustness and Privacy in Federated Learning》。这篇论文主要分析了LDP和CDP在联邦学习中对于隐私性以及鲁棒性的作用。围绕这篇论文的分享将分为以下4个部分: 动机与…

让ChatGPT谈自己该不该停止发育(叫停GPT-5!)

3月29日消息 在未来生命研究所官网上 包括图灵奖得主约书亚本吉奥 特斯拉CEO a隆马斯克 苹果公司联合创始人史蒂夫 沃兹尼亚克 Divman高级研究科学家 扎卡里肯顿等在内的数千名 AI领域企业家 学者高管发出了一封提维 暂停大型人工智能研究公开信 这些AI专家们在信中强烈呼吁 所…

毫米波雷达系列 | 传统CFAR检测(均值类)

毫米波雷达系列 | 传统CFAR检测(均值类) 文章目录 毫米波雷达系列 | 传统CFAR检测(均值类)1.CA-CFAR算法2.SO-CFRA算法3.GO-CFAR算法4.仿真对比 CFAR检测器主要用于检测背景杂波环境中的雷达目标,常见的均值类CFAR检测…

pywinauto使用教程

这里写自定义目录标题 引入pycharm项目新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注…

车载以太网时间同步之EthTsync

车载以太网时间同步之EthTsync 前言 首先,请问大家几个小小问题,你清楚: 你知道EthTsync模块的主要作用是什么吗?EthTsync模块与其他AUTOSAR基础软件模块交互关系;Eth Tsync模块使用的时间同步协议是什么&#xff1f…

量子退火Python实战(3):投资组合优化(Portfolio) MathorCup2023特供PyQUBO教程

文章目录 前言一、什么是投资组合优化?二、投资组合优化建模1. 目标函数:回报2.约束函数:风险3.最终优化目标函数 三、基于PyQUBO实现1. 获取数据2. 数据处理3. 目标函数PyQUBO实现4. OpenJij实施优化 总结 前言 提示:包含pyQUBO…

压电雨量传感器工作原理介绍

传感器采用冲击测量原理对单个雨滴重量进行测算,进而计算降雨量。雨滴在降落过程中受到雨滴重量和空气阻力的作用,到达地面时速度为恒定速度,根据Pmv,测量冲击即可求出雨滴重量,进而得到持续降雨量。 1、功能特点 ◆全…

Python代码实现一个简单的猜数字游戏

以下是一个简单的猜数字游戏的Python代码: import random print("欢迎来到猜数字游戏!") print("我已经想好了一个1到100之间的数字。") number random.randint(1, 100) guess 0 tries 0 while guess ! number: guess int(i…