接下来看SPI接收器数据寄存器RXDAT,下表是它的全部位结构,其地址分别为0x40058014(SPI0)、0x4005C014(SPI1)。

(1)第0到15位(RXDAT)为接收器数据,它包含接收的下一个数据,使用的位数由TXCTL/TXDATCTL中的LEN设置。
(2)第16位(RXSSEL0_N)为接收的从机选择位,此字段允许SSEL0引脚状态与接收数据一同保存,数值反映主机和从机操作的SSEL0引脚,0表示从机选择有效,每一个从机选择引脚的实际极性通过CFG中的相应SPOL位配置。
(3)第17位(RXSSEL1_N)为接收的从机选择位,此字段允许SSEL1引脚状态与接收数据一同保存,数值反映主机和从机操作的SSEL1引脚,0表示从机选择有效,每一个从机选择引脚的实际极性通过CFG中的相应SPOL位配置。
(4)第18位(RXSSEL2_N)为接收的从机选择位,此字段允许SSEL2引脚状态与接收数据一同保存,数值反映主机和从机操作的SSEL2引脚,0表示从机选择有效,每一个从机选择引脚的实际极性通过CFG中的相应SPOL位配置。
(5)第19位(RXSSEL3_N)为接收的从机选择位,此字段允许SSEL3引脚状态与接收数据一同保存,数值反映主机和从机操作的SSEL3引脚,0表示从机选择有效,每一个从机选择引脚的实际极性通过CFG中的相应SPOL位配置。
(6)第20位(SOT)传输标志开始位,如果是SSEL从无效到有效之后的第一个数据(比如之前所有传输均已结束),则置1,若传输长度大于16位,则此信息可用来识别第一条数据。
(7)第21到31位为保留位,写入时只能写0。

接下来看SPI发送器数据和控制寄存器TXDATCTL,下表是它的全部位结构,其地址分别为0x40058018 (SPI0)、0x4005C018 (SPI1)。

(1)第0到15位(TXDAT)为发送数据,该字段提供待发送数据的1至16位。
(2)第16位(TXSSEL0_N)为发送从机选择位,主机模式下该字段使SSEL0生效,引脚输出默认为低电平有效,SSEL0引脚的有效状态由CFG寄存器中的位配置,值为0时表示SSEL0已生效,值为1时表示SSEL0未生效。
(3)第17位(TXSSEL1_N)为发送从机选择位,主机模式下该字段使SSEL1生效,引脚输出默认为低电平有效,SSEL1引脚的有效状态由CFG寄存器中的位配置,值为0时表示SSEL1已生效,值为1时表示SSEL1未生效。
(4)第18位(TXSSEL2_N)为发送从机选择位,主机模式下该字段使SSEL2生效,引脚输出默认为低电平有效,SSEL2引脚的有效状态由CFG寄存器中的位配置,值为0时表示SSEL2已生效,值为1时表示SSEL2未生效。
(5)第19位(TXSSEL3_N)为发送从机选择位,主机模式下该字段使SSEL3生效,引脚输出默认为低电平有效,SSEL3引脚的有效状态由CFG寄存器中的位配置,值为0时表示SSEL3已生效,值为1时表示SSEL3未生效。
(6)第20位(EOT)为传输结束,已生效的SSEL将在传输结束时解除生效并至少保持一段时间,这段时间由DLY寄存器中的Transfer_delay值确定。值为0时SSEL未解除生效,此条数据不视为传输结束,SSEL不会在该数据结束时解除生效。值为1时SSEL已解除生效。此条数据视为传输结束。SSEL会在该数据结束时解除生效。
(7)第21位(EOF)为帧结束,两帧之间可以插入延迟,该延迟由DLY寄存器中的FRAME_DELAY值定义。如果FRAME_DELAY值 = 0,则帧结束可能没有特殊意义。该控制可作为支持 帧长度超过16位的一部分。值为0时表示数据未EOF,此条传输数据不视为帧结束。值为1时表示数据EOF,此条数据视为帧结束,导致FRAME_DELAY时间在后续数据发送之前被插入。
(8)第22位(RXIGNORE)为接收忽略,允许数据使用SPI发送时,无需从接收器读取不需要的数据。设置此位可以简化发送过程,并可与DMA一同使用。值为0时表示读取已接收数据。必须读取已接收数据,才能允许传输过程。从机模式下,如果已接收数据未能在接收到新数据前读取,则发生溢出错误。值为1时表示忽略已接收数据。已接收数据被忽略,允许在不读取不需要的已接收数据情况下进行传输。不产生接收器标志。
(9)第23位为保留位,写入时只能写0。
(10)第24到27位(LEN)为数据长度,指定1到16位数据长度,通过多个相继传输可支持16位以上的传输长度,值从0x0到0xF,表示数据传输长度分别1到16位。
(11)第28到31位为保留位,写入时只能写0。

