LPC824-SPI接口(续一)

发布时间:2023-05-24  

SPI接口共涉及到11个寄存器,下面就来对它们进行具体分析。

先来看SPI配置寄存器CFG,下表是它的全部位结构,其地址分别为0x40058000(SPI0),0x4005C000(SPI1)。

(1)第0位(ENABLE)为SPI使能位,值为0时禁用SPI接口,值为1时使能SPI接口,默认为禁止。
(2)第1位为保留位,写入时只能写0。
(3)第2位(MASTER)为主机模式选择位,值为0时是从机模式,此时SCK、MOSI和SSEL信号为输入,MISO为输出,值为1时是主机模式,此时SCK、MOSI和SSEL信号为输出,MISO为输入,默认为从机模式。
(4)第3位(LSBF)为LSB优先模式使能位,值为0时是标准模式,数据以标准MSB优先顺序发送和接收,值为1时是反转模式,数据以反转顺序发送和接收(LSB优先),默认为标准模式。
(5)第4位(CPHA)为时钟相位选择位,值为0时是更改模式,SPI在传输的第一个时钟转换时捕捉串行数据(此时时钟向休闲状态的反方向变动),数据在下一个边沿改变,值为1时是捕获模式,SPI在传输的第一个时钟转换时改变串行数据(此时时钟向休闲状态的反方向变动),在下一个边沿捕捉数据,默认为更改模式。
(6)第5位(CPOL)为时钟极性选择位,值为0时为低电平,即时钟休闲状态(两次传输之间)为低电平,值为1时为高电平,即时钟休闲状态(两次传输之间)为高电平,默认为低电平。
(7)第6位为保留位,写入时只能写0。
(8)第7位(LOOP)为环回模式使能位,环回模式仅适用于主机模式,它将发送和接收数据相连,支持简单的软件测试,值为0时禁止,值为1时使能,默认为禁止。
(9)第8位(SPOL0)为SSEL0极性选择位,值为0时选择低电平有效,值为1时选择高电平有效,默认为低电平有效。
(10)第9位(SPOL1)为SSEL1极性选择位,值为0时选择低电平有效,值为1时选择高电平有效,默认为低电平有效。
(11)第10位(SPOL2)为SSEL2极性选择位,值为0时选择低电平有效,值为1时选择高电平有效,默认为低电平有效。
(12)第11位(SPOL3)为SSEL3极性选择位,值为0时选择低电平有效,值为1时选择高电平有效,默认为低电平有效。
(13)第12到31位为保留位,写入时只能写0。

接下来看SPI延迟寄存器DLY,下表是它的全部位结构,其地址分别为0x40058004(SPI0), 0x4005C004(SPI1)。

(1)第0到3位(PRE_DELAY)用来控制SSEL有效和数据开始传输之间的时间,SSEL有效和第一个时钟沿之间始终存在1个SPI时钟,它不视为本预延迟的部分,值为0时表示未插入额外延时时间,值从0x1到0xF分别表示插入1到15个SPI时钟的延时时间,默认为未插入额外延时时间。
(2)第4到7位(POST_DELAY)用来控制数据传输结束和SSEL无效之间的时间,值为0时表示未插入额外延时时间,值从0x1到0xF分别表示插入1到15个SPI时钟的延时时间,默认为未插入额外延时时间。
(3)第8到11位(FRAME_DELAY)是当EOF标志置位,则控制当前帧和下一帧(如果EOT置位则为SSEL无效)之间的最短时间,值为0时表示未插入额外延时时间,值从0x1到0xF分别表示插入1到15个SPI时钟的延时时间,默认为未插入额外延时时间。
(4)第12到15位(TRANSFER_DELAY)用来控制两次传输之间SSEL处于无效的最短时间,当值为0x0时表示SSEL处于无效的最短时间为1个SPI时钟时间(零增量时间),当值为0x1时表示SSEL处于无效的最短时间为2个SPI时钟时间,以此类推,当值为0xF时表示SSEL处于无效的最短时间为16个SPI时钟时间,默认为零增量时间。
(5)第16到31位为保留位,写入时只能写0。
 

