摘要:对于一些内部RAM比较小的单片机,使用外部串行RAM可以缓解一些应用中单片机内存不足所带来的困难。昨天测试了SPI接口的RAM23LC1024的接口功能,使用SPI 读取32个字节数据花费了 100多微秒,为了提高RAM访问速度,接下来 利用23LC102
一、前言
对于一些内部RAM比较小的单片机,使用外部串行RAM可以缓解一些应用中单片机内存不足所带来的困难。昨天测试了SPI接口的RAM 23LC1024 的接口功能,使用SPI 读取32个字节数据花费了 100多微秒,为了提高RAM访问速度,接下来 利用23LC1024的 QSPI接口,测试一下读取的速度最快可以达到多少。
二、测试电路
好马配好鞍,在 AI8051U单片机上,集成有 QSPI 硬件接口。这样,将 23LC1024 串行RAM 挂载到 AI8051U的QSPI端口,查看一下读写的速度。使用它的USB端口进行软件的下载调试,电路很简单。设计一个单面测试电路板,使用一分钟制版方法,一分钟之后得到测试电路,焊接之后进行测试。
在AI8051U的数据手册中,关于QSPI端口的说明很详细,只是初次使用,缺少经验。可以直接应用它给出的范例程序。这些范例程序用于访问外部SPI 接口的 FLASH。可以在链接网页中找到对应的示例程序压缩包。将它们解压缩,可以看到其中包括有 QSPI 头文件和 C源文件,通过阅读和修改这里面的程序,在根据 23LC1024的说明,编写相应的串口RAM访问程序。
在 QSPI 文件中,前面的宏定义修改为 1,这样 便符合现在测试电路中 串行SPI 挂载的端口。接下来,初始化程序对所使用的 QSPI 端口的六个 IO 口进行设置。 根据 23LC1024中 QSPI 接口的说明,经过测试,这里的 QSPI时钟分频系数修改为 4,这样便可以满足读写 23LC1024 的速度要求。设置时钟空闲电平为低电平。访问地址空间,实际上 23LC1024只有 128k字节。不过这里并没有进行修改。这是对 QSPI文件的初步修改。
在 QSPI中给出了很多已经编写好的子程序,分别适应外部不同数据线宽度的读写过程。针对不同的 SPI 存储器,这些QSPI 访问序列可以完全进行配置,包括各种控制命令。其中 四线SPI读取命令,可以直接用于 23LC1024的读取。但是,在给定的 QSPI文件中,并没有包括适合 23LC1024写入函数。于是将其中的一个函数,修改成包括写入数据的子程序。增加了输入指针和长度的参数。 利用这些参数,可以将外部数组写入 RAM。这个写入过程,符合 23LC1024的四线写入协议。
在读写23LC1024的过程中,直接调用前面的函数,便可以完成RAM的数据读写。其中这里的参数2 表明在读写命令地址与数据之间存在两个 空字节时钟。读取的时候,使用 QSPI读取命令即可。
在主程序中,先给 23LC1024写入64个字节的递增数据。然后在循环中读取,并通过USB虚拟串口显示出来。注意,在读取的时候,现在一次最多读取32个字节,所以分两次读取64个字节。在写入的时候并没有32个字节的限制。可以看到,USB虚拟串口显示的结果,表明RAM读写正确。
下面是激动人心的时刻,测量一下通过 QSPI 访问RAM的速度。使用示波器,测量23LC1024的 CS 和 IO0 数据线上的电压波形,可以看到,读取32个字节的时间大约为 8微秒。平均到每个字节读取时间为 0.25微秒。相比使用普通的SPI接口,读取的速度大约提高了 15倍左右。由此可以看到,使用 AI8051U的 硬件 QSPI访问外部存储器,速度的确非常快。
本文测试了利用 QSPI接口访问外部串行RAM的过程。验证了AI8051U高速 QSPI 接口的功能。访问32个字节,大约消耗8微秒的时间。通过这个串行RAM,可以在一定程度上,解决现在单片机内部 RAM 不足的问题。
[1]
[2]
单片机片外RAM,串行的:
[3]
来源:APPLE频道