||
UNMANAGED接口模式与FULL DUPLEX接口模式类似,区别是UNMANAGED没有读写命令字,也不判断状态。该模式需要V2DAP修改代码重新编译。请用Vinculum II IDE打开V2DAP的工程,打开V2DAP.c文件,搜SPI_SLAVE_MODE_VI_COMPATIBLE,将”monitor_iocb.set.param = SPI_SLAVE_MODE_VI_COMPATIBLE;”修改为”monitor_iocb.set.param = SPI_SLAVE_MODE_UNMANAGED;”,并修改monitor.c中的函数monReadCmd,如下(do while循环中丢掉0xFE字符):
if ((cmdDataIndex == 0) && charRead == 0xfe)
continue;
if (cmdDataIndex < MAX_CMD_LEN)
{
cmdData[cmdDataIndex] = charRead; // Append our command buffer...
cmdDataIndex++; // Increment the index...
}
重新编译下载rom。
因为是全双工的模式,所以在读数据的时候,HOST端也会写数据,VNC2的读buffer中也会有这些数据,所以这里定义一个特殊字符0xfe(目前的命令中没有用到的字符),当开始读到0xfe时就丢弃知道读到有效的命令。
UNMANAGED接口模式就是标准的SPI接口模式,VNC2内部有固定的buffer缓冲数据而已。因为UNMANAGED是一种不安全的通信方式,所以必须在write中加入2ms的delay时间通信才正常。
void vnc2SpiWrite(char spiData)
{
uint8_t rd;
vnc2SpiEn();
rd = spiTransferByte(spiData);
vnc2SpiDis();
delayms(2);
//delayms(20); //For debug
}
int8_t vnc2SpiRead(char *pSpiData)
{
uint8_t rd;
vnc2SpiEn();
*pSpiData = spiTransferByte(0xfe);
vnc2SpiDis();
return XFER_OK;
}
同样,修改接口宏定义
#define monWrite vnc2SpiWrite
#define monRead vnc2SpiRead