ram芯片的最小数目(串行RAM23LC1024四线访问数据)
ram芯片的最小数目(串行RAM23LC1024四线访问数据)
2024-07-03 07:51:35  作者:汉子的霸气  网址:https://m.xinb2b.cn/sport/tyh112314.html

为什么需要四线串行访问23LC1024?

在“ 单片机片外RAM,串行的[1]”中减少了对Microchip公司的SPI接口RAM芯片:23LC1024的读写测试。但是在STC8G1K08但潘辰的SPI接口驱动下,访问对其进行一次字节的读写操作,大概需要消耗20微妙的的时间,这使得在高速、高精度采集应用中跟不上数据的采集。

为了提高对其的访问速度,可以采用以下的方式:

使用其四线串行模式(SQI)的方式进行访问;尽量使用序列读写方式,而不是每次完成完整的命令 地址 数据的腹泻方式

下面为了配合 AD7606八通道AD采集模块测试[2]中数据的采集,首先测试23LC1024在STC8G1K08操作下访问速度

本文实验中的工程文件可以在下面资源中下载:

23LC1024串行四线访问工程[3]实验电路设计

AD工程文件目录:

AD\Test\2020\TestAD7606STC\TestAD7606STC8G.SchDoc

1. 原理图

电路板设计中采用了STC8G1K08 TSOP20封装的芯片。核心板上集成了23LC1024串行接口的RAM,对于AD7606的接口是通过ADI10芯接口连接。

ram芯片的最小数目(串行RAM23LC1024四线访问数据)(1)

▲ 原理图

2. PCB

设计电路PCB版图,适宜使用单面PCB板制作实验电路。

ram芯片的最小数目(串行RAM23LC1024四线访问数据)(2)

▲ 快速制版后的实验电路板

3. 硬件调试

软件开发所在的目录:

C51\STC\Test\2020\testAD76068G1K\TestAD76068G.uvproj

置STC8G1K08的硬件选项配置如下:

ram芯片的最小数目(串行RAM23LC1024四线访问数据)(3)

▲ 单片机硬件选项配置

主要性能测试1. 测试单个字节读写的时间

测试标准写入函数在执行过程中,LC1024的CS的波形:

LC1024ByteWrite(0, 0, 0xff, 0xf)

写入时间为2us,CS的波形如下图所示:

ram芯片的最小数目(串行RAM23LC1024四线访问数据)(4)

▲ CS波形,时间为2.03us

读出的时间也是2.0us,

LC1024ByteRead(0x0, 0x0, 0xff)

下面是在读的时候,CLK, SO1的波形。

ram芯片的最小数目(串行RAM23LC1024四线访问数据)(5)

▲ CLK,SD1的波形

2. 连续字节读写

使用连续字节读写的方式读取多组字节。下面是读取连续10个字节。所需要的时间为8.57us。