接下来是SPI发送器数据寄存器TXDAT,下表是它的全部位结构,其地址分别为0x4005801C(SPI0)、0x4005C01C(SPI1)。

(1)第0到15位(DATA)为发送数据,该字段提供待发送数据的4至16位。
(2)第16到31位为保留位,写入时只能写0。

接下来看SPI发送器控制寄存器TXCTL,下表是它的全部位结构,其地址分别为0x40058020(SPI0)、0x4005C020(SPI1)。

(1)第0到15位为保留位,写入时只能写0。
(2)第16位(TXSSEL0_N)为发送从机选择0。
(3)第17位(TXSSEL1_N)为发送从机选择1。
(4)第18位(TXSSEL2_N)为发送从机选择2。
(5)第19位(TXSSEL3_N)为发送从机选择3。
(6)第20位(EOT)为传输结束。
(7)第21位(EOF)为帧结束。
(8)第22位(RXIGNORE)为接收忽略。
(9)第23位为保留位,写入时只能写0。
(10)第24到27位(LEN)为数据传输长度。
(11)第28到31位为保留位,写入时只能写0。

接下来看SPI分频器寄存器DIV,下表是它的全部位结构,其地址分别为0x40058024(SPI0)、0x4005C024(SPI1)。

(1)第0到15位(DIVVAL)为速率分频器值,指定SPI的PCLK分频值,从而在主机模式下产生SPI时钟速率。
DIVVAL为-1编码,以便PCLK/1数值为0,PCLK/2数值为1,直至PCLK/65536中的最大可能分频值0xFFFF。
(2)第16到31位为保留位,写入时只能写0。

最后看SPI中断状态寄存器INTSTAT,下表是它的全部位结构,其地址分别为0x40058028(SPI0)、0x4005C028(SPI1)。

(1)第0位(RXRDY)为接收器就绪标志。
(2)第1位(TXRDY)为发送器就绪标志。
(3)第2位(RXOV)为接收器溢出中断标志。
(4)第3位(TXUR)为发送器下溢中断标志。
(5)第4位(SSA)为从机选择生效。
(6)第5位(SSD)为从机选择解除生效。
(7)第6到31位为保留位,写入时只能写0。

至此,所有SPI接口用到的寄存器全部介绍完毕,后面将会以一个实例来具体说明SPI接口的应用。

--待续--

SPI接口(续二)的更多相关文章

  1. 自定义AXI总线形式SPI接口IP核,点亮OLED

    一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做 ...

  2. SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)

    SPI接口扫盲   douqingl@gmail.com   为何要写这篇文档?百度上找出来的SPI接口中文描述都说的太过简略,没有一篇文档能够详尽的将SPI介绍清楚的.wikipedia英文版[注释 ...

  3. flash读写学习笔记与spi接口及简单测试验证(三)

    FPGA中的视频图像资源,以及想要永久存储的程序都是要存储在flash中,flash是FPGA一个不可缺少的部分,flash的种类有很多,根据winbond公司的128Mbit Qual SPI接口的 ...

  4. linux驱动基础系列--Linux下Spi接口Wifi驱动分析

    前言 本文纯粹的纸上谈兵,我并未在实际开发过程中遇到需要编写或调试这类驱动的时候,本文仅仅是根据源码分析后的记录!基于内核版本:2.6.35.6 .主要是想对spi接口的wifi驱动框架有一个整体的把 ...

  5. SPI接口的ETH芯片(ENC28J60/W5500)

    一 ENC28J60:SPI接口.中断.复位.LED指示.可参看野火相应教程.简单的在单片机中实现网页服务器是参考AVRNET项目,复杂的是用LWIP协议栈.telnet用于用PC的TELNET可以远 ...

  6. SPI接口在LCD上的应用

    ​小分辨率的LCD,比如QQVGA,QCIF,QVGA等,广泛应用于功能手机和穿戴设备(比如手表)上.这类小分辨率的LCD,除了支持并行接口(比如i80),一般也会支持串行接口.在实际产品中广泛运用的 ...

  7. 嵌入式物联网之SPI接口原理与配置

    本实验采用W25Q64芯片 W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb.该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件.W25Q64将8M字节的容量分为 ...

  8. 国产CPLD(AGM1280)试用记录——做个SPI接口的任意波形DDS [原创www.cnblogs.com/helesheng]

    我之前用过的CPLD有Altera公司的MAX和MAX-II系列,主要有两个优点:1.程序存储在片上Flash,上电即行,保密性高.2.CPLD器件规模小,成本和功耗低,时序不收敛情况也不容易出现.缺 ...

  9. spi接口的ds1302时钟芯片控制在lcd1602上显示

    spi接口的ds1302时钟芯片控制在lcd1602上显示                                                                        ...

  10. CC3000 SPI接口编程介绍

    CC3000 SPI 操作: CC3000的SPI 是基于五根线CLCK,CSn,IRQ,MISO,MOSI:通信模式如下图: CLCK:时钟频率0-26M从主机到从机,提供SPI接口时钟 CSn:低 ...

随机推荐

  1. 窗口退出&初始化

    class Test(QtWidgets.QMainWindow, Ui_dlg): def closeEvent(self, e): #to do super().closeEvent(e) def ...

  2. 记一次SpringBoot整合WebSocket 找不到ServerEndpointExporter类的问题

    package com.mengxiangnongfu.cms.framework.configure; import org.springframework.context.annotation.B ...

  3. 肖sir____Apsara Clouder云计算专项技能认证题目收集

    Apsara Clouder云计算专项技能认证: Apsara Clouder云计算专项技能认证:云服务器ECS入门[认证考试真题分享](答案仅供参考) 单选13道题 1.下列哪一个不是重置ECS密码 ...

  4. 导出PDF 空白赋值备份

    后台代码 //出货清单 @RequestMapping(params="getBusinessOutDetail") public void getBusinessOutDetai ...

  5. FRP 反向代理渗透

    前言 之前在一个项目中遇到了一个渗透环境,只能使用工具代理远程访问内网,于是便接触了FRP这款内网穿透工具,通过内网反向代理进行远程渗透测试.这篇文章就简单介绍如何实现FRP反向代理渗透,作为个人笔记 ...

  6. 初学银河麒麟linux笔记 第一章 虚拟机、麒麟系统、QT安装与运行

    由于手头一个项目的QT软件开发需要在银河麒麟系统上运行,借此机会开始从头学习linux系统 首先下载虚拟机VMware 16和麒麟系统iso,这里参考的 https://blog.51cto.com/ ...

  7. QT控件使用--QPlainTextEdit

    QPlainTextEdit是一个多行文本编辑器,用于显示和编辑多行简单文本. 一些常用的函数有: appendPlainText(const QString) 向 PlainTextEdit 组件添 ...

  8. [OC] 按照 元素 中的某个属性 来对数组进行排序

    数组需要是 NSMutableArray 类型: //ascending - YES:升序,1,2,3 NO:降序:3,2,1 NSArray *sortDescriptors = [NSArray ...

  9. vue.cli的安装配置

    关于旧版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli. 如果你已经全局安装了旧版本的 vue-cli(1.x 或 2.x),你需要先通过 npm uninstall vue ...

  10. Timer VS DispatcherTimer

    Timer是在ThreadPool线程池中执行的,每当计时器到期时,就会创建一个线程来执行事件处理程序.这种实现方式可能会导致一些问题,例如计时器事件处理程序可能会与主线程竞争资源,从而导致性能问题. ...