从一张示波器截图谈FIFO

发布时间:2021-04-22  

概要:SPI外设具有协议通用性强,高速串行通讯,操作简便等优点。本文讲述了在使用SPI外设驱动LCD屏时,由于功能遇到的“异步”发送数据,导致LCD屏驱动异常,从而屏幕显示失败的问题。借助示波器观察引脚信号,分析信号时序等方法的解决过程,并最终实现SPI外设驱动LCD屏。

本文引用地址:

本人的一个项目,项目使用公司的LPC11U68微处理器作为主控芯片,其设计功能之一是驱动TFT LCD屏。TFT LCD屏为SPI接口,于是使用LPC11U68芯片的SSP0外设接口来驱动。

很简单的三两行字,却让我在调试的时候一度深陷困境。先上一张示波器截图,我们慢慢道来。

图片.png

这张示波器截图对应的是下面这段代码实现:

void ssp0_send_byte(uint8_t data)

{

uint16_t tmp = data;

LCD_DESELECT();

LCD_CMD();

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TNF) == RESET));

Chip_SSP_SendFrame(LPC_SSP0, tmp);

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TFE) != SET));

LCD_SELECT();

}

LCD驱动对于寄存器或数据的写入流程还是比较清晰、简单。如上述源代码所示:

step1:将片选CS信号拉低

step2:配置本条发送数据是命令or数据

step3:发送8位串行数据

step4:将片选CS信号拉高

图片.png

上图为TFT LCD驱动datasheet中的引脚时序参考图。代码的编写也是完全符号时序的要求。可是就是这么简单的6行代码出现了问题!

我将代码编译后烧录入LPC11U68芯片后开始运行,发现LCD屏驱动异常,屏幕没有任何显示。

考虑到代码是从示例程序移植过来,也不排除出现问题——也许原例程亦无法实现呢!我将代码更换为GPIO模拟SPI方式实现驱动LCD屏——这次显示成功了,只是页面刷新要慢好多了。再次换回SPI外设方式,故障依旧——这也充分说明了硬件是完好的,而问题就出在了软件设计上面了。

刚刚开始以为配置LPC11U68芯片的SSP0外设出现了问题,经过反复验证后,也未能定位原因所在。在软件分析无果后,请出来了示波器,便有了文章开头的那一张截图。

截图中,蓝线CH1为SPI外设的SCK引脚,黄线CH2为LCD的片选CS信号。从示波器上面可以清晰看到片选CS信号并没有在发送一帧数据后才拉高,而是提前拉高了。当片选CS引脚为高时,LCD屏忽略SDA上面传输的数据,自然LCD屏不会有正确的显示。

通过示波器的 介入,我们观察到了控制信号与数据信号的传输过程,并发现了LCD屏未能正确的显示的症结所在。下面我们就分析一下其中的原因。

示例的例程是基于STM32系列单片机,阅读两者的datasheet,对比所使用的微处理器LPC11U68的SPI外设,可以看到STM32系列单片机没有发送。那发送为何物呢?

“FIFO是先进先出的意思,队列的方式。”

“FIFO是一个硬件环形的缓冲队列,物理上不可寻址,不可见,仅SSPDR这个FIFO出口可见。”

“SSP接口向SPI总线发送数据时,数据先存到SSPDR当中,由Tx FIFO的状态及总线是否空闲决定已经存入到SSPDR当中的数据何时进行发送。”

因为Tx FIFO的深度是有限的,每次发送过程中都是将现有FIFO中所有数据一起发送,所以SSPDR可以理解为发送过程当中的数据缓冲寄存器。”

以上我从网络上面摘录下来的。通过FIFO的介绍可以得出,当程序执行到Chip_SSP_SendFrame()时,仅将数据“塞入”FIFO,并在成功“塞入”后即返回。而此时数据并未成功发送,但片选CS信号 却在Chip_SSP_SendFrame()返回后,误认为其成功执行而对片选CS信号进行了释放拉高操作,待SPI外设真正发送数据时,此时片选CS信号已经释放,LCD驱动芯片也就不会再接收其数据了。没有了正确的输入数据,屏幕也就“漆黑一片”了。

分析问题已经完成,那么下面我们就着手解决问题。

通过阅读官方技术手册,可以查询到BUSY标志位代表SPI外设正在发送操作,所以我们仅需要在此标志位清零后再执行片选CS释放即可。源代码如下:

void ssp0_send_byte(uint8_t data)

{

uint16_t tmp = data;

LCD_DESELECT();

LCD_CMD();

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TNF) == RESET));

Chip_SSP_SendFrame(LPC_SSP0, tmp);

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_TFE) != SET));

while((Chip_SSP_GetStatus(LPC_SSP0, SSP_STAT_BSY) == SET));

LCD_SELECT();

}

公司旗下LPC系列微处理器对外设增加FIFO可以减少数据中断的调用,提高整体通讯效率,而这也恰恰营造了一种“异步”指令处理的环境。这时,也就出现了我们的微处理器在代码执行顺序上面出现了没有按“顺序”执行的问题。

在增加了等待指令后,软件的操作顺序与期望顺序一致,TFT LCD驱动显示正常。我们在软件设计时,合理使用硬件外设提供的FIFO功能,充分利用其优势,规避其使用过程中的副作用。虽然本次FIFO带来了一些困扰,但从整体的系统角度来讲,仍然提升了我们的系统效率。


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

相关文章

    2000B系列经济型USB示波器的性能特点分析;产品简介: 价格超级棒的示波器 PicoScope2000B系列提供2和4通道型号的多种选择,加上具有2模拟+16数字通道的混合信号示波器型号。所有型号......
    软件OpenChoice的价格相对来说比市面上的同类型软件要稍贵一些,纳米NS-Scope的示波器软件则因为是国产软件所以比较实惠。 从以上述两种品牌示波器软件的分析,在选择示波器软件时我们需要看示波器软件是否兼容自己的示波器型号......
    也可以与50欧姆探头一起使用。 探头与示波器电容也必须匹配,这通过选择为用于特定示波器型号而设计的探头选型实现。此外,许多探头都具有补偿调节功能,通过补偿微小的电容变化,可以精确地实现匹配。在探头连接到示波器......
    与被测物的桥梁,没有这座桥梁,示波器就无法读取被测物的信息。 二、为什么有这么多探头? 可供选择的示波器型号和功能非常广泛,只是市场上出现大量探头的基本原因之一。不同的示波器......
    通过这种方式是可以完整测试到谐振点和反谐振点的,并且其阻抗可以完整得到。 四、测试设备 在此实验中,我们使用的泰克示波器型号是MSO54,其余还用到了TPP0500(标配),TCP0030A(选配),分析软件(选配) ......
    通道,能够应对当前以及未来严苛的应用挑战。它提供全新的性能、分析和友好的用户体验标准。 5 系列 MSO 混合信号示波器型号: 5 系列 MSO 混合信号示波器......
    学习者在平台获取一站式测试测量仪器信息与服务。每日E问APP海量收纳电子测试行业全品类机型,如示波器、分析仪、信号源等多种测试测量仪器型号资料,将多家厂商仪器信息聚集于平台中,为电子测试工程师提供“条件......
    前的 2.5ns 到 17.7ns 之间变化。这在前面讨论的一个样本周期范围内。TDC的时间分辨率取决于具体的示波器型号,与示波器的采样率有关。总结 TDC 性能的示波器规格是“触发和插值器抖动”。对于高性能示波器......
    基于S3C2410A微控制器的嵌入式数字示波器的应用设计方案;1 引言 嵌入式数字示波器是近年发展起来的一种实现数据及波形实时显示的智能终端设备。目前通用的数字示波器多采用DSP、内嵌微处理器型......
    新型 MXO 5C 示波器,具有四通道和八通道型号。新系列以新一代 MXO 5示波器为基础,专门针对用户经常面临的空间限制的机架安装和自动化测试系统。该仪器的垂直高度为2U(3.5 英寸或 8.9 厘米......

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

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

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

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

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

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

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