一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

用于超高速闪存微控制器的软件SPI库

来源:analog 发布时间:2023-08-31

摘要: 本应用笔记介绍了一个用于超高速闪存微控制器(如DS89C430和DS89C450)的软件(位bang) SPI库。解释了库的应用程序接口及其特性描述。该应用程序接受串行输入,并在Crystalfontz LCD上显示文本。

超高速微控制器系列使用单时钟周期核心,在相同时钟频率下比传统8051快12倍。超高速微控制器家族的成员包括不同数量的内部闪存和MOVX SRAM,以允许简单的系统设计。这些微控制器具有几个功能,包括两个全双工串行端口,三个定时器计数器,四个双向I/O端口和六个外部中断源。虽然它们没有硬件串行外设接口(SPI)端口,但可以很容易地通过软件进行模拟。

这个应用笔记使用了一个全功能的软件SPI master超高速微控制器和一个简单的应用程序,利用它来控制Crystalfontz LCD (www.crystalfontz.com)。

应用程序概述

应用程序接受ASCII数据在57,600波特(当使用33MHz晶体)串行端口0从标准串行终端程序。所述数据回显至所述终端并存储在数据存储器中,直到检测到回车;然后在LCD上显示累积的文本。本应用中使用的LCD是Crystalfontz SKD204-634 V2.0串行LCD,具有低速SPI接口。它连接到DS89C430,如图1所示。复位后,将“DS89C430软件SPI应用说明”横幅打印到终端。当应用程序监听输入数据时,它打印一个“=>”提示符。


图1所示、连接图

软件SPI库

此应用程序使用的软件SPI库是一个高度可配置的SPI主,具有以下功能:

  • 四种SPI时钟模式

  • 8位和16位字传输

  • SPI时钟拉伸

  • 可选的原子传输


该库支持的四种SPI时钟(SPI_CLK)模式由CKPHA和CKPOL定义。CKPOL位定义SPI时钟的空闲状态,CKPOL = 0强制SPI_CLK为低空闲状态,而CKPOL = 1强制SPI_CLK为高空闲状态。CKPHA改变用于数据信号传输的边缘。当CKPHA = 0时,SPI_CLK的第一条边指定从服务器和主服务器应该何时采样它们的输入。当CKPHA = 1时,SPI_CLK的第二条边指定何时进行采样。当CKPHA = 1时,主服务器和从服务器应该在第一个SPI_CLK边的输出中显示它们的数据。这允许数据有足够的保持时间。当CKPHA = 0时,当Slave Select (SS)线激活时,数据应该变得有效。请注意,大多数设备要求在CKPHA = 0时使用SS线,以允许适当的定时,而当CKPHA = 1时,SS可能是可选的。图2说明了这种行为。


图2、SPI时序图

数据作为数据存储器中的字节数组发送到SPI库。当处于8位字模式时,这些字节一次传输一个。在16位字模式下,传输两个字节,但此操作只消耗请求数的一次传输。请注意,在本文档中,“word”的长度可能是8位或16位,具体取决于所选择的模式。

为了与较慢的SPI从机接口,可以使用SPI_CLK拉伸将SPI_CLK周期增加1µs。

SS信号是可选的,因为它可能不是所有SPI设置都需要。大多数SPI设备期望SS的活动状态为低,但其他SPI设备要求活动状态为高。一些SPI设备期望在每个字传输同步后SS信号变为非活动状态。

为了方便原子传输,可以在传输时禁用中断。

软件SPI库接口

与SPI库的接口如下所示。要传输的数据必须以数组的形式位于数据存储器的连续部分中。标准库要求数据指针0 (dptr0)指向要传输的数据的开头。要传输的字数应该放在R3、R2、R1和R0中,R3是MSB。所需的拉伸值应该放在R4中。SPI库的选项应该放在R5中,其位值定义为:

R5.0 - ckpol设置为1 - SPI_CLK空闲高
R5.1 - ckpha设置为1 -在第二个SPI_CLK边缘传输
R5.2 - wordMode设置为1 -使用16位字传输
R5.3 - noSkew设置为1 -在传输过程中关闭中断
R5.4 -实用性设置为1 -在传输过程中使用SS线
R5.5 - synchSS设置为1 -让SS在每个单词后不活动
R5.6 - invertSS设置为1 - SS线是有效的高
R5.7 -未定义

设置好所有寄存器后,通过调用xmitSPI函数。传输完成后,每次字传输期间所读取的数据将被定位到为传输而传递的数据数组中相应的字位置。注意,在调用xmitSPI之后,dptr0将指向传输数组的开头,但是所指向的数据将被更改。

代码清单:软件SPI和Crystalfontz LCD

该应用程序是使用KeilµVision2构建的,但经过一些修改,任何8051汇编器都可以使用。应用程序和SPI库的源代码和二进制文件可以下载。如果需要技术支持,请联系技术支持。



声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: