|
T5L属于双核架构,GUI核不开放这个就不说了。51核与GUI核之间通过DGUS变量传递数据。此外,该变量区还有128KB可以由51核独享。
CAN通讯缓冲区用的也是这块RAM。
做CAN通讯时,实测了一下该RAM的访问速度。仅测试了读速度,为4字节连续读。
void read_dgus4byte(uint32_t addr,uint8_t* buf,uint16_t len)
{
ADR_H = addr>>16;
ADR_M = addr>>8;
ADR_L = addr;
ADR_INC = 0x01;
RAMMODE = 0xAF; // 读操作
while(!APP_ACK);
while(len>0)
{
APP_EN=1; while(APP_EN==1);
*buf++ = DATA3;
*buf++ = DATA2;
*buf++ = DATA1;
*buf++ = DATA0;
len--;
}
RAMMODE = 0x00;
}
时间计数器采用了Timer1,定时周期1us。
void sys_timer1_isr() interrupt 3
{
// 重新装载周期值
TH1 = Time1_1us>>8; TL1 = Time1_1us;
sys_tickus ++; // 系统us滴答计数器
}
CAN通讯时,对读DGUS变量做测试。
sys_tickus=0; TR1 = 1;
// .读出0xFF:0068 -0xFF:006B的CAN相关数据
read_dgus4byte(0xFF0068, d, 40);
TR1 = 0;
测试结果如下,变量个数单位=4字节:
4 25us
8 40us
40 160us
小结:
数据吞吐量较大时,DGUS变量RAM读速率基本为1us/字节。该指标可作为GUIS变量访问时间开销的一个简单参考。
|
|