接下来是SPI状态寄存器STAT,下表是它的全部位结构,其地址分别为0x40058008(SPI0), 0x4005C008(SPI1)。 

(1)第0位(RXRDY)为SPI接收器就绪标志位,值为1时表示可从接收器缓冲区中读取数据,对RXDAT寄存器执行读取操作后自动清除该位。
(2)第1位(TXRDY)为SPI发送器就绪标志位,值为1时表示数据可以被写入发送缓冲区,可能在继续传输之前的数据。数据写入TXDAT或TXDATCTL时自动清零该位,直至数据移入发送移位寄存器,该位默认值便为1。
(3)第2位(RXOV)为接收器溢出中断标志位,此标志仅适用于从机模式(Master=0时),当检测到接收字符,但接收器缓冲区正被使用时,此标志置位,若这种情况发生,则保留接收器缓冲区内容,丢弃输入数据,若本位被置位,则SPI接收的数据应视为未定义。
(4)第3位(TXUR)为发送器下溢中断标志位,此标志仅适用于从机模式(Master=0时),这种情况下, 如果发送器空闲,则发送器必须在下一个输入时钟开始时发送新数据,若此时发送器保持寄存器中该数据不可用,则无数据可供传输,此标志置位,若本位被置位,则SPI发送的数据应视为未定义。
(5)第4位(SSA)为从机选择有效标志位,无论主机还是从机模式,只要任何从机选择从无效转换到有效状态,此标志便置位,这样可以确定SPI发送/接收功能何时变为繁忙,并允许在开始执行从机模式访问时将器件从低功耗模式唤醒,本标志必须通过软件才能清零。
(6)第5位(SSD)为从机选择无效标志位,无论主机还是从机模式,只要任何有效状态的从机选择转换到无效状态,此标志便置位,这样可以确定SPI发送/接收功能何时变为空闲,本标志必须通过软件才能清零。
(7)第6位(STALLED)为终止状态标志位,表示SPI是否处于停止条件。
(8)第7位(ENDTRANSFER)为传输结束控制位,当发送器完成任意执行中的操作时,软件可以置位该位,强制结束当前传输,就好像EOT标志已经在最后一次传输之前完成置位,此功能可以为这种情况提供支持,即它不知道发送数据是何时写入的,并用来结束传输,随着传输即将结束,当发送器变为空闲时,该位清零,以这种方式强制传输结束可以插入任何指定的FRAME_DELAY和TRANSFER_DELAY。
(9)第8位(MSTIDLE)为主机空闲状态标志位,只要SPI主机功能完全空闲,该位便被置1,这意味着发送保持寄存器为空,且发送器未执行数据发送任务,该位默认值便为1。
(10)第9到31位为保留位,写入时只能写0。

接下来看SPI中断使能读取和置位寄存器INTENSET,下表是它的全部位结构,其地址分别为0x4005800C(SPI0)、0x4005C00C(SPI1)。 

(1)第0位(RXRDYEN)用于判断当接收器数据可用时确定是否发生了中断,值为0时表示接收器数据可用时不产生中断,值为1时表示接收器数据在RXDAT寄存器中可用时产生中断,默认为不产生中断。
(2)第1位(TXRDYEN)用于判断当发送器保持寄存器可用时确定是否发生了中断,值为0时表示发送器保持寄存器可用时不产生中断,值为1时表示数据可写入TXDAT时产生中断,默认为不产生中断。
(3)第2位(RXOVEN)用于判断当发生接收器溢出时,确定是否发生了中断,在从机模式下,当接收器需要将新接收的数据移动到RXDAT寄存器,而该寄存器正在使用时,就会发生这种情况,主机模式下,接口通过不允许进行可能导致接收器溢出的最新传输而防止接收器溢出,值为0时表示发生接收器溢出时不产生中断,值为1时表示若发生了接收器溢出,则产生中断,默认为不产生中断。
(4)第3位(TXUREN)用于判断当发生发送器下溢时,确定是否发生了中断。在从机模式下,当需要发送数据但无可用数据时,就会发生这种情况,值为0时表示发送器下溢时不产生中断,值为1时表示若发生了发送器下溢,则产生中断,默认为不产生中断。
(5)第4位(SSAEN)用于判断当从机选择有效时,确定是否产生中断,值为0时表示任何从机选择从无效变为有效都不会产生中断,值为1时表示任何从机选择从无效变为有效都会产生中断,默认为不产生中断。
(6)第5位(SSDEN)用于判断当从机选择无效时,确定是否产生中断,值为0时表示当所有已生效的从机选择变为无效时,不产生中断,值为1时表示当所有已生效的从机选择变为无效时,产生中断,默认为不产生中断。
(7)第6到31位为保留位,写入时只能写0。

接下来看SPI中断使能清零寄存器INTENCLR,下表是它的全部位结构,其地址分别为0x40058010(SPI0)、0x4005C010(SPI1)。由于上面的INTENSET寄存器只能写1不能写0,所以INTENCLR寄存器就是实现INTENSET寄存器清零的。

(1)第0到5位用于对应清零上面INTENSET寄存器中相应的位,如果向这些位写入1,便会将INTENSET寄存器中相对应的位清零。
(2)第6到31位为保留位,写入时只能写0。

--待续--  


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    stm32 嵌入式开发 用标准库进行 ADC 实验总结;硬件原理图  ,滑动电位器与芯片PC3引脚连接 根据开发板可知:STM32F429IGT6 有 3 个 ADC,每个 ADC 有 12 位......
    一文全面介绍伺服电机的选型设计;伺服电机选型设计概述 伺服驱动和电机与工业机器的性能相匹配:惯量、容量与速度。 惯量:一般机构JL ≤JM,当JL≥3JM时,可控性会降低。不同......
    音输出,同时提供4个输出口控制各LED闪灯。如图是LM-04YD引脚及其应用电路。 图中,四路触发电路相同,均由阻容降压、滤波、二极管稳压电路组成。R7和C8组成IC1内部振荡器的外部阻容元件。适当调整R7......
    试时(手动模式下),正确设定惯量比参数是充分发挥机械及伺服系统最佳效能的前题,此点在要求高速高精度的系统上表现由为突出(台达伺服惯量比参数为1-37,JL/JM)。这样,就有了惯量匹配的问题!那到......
    STM32入门篇—ADC教程;1、 main.c 简单清楚地一个例程,一个简单的ADC例程,调用了A0引脚测量电压值。 2、 ADC初始化 ,PTA0 M_ADC_Init(ADC1......
    轴的总惯量“J=伺服电机的旋转惯性动量JM + 电机轴换算的负载惯性动量JL。负载惯量JL由(以平面金切机床为例)工作台及上面装的夹具和工件、螺杆、联轴器等直线和旋转运动件的惯量折合到马达轴上的惯量组成。JM为伺......
    统反应将忽快忽慢,影响加工精度。伺服电机选定后最大输出值不变,如果希望θ的变化小,则J就应该尽量小。而上面的,系统转动惯量J=伺服电机的旋转惯性动量JM + 电机轴换算的负载惯性动量JL。负载惯量JL由工......
    据机械的实际动作要求及加工件质量要求来具体选择具有合适惯量大小的电机。 2、在调试时(手动模式下),正确设定惯量比参数是充分发挥机械及伺服系统最佳效能的前题,此点在要求高速高精度的系统上表现由为突出(台达伺服惯量比参数为1-37,JL/JM......
    供液能力是决定油田开采产量和持续性的关键性因素。各个油田都是通过动液面决定泵深、计算井底流压,根据它的变化制定某口井或者区块的工作制度。抽油井通过液面的变化反映井底压力的变化,其产量可表示为: QL=JL......
    道 16 连接到了芯片内部的温度传感器, Vrefint 连接到了通道 17。ADC2 的模拟通道 16 和 17 连接到了内部的 VSS。 ADC的全部通道如下图所示: 外部的16个通......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>