LC1024ReadBegin(0x0,0x0,0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024WriteByte(0x0);LC1024ReadWriteEnd();

ram芯片的最小数目(串行RAM23LC1024四线访问数据)(6)

▲ 连续读取十个字节所需要的时间

如果仅仅执行读取起始和结束的语句:

LC1024ReadBegin(0x0,0x0,0x0);LC1024ReadWriteEnd();

所小号的时间为2us。这说明读取单个字节的时间大约为左右。

这个速度与博文“ 扩展32KRAM的STC8H8K信号采集版[4]”中,通过并口扩展RAM的一次读写时间0.532us的速度基本相当了。

通过这个时间可以说明,使用SQI(串行四线制)在连续读写的情况下可以达到与并口扩展RAM相当的速度。

即使是单个读写所消耗的2us的时间,也比在博文“ 单片机片外RAM,串行的[5]”中读取单个字节所消耗19.2us将近快了10倍左右。

ram芯片的最小数目(串行RAM23LC1024四线访问数据)(7)

函数程序模块

相关LC1024读取的程序模块如下。

其中致的说明的是,在LC1024的初始化函数中,调用了LC1024Reset命令,就保证了LC1024成功进入SQI模式。

LC1024访问函数头文件:

#ifndef__LC1024L4__#define__LC1024L4__//------------------------------------------------------------------------------#ifdefLC1024L4_GLOBALS#defineLC1024L4_EXT#else#defineLC1024L4_EXTextern#endif//LC1024L4_GLOBALS//------------------------------------------------------------------------------//ENDOFTHEFILE:LC1024L4.H//------------------------------------------------------------------------------#endif//__LC1024L4__

LC1024的C语言程序。

//------------------------------------------------------------------------------#defineLC1024L4_GLOBALS1//Definetheglobalvariables#include"LC1024L4.H"#include"C51BASIC.H"#include"STC8G.H"#include"INTRINS.H"//------------------------------------------------------------------------------voidLC1024L4Init(void){PM_PP(LC1024_CS);PM_PP(LC1024_CLK);ON(LC1024_CS);OFF(LC1024_CLK);LC1024_SO_IN;LC1024Reset();LC1024EQIEnter();}//------------------------------------------------------------------------------voidLC1024EQIEnter(void){unsignedchari,ucMask,ucByte;ucByte=LC1024_EQIO;ucMask=0x80;LC1024_SO_IN;PM_PP(LC1024_SO0);OFF(LC1024_CS);for(i=0;i<8;i ){if(ucByte&ucMask)ON(LC1024_SO0);elseOFF(LC1024_SO0);ucMask>>=1;LC1024_CLK_PULSE;}LC1024_SO_IN;ON(LC1024_CS);}voidLC1024EQIExit(void){LC1024_SO_OUT;P1|=0xf;OFF(LC1024_CS);LC1024_CLK_PULSE;LC1024_CLK_PULSE;LC1024_SO_IN;ON(LC1024_CS);}//------------------------------------------------------------------------------unsignedcharLC1024ByteRead(unsignedcharucAdd2,unsignedcharucAdd1,unsignedcharucAdd0){unsignedcharucRet;LC1024_SO_OUT;OFF(LC1024_CS);P1&=0xf0;LC1024_CLK_PULSE;P1|=0x3;LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0&0xf);LC1024_CLK_PULSE;LC1024_SO_IN;LC1024_CLK_PULSE;//DummybyteLC1024_CLK_PULSE;ON(LC1024_CLK);ucRet=(P1<<4);OFF(LC1024_CLK);ON(LC1024_CLK);ucRet|=(P1&0xf);OFF(LC1024_CLK);ON(LC1024_CS);returnucRet;}//------------------------------------------------------------------------------voidLC1024ByteWrite(unsignedcharucAdd2,unsignedcharucAdd1,unsignedcharucAdd0,unsignedcharucByte){LC1024_SO_OUT;OFF(LC1024_CS);P1&=0xf0;LC1024_CLK_PULSE;P1|=0x2;LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucByte>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucByte&0xf);LC1024_CLK_PULSE;LC1024_SO_IN;ON(LC1024_CS);}//------------------------------------------------------------------------------unsignedcharLC1024ReadMode(void){unsignedcharucRet;OFF(LC1024_CS);LC1024_SO_OUT;P1&=0xf0;LC1024_CLK_PULSE;P1|=0x5;LC1024_CLK_PULSE;LC1024_SO_IN;ON(LC1024_CLK);ucRet=(P1<<4);OFF(LC1024_CLK);ON(LC1024_CLK);ucRet|=(P1&0xf);OFF(LC1024_CLK);ON(LC1024_CS);returnucRet;}//------------------------------------------------------------------------------voidLC1024ReadBegin(unsignedcharucAdd2,unsignedcharucAdd1,unsignedcharucAdd0){LC1024_SO_OUT;OFF(LC1024_CS);P1&=0xf0;LC1024_CLK_PULSE;P1|=0x3;LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0&0xf);LC1024_CLK_PULSE;LC1024_SO_IN;LC1024_CLK_PULSE;//DummybyteLC1024_CLK_PULSE;}//------------------------------------------------------------------------------voidLC1024WriteBegin(unsignedcharucAdd2,unsignedcharucAdd1,unsignedcharucAdd0){LC1024_SO_OUT;OFF(LC1024_CS);P1&=0xf0;LC1024_CLK_PULSE;P1|=0x2;LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd2&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd1&0xf);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucAdd0&0xf);LC1024_CLK_PULSE;}unsignedcharLC1024ReadByte(void){unsignedcharucRet;ON(LC1024_CLK);ucRet=(P1<<4);OFF(LC1024_CLK);ON(LC1024_CLK);ucRet|=(P1&0xf);OFF(LC1024_CLK);returnucRet;}voidLC1024WriteByte(unsignedcharucByte){P1&=0xf0;P1|=(ucByte>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucByte&0xf);LC1024_CLK_PULSE;}//------------------------------------------------------------------------------voidLC1024ReadWriteEnd(void){LC1024_SO_IN;ON(LC1024_CS);}//------------------------------------------------------------------------------voidLC1024WriteMode(unsignedcharucMode){LC1024_SO_OUT;OFF(LC1024_CS);P1&=0xf0;LC1024_CLK_PULSE;P1|=0x5;LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucMode>>4);LC1024_CLK_PULSE;P1&=0xf0;P1|=(ucMode&0xf);LC1024_CLK_PULSE;ON(LC1024_CS);LC1024_SO_IN;}//------------------------------------------------------------------------------voidLC1024Reset(void){LC1024_SO_OUT;P1|=0xf;OFF(LC1024_CS);LC1024_CLK_PULSE;LC1024_CLK_PULSE;LC1024_CLK_PULSE;LC1024_CLK_PULSE;LC1024_CLK_PULSE;LC1024_CLK_PULSE;LC1024_CLK_PULSE;LC1024_CLK_PULSE;ON(LC1024_CS);LC1024_SO_IN;}//ENDOFTHEFILE:LC1024L4.C//------------------------------------------------------------------------------

结论参考资料

[1] 单片机片外RAM,串行的: https://zhuoqing.blog.csdn.net/article/details/105891541

[2] AD7606八通道AD采集模块测试: https://zhuoqing.blog.csdn.net/article/details/105908384

[3] 23LC1024串行四线访问工程: https://download.csdn.net/download/zhuoqingjoking97298/12388449

[4] 扩展32KRAM的STC8H8K信号采集版: https://zhuoqing.blog.csdn.net/article/details/105798094

  • 毛线拖鞋怎样织最简单(怎样用毛线织拖鞋)
  • 2024-07-03怎样用毛线织拖鞋论坛上的姐妹在手工求助区找下面这款拖鞋的织法,翻遍了网络上的各个角落终于找到了这款拖鞋的织法,希望教程能帮助姐妹完成这款拖鞋下面开始教!编织文字说明:这鞋子是从鞋口开始织的起的针数必须是单数我的这双是。
  • 粤剧帝女花有什么行当
  • 2024-07-03粤剧帝女花有什么行当粤剧《帝女花》是1957年首演的一场粤剧作品,由戏剧大师唐涤生创作,讲述的是长平公主和周世显的悲情爱情故事剧中行当主要有生旦。
  • nec增强型数字电影放映机(NEC激光放映机新品NC1402L)
  • 2024-07-03NEC激光放映机新品NC1402L3月30日,NEC在德国率先发布2020年激光放映机家族的又一新成员NC1402L这台拥有噪声低、体积小、重量轻、防尘优的新机器,将为影院营造最具沉浸感的观影体验超低噪音NC1402L的噪音只有49d。
  • fgo单体值得抽吗(萌新质疑五单一艾蕾)
  • 2024-07-03萌新质疑五单一艾蕾昨日国服FGO更新后,就迎来了本年度最大骗氪事件的第二波操作当FGO玩家还沉浸在没阿比的痛苦中时,没想到竟然又要失去艾蕾了本次更新后暂时保留了阿比盖尔和示巴女王的卡池UP,且放出了具有安娜、艾蕾、C闪。
  • 背叛了老婆如何修复婚姻(我背叛婚姻后老婆向我道歉)
  • 2024-07-03我背叛婚姻后老婆向我道歉网友来信如是说:我和老婆初高中同学,初二后半学期老婆主动追求的我,至此,我俩建立了恋爱关系虽然我家境一般,老婆家境比较优越,但是,那时候我比老婆学习成绩好太多以至于我会在无形之中觉得我在老婆面前有着优。
  • 一天比一天迫切成语(一日一成语少不更事)
  • 2024-07-03一日一成语少不更事【成语】少不更事shàobùgēngshì【释义】少:年轻;更:经历年纪轻,没有经历过什么事情指经验不多【出处】《隋书·李雄传》:后数年,晋王广出镇并州,以雄为河北行台兵部尚书上谓雄曰:“吾儿既少,更。
  • 怎么提高X生活质量呢(怎么提高X生活质量呢)
  • 2024-07-03怎么提高X生活质量呢要想拥有完美的高质量夫妻性生活,适度保持新鲜感和神秘感很重要,这样才能更好的维持双方的情感那么如何让夫妻性生活更和谐呢?“趣春秋”两性用品一站式购物平台把下面小妙招强烈推荐给您:1、营造氛围创造一个温。
  • 言怎么读(言字具体怎么读)
  • 2024-07-03言字具体怎么读言怎么读:言拼音:[yán]基本释义:(1)话:言语语言格言诺言发言有言在先言外之意(2)说:言之有理畅所欲言知无不言,言无不尽(3)汉语的一个字叫一言:五言诗万言书全书近二十万言(4)姓。
  • 鸡心炒什么好吃(鸡心的烹饪方法)
  • 2024-07-03鸡心的烹饪方法可以做辣椒炒鸡心好吃,具体做法如下:原料:鸡心,洋葱,红椒、青椒、小米椒调料:盐,糖,蒜,姜,老抽,料酒,水淀粉、辣酱鸡心切去筋和膜从中剖开,挤洗其中污血然后漂洗干净再切薄片加盐、料酒、和湿淀粉抓匀腌。
  • 皮肤长了个小肉疙瘩是怎么回事(皮肤长了肉疙瘩)
  • 2024-07-03皮肤长了肉疙瘩前两天,小艾收到一位读者的留言:“最近我的脖子上长了好几颗小小的肉疙瘩,好难看啊,请问这是怎么回事啊?我会不会得什么癌症的?要不要切掉?”这位读者的三连问可能也是众多患者的疑问,不要着急,今天小艾就为。
  • 河南第二大站商丘站(河南历史最久的火车站)
  • 2024-07-03河南历史最久的火车站早期夏邑火车站夏邑火车站,原名刘堤圈火车站,是夏邑县唯一的客运火车站,已有117年历史,是陇海铁路向西进入河南省的第一座客运站,位于河南省商丘市夏邑县车站镇始建于清朝光绪三十年,于民国4年建成通车由中。