tft每日頭條

 > 生活

 > 單片機資料庫目錄

單片機資料庫目錄

生活 更新时间:2024-07-01 09:04:38

簡介

在博文"為什麼單片機通常隻有那麼小的數據内存?[1]"讨論在單片機内部集成大規模RAM的問題。但在有的時候還是需要有大容量的RAM作為數據緩存。比如在博文“擴展32KRAM的STC8H8K信号采集版”介紹了通過并行接口擴展單片機片外内存的方法。在STC8H8K單片機運行在40MHz總線的情況下,完成片外RAM的讀寫僅僅需要0.5微秒。這在很多情況下可以滿足單片機數據訪問的要求了。

但是通過單片機的并口擴展外部RAM,一個最大的缺點就是造成了單片機引腳的大量浪費,增加了電子線路布闆空間的浪費。因此使用高速同步串行接口(Serial Peripheral Interface)開展外部RAM可以有效解決這個問題

單片機資料庫目錄(單片機片外RAM串行接口)1

▲ 郵購五片23LC1024芯片

本文下面通過具體實驗來測試基于Microcchip公司的23LC1024(128MByte)的串口RAM的擴展方式,為今後構建數據采集單片機系統做好準備。

設計方案

實驗AD工程:

D:\zhuoqing\AltiumDesigner\Test\2020\Test23ALC1024\Test23LC1024.SchDoc *

1. 實驗電路的原理圖

單片機資料庫目錄(單片機片外RAM串行接口)2

▲ 實驗電路的原理圖

2. PCB

單片機資料庫目錄(單片機片外RAM串行接口)3

▲ PCB 設計版圖

3. 底層軟件設計

(1)單片機ISP硬件配置:

單片機的工作主要頻率:。

單片機資料庫目錄(單片機片外RAM串行接口)4

▲ 單片機的硬件配置

(2)SPI設置:

SPI基本信号,下圖顯示CS,CLK的信号。

單片機資料庫目錄(單片機片外RAM串行接口)5

▲ SPI中的基本信号,CS,CLK

SPI 的CLK的頻率設置為:

SPISendChar():消耗時間:1.6us SPISendReceChar(): 1.6us

特性測試

1. MODE REGISTER

(1)上電後讀取Mode Register 缺省值: 上電後讀取LC1024: LC1024ReadMode: 0x40;

單片機資料庫目錄(單片機片外RAM串行接口)6

▲ MODE寄存器的定義

(2)對Mode Register 讀寫:

voidSerialDebugProcessBuffer(void){ unsignedcharucChar; SerialDebugBuffer2Argument(); if(g_ucSDANumber*0)return; if(strcmp("hello",(char*)STD_ARG[0])*0) printf("%sisready!\r\n",VERSION_STRING); elseIFARG0("mr"){ ucChar=LC1024ReadMode(); printf("LC1024Mode:%bx\r\n",ucChar); }elseIFARG0("mw"){ sscanf(SDA(1),"%bx",&ucChar); LC1024WriteMode(ucChar); printf("Mode:%bx\r\n",LC1024ReadMode()); } elseprintf("Errorcommand:%s!\r\n",STD_ARG[0]); }

2. 測試對内部RAM讀寫

(1) 基本讀寫: 通過寫入和讀出驗證,可以驗證整個0x1ffff可以被測試正确存儲。

(2)讀寫時間測試:

循環寫入0x8000字節,需要時間為:0.671s 循環讀出0x8000字節,需要時間為 : 0.671s

nBegin=GetClickMS(); for(i=0;i<nSize;i ){ LC1024ByteRead(lnAddress i); } nEnd=GetClickMS(); printf("Time:%d\r\n",nEnd-nBegin);

(3)測試讀寫單個字節的時間:

通過測試CS波形,可以測到對于LC1024單個字節的讀寫時間為:19.6us。 讀寫函數為: LC1024ByreRead(), LC1024ByteWrite().

單片機資料庫目錄(單片機片外RAM串行接口)7

▲ LC1024讀寫單個字節時間(CS)

測量:LC1024ByteReadDim, LC1024ByteWriteDim,讀寫兩個字節所需要的時間為:23.2us。

測量LC1024 CLK的波形,可以觀察其中的主要延長來自于對于地址的操作。在LC1024ByteWrite()函數中存在對于長整地址的移位操作。所以前面的時序特别長了。

單片機資料庫目錄(單片機片外RAM串行接口)8

▲ 寫操作中的CLK脈沖

将LC1024相關函數的地址進行改造,直接将24bit的三個字節的地址通過參數輸入。

unsignedcharLC1024ByteRead(unsignedlonglnAddress); voidLC1024ByteWrite(unsignedlonglnAddress,unsignedcharucByte); voidLC1024ByteReadDim(unsignedlonglnAddress,unsignedchar*pucDim,unsignedintnSize); voidLC1024ByteWriteDim(unsignedlonglnAddress,unsignedchar*pucByte,unsignedintnSize);

改造後的讀寫速度波形為:

單片機資料庫目錄(單片機片外RAM串行接口)9

▲ 讀寫LC1024的CS和CLK波形

此時,讀寫一個字節所需要的時間為7.86us。

直接對長整地址移位所消耗的時間測量: 下面是測量的數據:

單片機資料庫目錄(單片機片外RAM串行接口)10

▲ 地址移位所消耗的時間

測試的代碼:

OFF(LC1024_CS); lnAddress=lnAddress>>8; ON(LC1024_CS);

結論

測試了23LC1024的基本的SPI模式的讀寫性能,這對于一般的數據緩存是滿足的。

但是在高速數據采集過程中,高達20多微妙的訪問時間受限。這需要通過芯片的SQI多數據線模式來提高訪問速度。

還是受限于8051這個單片機的内核,使得該芯片的高速性能無法進一步提高了。将MCU更換成ARM的32位單片機則可以實質提高提高速度。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved