CH376T 芯片的U盤寫入速率問題

請問一下CH376T用SPI通訊,SPI速率8M,寫入U(xiǎn)盤的速率一般是多少?剛測試才幾kB,差太遠(yuǎn)了,寫入函數(shù)用的是CH376ByteWrite()。

應(yīng)該是程序有問題,速率差太遠(yuǎn)了,是不是寫入函數(shù)調(diào)用錯(cuò)了?或者流程問題?有沒有寫入U(xiǎn)盤的例程?

SPI方式,數(shù)據(jù)流取決“時(shí)鐘頻率+數(shù)據(jù)間間隔時(shí)間”,

文件讀寫速度:

連續(xù)讀出或?qū)懭?> 打開+讀寫+關(guān)閉+打開+讀寫+關(guān)閉…循環(huán),

扇區(qū)方式操作(512Byte單位) > 字節(jié)方式操作(最小1Byte)


有看到說CH376S并口最高可以到200kB/s,CH376T SPI接口有測試過理論最高速率嗎?


理論讀取最大600K

寫入大概只有一半


您說的這個(gè)速率是k Byte還是k bit?我實(shí)際測試寫入只有16KByte/s,讀取19KByte/s,用secWrite寫入才9kByte/s,secRead讀會(huì)卡住,不清楚什么原因。

大佬能幫忙看下哪里有問題嗎?測試代碼如下:


#define SEC_NUM 10

? ? UINT8? writedata[512], readbuf[512];

? ? UINT8? RealReadCount = 0, RealWriteCount = 0;


? ? memset(writedata, 'A', sizeof(writedata));

? ? xLastTickCount = xTaskGetTickCount();

? ? NRF_LOG_INFO("now systick:%d", xLastTickCount);


? ? //Write

? ? s = CH376FileOpen("/SEC.TXT");

? ? if(s = ERR_MISS_FILE) {

? ? ? ? s = CH376FileCreate("/SEC.TXT");

? ? }


? ? if ( s == USB_INT_SUCCESS ) {

? ? ? ? NRF_LOG_INFO("Open, write .txt file");

? ? ? ? for(i = 0; i < SEC_NUM; i++) {

? ? ? ? ? ? CH376SecWrite(writedata, 1, &RealWriteCount);

? ? ? ? }

? ? ? ? CH376FileClose( TRUE );

? ? ? ? NRF_LOG_INFO("write cnt: %d, total:%d", RealWriteCount, RealWriteCount*i*512);

? ? }

? ? else {

? ? ? ? NRF_LOG_INFO("error:0x%x", s);

? ? }

? ? xTickCount = xTaskGetTickCount();

? ? times = xTickCount - xLastTickCount;

? ? speed = RealWriteCount * i * 512 * 1000 / 1024 / times;

? ? NRF_LOG_INFO("write tick count: %d, speed:%d kb/s", times, speed);


? ? filesize = CH376GetFileSize( );

? ? NRF_LOG_INFO( "File size = %ld\n", filesize );

? ? xLastTickCount = xTaskGetTickCount();

? ? vTaskDelay(20);

? ? xTickCount = xTaskGetTickCount();

? ? NRF_LOG_INFO("delay cnt:%d\n", xTickCount - xLastTickCount);


? ? //Read

? ? s = CH376FileOpen("/SEC.TXT");

? ? if ( s == USB_INT_SUCCESS ) {

? ? ? ? NRF_LOG_INFO("Open, read .txt file");

? ? ? ? CH376SecLocate( 0 );

? ? ? ? for(i = 0; i < SEC_NUM; i++) {

? ? ? ? ? ? CH376SecRead( readbuf, 1, &RealReadCount );

? ? ? ? }

? ? ? ? CH376FileClose( TRUE );

? ? ? ? NRF_LOG_INFO("read cnt: %d, total byte: %d", RealReadCount, RealReadCount*i*512);

? ? }

? ? else {

? ? ? ? NRF_LOG_INFO("error:0x%x", s);

? ? }

? ? xTickCount = xTaskGetTickCount();

? ? times = xTickCount - xLastTickCount;

? ? speed = RealReadCount * i * 512 * 1000 / 1024 / times;

? ? NRF_LOG_INFO("read tick count: %d, speed:%d kb/s", times, speed);



CH376SecRead函數(shù)還是失敗,一直卡住,另外,用10240Byte的buff進(jìn)行測試,單次寫入整個(gè)buff,10KB數(shù)據(jù),分別測試寫入1次和循環(huán)寫入5次,測試結(jié)果如下:

Sector

??? 1. 一個(gè)sector512Byte,單次寫入20個(gè)sector,總計(jì)10KB數(shù)據(jù),用時(shí)898ms,速度11KB/s

??? 2. 單次寫入20個(gè)sector,循環(huán)5次,總計(jì)50KB數(shù)據(jù),用時(shí)4315ms,速度11KB/s

Byte

??? 1. 單次寫入10240 Byte,總計(jì)10KB數(shù)據(jù),用時(shí)613ms,速度16KB/s

??? 2. 讀取10KB用時(shí)447ms,速度20KB/s。

??? 3. 單次寫入20個(gè)sector,循環(huán)5次,總計(jì)50KB數(shù)據(jù),用時(shí)2891ms,速度17KB/s

??? 4. 讀取50KB用時(shí)2371ms,速度21KB/s

為什么扇區(qū)寫入會(huì)比Byte寫入速率更慢?并且最高速度才21KB,和您說的200KB相差10倍!

我使用的是CH376T,SPI通訊速度8M,能幫忙看下是什么問題嗎?

主要遇到的困難:

  1. 扇區(qū)讀函數(shù)會(huì)卡死

  2. 扇區(qū)寫比Byte寫速度慢1倍

  3. 最快速度僅20KB/s,是貴司測試速度的十分之一


你芯片工作電壓是5V吧,還有376SPI最高到24M,你調(diào)到20M試試


CH376T的VCC給的是3.3V,datesheet中寫支持5V,3.3V,3V三種供電電壓,供電電路參考的是datesheet中的電路圖。SPI目前最高只能是8M,能上20M的給屏幕用了。

能麻煩您幫忙測一下8M SPI下U盤的讀寫速度嗎?分別測Byte讀寫和Sec讀寫。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频